日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python-opencv二值腐蝕、膨脹、開(kāi)操作,閉操作原理

系統(tǒng) 1858 0

語(yǔ)義分割任務(wù)中,如果預(yù)測(cè)結(jié)果中包含有孤立的噪點(diǎn)、孔洞,則可以使用腐蝕膨脹進(jìn)行處理,提高分割效果。

            
              #定義輸入矩陣,結(jié)構(gòu)核
import cv2 as cv
import numpy as np
input_data = np.array([[1,0,0,0,1],[0,1,1,1,0],[0,1,1,1,0],[0,1,1,1,0],[1,0,1,0,1]],dtype=np.uint8)
kernel = np.uint8(np.zeros((3,3)))
for i in range(3):
    kernel[1,i] = 1
    kernel[i,1] = 1
print('input data:')
print(input_data)
print('kernel:')
print(kernel)
            
          

首先看看輸入矩陣和結(jié)構(gòu)核的結(jié)果,(1表示前景,0表示背景)

            
              input data:
[[1 0 0 0 1]
 [0 1 1 1 0]
 [0 1 1 1 0]
 [0 1 1 1 0]
 [1 0 1 0 1]]
kernel:
[[0 1 0]
 [1 1 1]
 [0 1 0]]

            
          

接下里進(jìn)行腐蝕計(jì)算:接著上面的代碼

            
              erode = cv.erode(input_data, kernel)
print('erode result:')
print(erode)
            
          

結(jié)果如下:

            
              erode result:
[[0 0 0 0 0]
 [0 0 0 0 0]
 [0 0 1 0 0]
 [0 0 1 0 0]
 [0 0 0 0 0]]
            
          

從結(jié)果中,可以推斷出,kernel類(lèi)似于卷積一樣在輸入圖像上移動(dòng),從輸入數(shù)據(jù)的坐標(biāo)(0,0)開(kāi)始,kernel的中心與(0,0)重合,如果kernel中的1與它所覆蓋的區(qū)域的1完全重合時(shí),才能把kernel中心與輸入相對(duì)應(yīng)的坐標(biāo)值賦值為1,否則為0。注意在計(jì)算過(guò)程中不改變?cè)紨?shù)據(jù),輸出矩陣為單獨(dú)的矩陣。下圖為計(jì)算過(guò)程的分析:
python-opencv二值腐蝕、膨脹、開(kāi)操作,閉操作原理_第1張圖片
很明顯當(dāng)結(jié)構(gòu)核位于輸入數(shù)據(jù)邊緣時(shí),只需考慮輸入數(shù)據(jù)內(nèi),結(jié)構(gòu)核與輸入數(shù)據(jù)對(duì)應(yīng)的部分的1是否重合,比如第一個(gè)數(shù)據(jù),由于結(jié)構(gòu)核的中心與輸入數(shù)據(jù)左上角重合,所以結(jié)構(gòu)核只有4個(gè)值在輸入數(shù)據(jù)內(nèi),只考慮這4個(gè)值所對(duì)應(yīng)的2x2的小矩陣即可,對(duì)比發(fā)現(xiàn)結(jié)構(gòu)核是1 1 1 0,而輸入數(shù)據(jù)對(duì)應(yīng)部分是1 0 0 1,結(jié)構(gòu)核中的3個(gè)1并沒(méi)有和輸入數(shù)據(jù)對(duì)應(yīng)部分的1完全重合,因此輸出矩陣的左上角輸出為0。整個(gè)輸入數(shù)據(jù)中只有兩處 ,使得結(jié)構(gòu)核中的1與 輸入數(shù)據(jù)的1完全重合時(shí)才輸出為1,其余都輸出為0。

接下里計(jì)算膨脹計(jì)算:接著上面的代碼

            
              dilate = cv.dilate(input_data, kernel)
print('dilate result:')
print(dilate)
            
          

結(jié)果如下:

            
              dilate result:
[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
            
          

膨脹與腐蝕相反,只要kernel中的1有一個(gè)與輸入數(shù)據(jù)的1重合,則會(huì)把kernel中心與輸入對(duì)應(yīng)的坐標(biāo)處的值賦為1,否則為0。



接下來(lái)是閉操作:即先膨脹,然后對(duì)膨脹后的結(jié)果進(jìn)行腐蝕

            
              closed = cv.morphologyEx(input_data,cv.MORPH_CLOSE, kernel)
print('closed result:')
print(closed)
            
          

結(jié)果如下:

            
              closed result:
[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]

            
          

由于膨脹之后的結(jié)果全是1,再進(jìn)行腐蝕時(shí),結(jié)果仍然全是1,對(duì)全為0的輸入數(shù)據(jù)做腐蝕時(shí),輸出也全是0。

python-opencv二值腐蝕、膨脹、開(kāi)操作,閉操作原理_第2張圖片

接下來(lái)是開(kāi)操作:即先腐蝕 然后對(duì)腐蝕后的結(jié)果進(jìn)行膨脹

            
              opened = cv.morphologyEx(input_data,cv.MORPH_OPEN, kernel)
print('opened result:')
print(opened)
            
          

結(jié)果如下:

            
              opened result:
[[0 0 0 0 0]
 [0 0 1 0 0]
 [0 1 1 1 0]
 [0 1 1 1 0]
 [0 0 1 0 0]]

            
          

python-opencv二值腐蝕、膨脹、開(kāi)操作,閉操作原理_第3張圖片

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 元谋县| 霍山县| 门头沟区| 肇庆市| 八宿县| 库车县| 微博| 宝鸡市| 桃园市| 册亨县| 双桥区| 磴口县| 秭归县| 新晃| 温州市| 通辽市| 宣威市| 呼玛县| 乃东县| 安平县| 凤台县| 大化| 乌拉特中旗| 拜城县| 车险| 隆林| 奈曼旗| 永和县| 民权县| 沅陵县| 沐川县| 拉萨市| 怀仁县| 聂拉木县| 台东县| 论坛| 苏尼特左旗| 卢氏县| 招远市| 榆树市| 宜兰市|