0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

形態(tài)學(xué)運算與仿真:圖像處理中形態(tài)學(xué)操作的簡單解釋

冬至子 ? 來源:Zubair ? 作者:Zubair ? 2023-05-23 15:52 ? 次閱讀

形態(tài)學(xué)是圖像處理領(lǐng)域的一個分支,主要用于描述和處理圖像中的形狀和結(jié)構(gòu)。形態(tài)學(xué)可以用于提取圖像中的特征、消除噪聲、改變圖像的形狀等。其中形態(tài)學(xué)的核心操作是形態(tài)學(xué)運算。

形態(tài)學(xué)運算是一種基于形狀的圖像處理技術(shù),它是通過結(jié)構(gòu)元素與圖像進行特定運算的方式來改變圖像的形態(tài)和特征。結(jié)構(gòu)元素是一種小型、預(yù)定義的形狀,通常是矩形、圓形或者橢圓形,可以與圖像中的像素進行匹配。

形態(tài)學(xué)運算包括膨脹、腐蝕、開運算、閉運算等。其中膨脹操作可以將圖像中的物體變大,使它更加連通;腐蝕操作則可以將圖像中的物體變小,使它更加細化;開運算可以去除噪聲,平滑圖像的邊緣;閉運算可以填補圖像中物體的孔洞。

形態(tài)學(xué)在圖像處理中應(yīng)用廣泛,特別是在圖像分割、邊緣檢測、文本識別、計算機視覺等領(lǐng)域中。

形態(tài)學(xué)操作概念

形態(tài)學(xué)運算是一種根據(jù)圖像的形狀對其進行處理的技術(shù)。它通過比較相鄰像素來構(gòu)建圖像。對于二進制圖像({0,1}或{0,255}),這種操作會十分的簡單。

在熟悉形態(tài)學(xué)操作之前,我們需要了解一些基本術(shù)語

Structuring Element 被翻譯為結(jié)構(gòu)元素或結(jié)構(gòu)單元,也稱為structuring function或者structuring kernel,是形態(tài)學(xué)中用于進行形態(tài)學(xué)運算的一種預(yù)定義的、小型的形狀。SE通常是一個矩陣或者一個類似于核心的圖形。

SE定義了用于改變圖像形態(tài)的操作,例如膨脹、腐蝕、開運算和閉運算等。這些操作基于SE與圖像中像素的匹配和計算。SE在運算中可以通過平移、旋轉(zhuǎn)和翻轉(zhuǎn)等操作進行變換。

形態(tài)學(xué)操作是通過在圖像中傳播結(jié)構(gòu)元素來完成的。通過比較結(jié)構(gòu)元素下的像素,在圖像的原點位置改變像素值。所以SE的大小和形狀選擇是非常關(guān)鍵的,不同的SE可以產(chǎn)生不同的結(jié)果。通常情況下,SE的形狀和大小需要根據(jù)圖像的特征和處理目的來選擇。例如,矩形形狀的SE通常適用于處理直線形狀的圖像,而圓形形狀的SE適用于處理圓形和橢圓形的圖像。

Miss:如果圖像中沒有一個像素與結(jié)構(gòu)元素匹配,則稱為Miss。

Hit:當(dāng)結(jié)構(gòu)元素的至少一個像素與圖像像素重疊時,稱為Hit。

Fit:如果結(jié)構(gòu)元素的所有像素都與圖像匹配,則稱為Fit。

形態(tài)學(xué)基本操作

形態(tài)學(xué)有兩種形態(tài)操作:腐蝕、膨脹。另外兩個常用的復(fù)合操作開、閉也是從這兩個操作派生出來的。

1、Erosion 侵蝕 ,也被翻譯成腐蝕:結(jié)構(gòu)元素對對象的每個像素進行卷積。如果結(jié)構(gòu)元素的所有像素與目標圖像像素重疊(滿足Fit條件),則將目標圖像像素填充前景像素強度值。否則,將填充背景像素強度值。

假設(shè)背景為0,前景為1,那么偽代碼就是:

if Fit -> 1 else -> 0

使用了一個強度為1的2x2結(jié)構(gòu)元素作為演示:

另外一張是6x6像素的圖片。其中白色元素強度值為0,藍色像素強度值為1。

1.jpg

結(jié)構(gòu)元素對給定圖像的每個像素進行卷積。如果它滿足未Fit條件,它將在結(jié)構(gòu)元素的原點位置將像素更改為0。上面我們已經(jīng)用紅色顯示了像素從1到0的位置。最后得到以下結(jié)果。

可以看到主圖像像素由于腐蝕而減少。Opnecv為我們提供了很好的實現(xiàn),我們可以直接使用:

import cv2
 import matplotlib.pyplot as plt
 import numpy as np
 img4=cv2.imread('/work/morphology_er.png',cv2.IMREAD_GRAYSCALE)
 plt.imshow(img4, cmap='gray')
 plt.show()

