膨脹和腐蝕被稱為形態(tài)學(xué)操作码耐。它們通常在二進(jìn)制圖像上執(zhí)行巍举,類似于輪廓檢測(cè)畴嘶。通過(guò)將像素添加到該圖像中的對(duì)象的感知邊界蛋逾,擴(kuò)張放大圖像中的明亮白色區(qū)域。侵蝕恰恰相反:它沿著物體邊界移除像素并縮小物體的大小窗悯。
通常這兩個(gè)操作是按順序執(zhí)行的区匣,以增強(qiáng)重要的對(duì)象特征!
- 膨脹
要在OpenCV中擴(kuò)展圖像蒋院,您可以使用該dilate函數(shù)和三個(gè)輸入:原始二進(jìn)制圖像亏钩,確定擴(kuò)張大小的內(nèi)核(無(wú)將導(dǎo)致默認(rèn)大小)欺旧,以及執(zhí)行擴(kuò)張的多次迭代(通常= 1)
在下面的例子中姑丑,我們有一個(gè)5x5的內(nèi)核,它們?cè)趫D像上移動(dòng)辞友,就像一個(gè)濾波器一樣栅哀,如果任何周圍的像素在5x5窗口中都是白色,則將像素變成白色称龙!我們將使用草書字母“j”的簡(jiǎn)單圖像作為示例留拾。 - 腐蝕
為了侵蝕圖像,我們采用erode函數(shù)茵瀑。
# Reads in a binary image
image = cv2.imread(‘j.png’, 0)
# Create a 5x5 kernel of ones
kernel = np.ones((5,5),np.uint8)
# Dilate the image
dilation = cv2.dilate(image, kernel, iterations = 1)
# Erode the image
erosion = cv2.erode(image, kernel, iterations = 1)
OPENING
如上所述间驮,這些操作通常組合在一起以獲得理想的結(jié)果!一種這樣的組合稱為Opening马昨,其是侵蝕竞帽,然后是膨脹
這在降噪中是有用的扛施,其中侵蝕首先消除噪聲(并收縮物體)然后擴(kuò)張?jiān)俅螖U(kuò)大物體,但噪聲將從先前的侵蝕中消失屹篓!
為了在OpenCV中實(shí)現(xiàn)這一點(diǎn)疙渣,我們將函數(shù)morphologyEx與原始圖像,我們想要執(zhí)行的操作以及傳入的內(nèi)核一起使用堆巧。
opening = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
Closing
Closing 是Opening的反向組合妄荔,它是膨脹,然后是侵蝕谍肤。這對(duì)于關(guān)閉物體內(nèi)的小孔或暗區(qū)很有用
它可用于關(guān)閉前景對(duì)象內(nèi)的小孔或?qū)ο笊系男『邳c(diǎn)啦租。
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
Opening和Closing 操作試圖提取關(guān)于物體形狀的更好(更少噪聲)信息或放大重要特征,如角點(diǎn)檢測(cè)的情況荒揣!