我們的圖像是白色背景上的黑色。但是OpenCV需要黑色背景和白色圖像對象來進行形態(tài)學(xué)操作。所以我們使用逆二值化。在形態(tài)學(xué)操作后再次進行二值閾值逆處理,以保留白色背景和黑色物體。

thr,img_th = cv2.threshold(img4,127,255,cv2.THRESH_BINARY_INV)
 kernel=np.ones((5,5), np.uint8)
 new_h=cv2.erode(img_th,kernel,iterations=3)
 ret,correction= cv2.threshold(new_h,127,255,cv2.THRESH_BINARY_INV)
 plt.imshow(correction,cmap='gray')
 plt.show()

可以看到,腐蝕會消除小的物體或者細節(jié)。

img5=cv2.imread('/work/morphology_ero.png',cv2.IMREAD_GRAYSCALE)
 plt.imshow(img5, cmap='gray')
 plt.show()

thr,img_th = cv2.threshold(img5,127,255,cv2.THRESH_BINARY_INV)
 kernel=np.ones((5,5), np.uint8)
 new_h=cv2.erode(img_th,kernel,iterations=3)
 ret,correction= cv2.threshold(new_h,127,255,cv2.THRESH_BINARY_INV)
 plt.imshow(correction,cmap='gray')
 plt.show()

或者使我們的物體變小,或者斷開彼此之間的連接

2、Dilation 膨脹 :結(jié)構(gòu)元素在物體圖像上進行卷積。如果任何結(jié)構(gòu)元素的像素值與目標圖像重疊(滿足Hit條件),則目標圖像像素將被前景像素強度值填充。否則,像素強度值將保持不變。

偽代碼如下:

If Hit -> 1 else -> 0

我們還是使用上面的例子:

完成操作后,它產(chǎn)生如下所示的結(jié)果。

膨脹會增加物體圖像的像素。我們繼續(xù)使用OpenCV演示:

img3=cv2.imread('/work/morphology_di.png',cv2.IMREAD_GRAYSCALE)
 plt.imshow(img3, cmap='gray')
 plt.show()

thr,img_th = cv2.threshold(img3,127,255,cv2.THRESH_BINARY_INV)
 kernel=np.ones((5,5), np.uint8)
 new_h=cv2.dilate(img_th,kernel,iterations=3)
 ret,correction= cv2.threshold(new_h,127,255,cv2.THRESH_BINARY_INV)
 plt.imshow(correction,cmap='gray')
 plt.show()

膨脹可以用于將物體擴大或連接起來,填補物體內(nèi)部的空洞或裂縫

復(fù)合操作

還有一些其他的復(fù)合形態(tài)操作。其中,開和閉是兩種應(yīng)用廣泛的操作。

可以看到,開操作Open先對圖像進行腐蝕操作,然后再進行膨脹操作的組合過程,可以用于消除小的物體或細節(jié),并且可以平滑物體的邊界

閉操作Close則相反,它是先對圖像進行膨脹操作,然后再進行腐蝕操作的組合過程。可以用于填補小的空洞或裂縫,并且也可以平滑物體的邊界。

Opencv也提供了內(nèi)置的實現(xiàn):

opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
 closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)

總結(jié)

形態(tài)學(xué)是一種基于形狀和結(jié)構(gòu)的圖像處理方法,其核心是結(jié)構(gòu)元素(SE)的定義和運算。SE是一個小的形狀,通常是一個矩陣或者類似核心的圖形,用于進行形態(tài)學(xué)運算,如腐蝕、膨脹、開運算和閉運算等。這些運算可以用于消除噪聲、填補空洞、連接物體和分離物體等。

形態(tài)學(xué)的運算和SE的選擇對圖像處理結(jié)果具有重要影響,因此需要根據(jù)圖像的特征和處理目的來選擇合適的SE和運算。除了基本的形態(tài)學(xué)運算,形態(tài)學(xué)還可以用于形狀分析、特征提取、目標識別等領(lǐng)域,具有廣泛的應(yīng)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像處理器
    +關(guān)注

    關(guān)注

    1

    文章

    103

    瀏覽量

    15454
  • 計算機視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1688

    瀏覽量

    45873
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    623

    瀏覽量

    41177
收藏 人收藏

    評論

    相關(guān)推薦

    怎么用labview進行形態(tài)學(xué)計數(shù)?

    用labview進行圖像計數(shù),圖像經(jīng)過二值化處理需要用到形態(tài)學(xué)進行計數(shù),如何計數(shù)啊 ,,,求指導(dǎo)啊
    發(fā)表于 01-06 19:14

    LabVIEW圖像處理形態(tài)學(xué)函數(shù)處理

    使用形態(tài)學(xué)函數(shù)處理。簡單形態(tài)學(xué)介紹,主要的二值形態(tài)學(xué)操作方法是erosion(腐蝕)和dila
    發(fā)表于 08-09 08:20

    LabVIEW形態(tài)學(xué)之去除部分顆粒和填充洞的程序(二)

    的顆粒大小。具體的說明可以看程序和幫助文檔。填充洞使用形態(tài)學(xué)處理函數(shù)的IMAQ FillHole,進行圖像空白點的填充。具體效果和程序看下圖和附件。程序中注意當(dāng)使用IMAQ WinD
    發(fā)表于 08-12 21:00

    案例:使用Labview形態(tài)學(xué)處理函數(shù),來截取圖中條形碼的圖像,并讀出條形碼的數(shù)值

    通過上面三個帖子的發(fā)布,大家對形態(tài)學(xué)處理函數(shù)應(yīng)該有所了解了。這篇帖子使用形態(tài)學(xué)的函數(shù)來讀取圖片中條形碼的數(shù)值。對圖像處理步驟:1、首先對
    發(fā)表于 08-15 10:00

    labview的二值形態(tài)學(xué)操作erosion(腐蝕)和dilation(膨脹),他們的函數(shù)在哪找?

    labview的二值形態(tài)學(xué)操作erosion(腐蝕)和dilation(膨脹),他們的函數(shù)在哪找?
    發(fā)表于 09-19 09:00

    基于FPGA形態(tài)學(xué)運算、閉運算和梯度的實現(xiàn)

    `1 概述開運算一般平滑物體的輪廓、斷開較窄的狹頸并消除細的突出物。閉運算同樣也會平滑輪廓的一部分,但與開操作相反,它通常會彌合較窄的間斷和細長的溝壑,消除小的孔洞,填補輪廓線的的斷
    發(fā)表于 08-10 09:12

    基于數(shù)學(xué)形態(tài)學(xué)的貨車標記圖像跟蹤識別研究

    針對鐵路貨車廠修后低速駛出過程需要進行標記準確性的判定,研究了基于數(shù)學(xué)形態(tài)學(xué)的貨車標記圖像跟蹤識別技術(shù)。圖像預(yù)處理之后采用數(shù)學(xué)
    發(fā)表于 12-07 14:04 ?10次下載

    PCB外觀檢查機形態(tài)學(xué)運算多核并行加速的實現(xiàn)

    為了解決PCB外觀檢查機存在的速度問題,對其中用到的形態(tài)學(xué)運算采用多核并行的方式進行加速。給出了腐蝕運算的普通算法和一種優(yōu)化算法的多核并行實現(xiàn)過程。
    發(fā)表于 10-08 14:41 ?33次下載
    PCB外觀檢查機<b class='flag-5'>形態(tài)學(xué)運算</b>多核并行加速的實現(xiàn)

    基于GPU的數(shù)學(xué)形態(tài)學(xué)運算并行加速研究

    數(shù)學(xué)形態(tài)學(xué)運算是一種高度并行的運算,其計算量大而又如此廣泛地應(yīng)用于對實時性要求較高的諸多重要領(lǐng)域。為了提高數(shù)學(xué)形態(tài)學(xué)運算的速度,提出了一種基于CUDA架構(gòu)的GPU并行數(shù)學(xué)形
    發(fā)表于 10-25 16:55 ?55次下載
    基于GPU的數(shù)學(xué)<b class='flag-5'>形態(tài)學(xué)運算</b>并行加速研究

    形態(tài)學(xué)圖像處理綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:形態(tài)學(xué)圖像處理綜合示例
    發(fā)表于 06-06 15:52 ?8次下載

    形態(tài)學(xué)圖像處理綜合示例_OpenCV3編程入門-源碼例程

    OpenCV3編程入門-源碼例程全集-形態(tài)學(xué)圖像處理綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    改進的形態(tài)學(xué)運算在聲納圖像生成的應(yīng)用_李莉

    改進的形態(tài)學(xué)運算在聲納圖像生成的應(yīng)用_李莉
    發(fā)表于 03-19 11:30 ?1次下載

    使用OpenCV實現(xiàn)形態(tài)學(xué)操作和腐蝕膨脹及開閉運算的實例說明

    本文檔的主要內(nèi)容詳細介紹的是的是使用OpenCV實現(xiàn)形態(tài)學(xué)操作和腐蝕膨脹及開閉運算的實例說明。
    發(fā)表于 11-22 16:52 ?1次下載

    基于二值圖像的濾波算法即形態(tài)學(xué)濾波

    形態(tài)學(xué)濾波由腐蝕和膨脹兩種操作組成。首先,腐蝕(Erosion)的核心思想是圖像像素之間進行邏輯與運算,簡單來說,當(dāng)一個包含當(dāng)前像素的結(jié)構(gòu)單
    的頭像 發(fā)表于 03-09 11:51 ?5482次閱讀

    OpenCV實現(xiàn)了圖像形態(tài)學(xué)什么常見操作?

    圖像形態(tài)學(xué)圖像處理的分支學(xué)科,在二值圖像處理占有
    的頭像 發(fā)表于 05-27 14:11 ?1412次閱讀
    OpenCV<b class='flag-5'>中</b>實現(xiàn)了<b class='flag-5'>圖像</b><b class='flag-5'>形態(tài)學(xué)</b>什么常見<b class='flag-5'>操作</b>?