【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀
歡迎關(guān)注 『youcans 的 OpenCV 例程 200 篇』 系列,持續(xù)更新中
歡迎關(guān)注 『youcans 的 OpenCV學(xué)習(xí)課』 系列,持續(xù)更新中
【youcans 的 OpenCV 例程 200 篇】113. 形態(tài)學(xué)操作之腐蝕
## 1. 形態(tài)學(xué)圖像處理簡介
形態(tài)學(xué)是生物學(xué)的概念,主要研究動植物的形態(tài)和結(jié)構(gòu)。數(shù)學(xué)形態(tài)學(xué)(Mathematical morphology)是建立在集合論和拓?fù)鋵W(xué)基礎(chǔ)之上的圖像分析學(xué)科。
圖像處理中的形態(tài)學(xué)是指基于形狀的圖像處理操作,以數(shù)學(xué)形態(tài)學(xué)為工具從圖像中提取表達(dá)和描繪區(qū)域形狀的圖像結(jié)構(gòu)信息,如邊界、骨架、凸殼等,還包括用于預(yù)處理或后處理的形態(tài)學(xué)過濾、細(xì)化和修剪等。形態(tài)學(xué)圖像處理最初用于處理二值圖,進(jìn)而推廣到灰度級圖像處理,其運(yùn)算簡單、效果良好。
形態(tài)學(xué)圖像處理的運(yùn)算是用集合定義的,基本運(yùn)算包括:二值腐蝕和膨脹,二值開閉運(yùn)算,骨架抽取,極限腐蝕,擊中擊不中變換,形態(tài)學(xué)梯度,頂帽變換,顆粒分析,流域變換,灰值腐蝕和膨脹,灰值開閉運(yùn)算,灰值形態(tài)學(xué)梯度等。
形態(tài)學(xué)的基本思想是利用結(jié)構(gòu)元素測量或提取輸入圖像中的形狀或特征,以便進(jìn)行圖像分析和目標(biāo)識別。形態(tài)學(xué)操作都是基于各種形狀的結(jié)構(gòu)元,結(jié)構(gòu)元對輸入圖像進(jìn)行操作得到輸出圖像。
在二值圖像中,所有黑色像素的集合是圖像完整的形態(tài)學(xué)描述。假定二值圖像 A 和形態(tài)學(xué)處理的結(jié)構(gòu)元素 B 是定義在笛卡兒網(wǎng)格上的集合,結(jié)構(gòu)元素(Structuring Elements,SE)可以是任意形狀,如矩形、十字形。結(jié)構(gòu)元有一個錨點(diǎn) O,定義為結(jié)構(gòu)元的中心。
2. 形態(tài)學(xué)基本操作
2.1 腐蝕
腐蝕和膨脹是圖像處理中最基本的形態(tài)學(xué)操作,是很多高級處理方法的基礎(chǔ)。
腐蝕和膨脹是對白色部分(高亮部分)而言的,膨脹就是圖像中的高亮部分進(jìn)行膨脹,腐蝕就是原圖中的高亮部分被腐蝕。
腐蝕使圖像中白色高亮部分被腐蝕,“鄰域被蠶食”,腐蝕的效果擁有比原圖更小的高亮區(qū)域,可以去掉毛刺,去掉孤立的像素,提取骨干信息。
腐蝕的原理是求局部最小值的操作,將 0 值擴(kuò)充到鄰近像素,從而擴(kuò)大黑色值范圍、壓縮白色值范圍。
結(jié)構(gòu)元 B 對集合 A 的腐蝕定義為:
A?B={z∣(B)z?A}A \ominus B = \{ z | (B)_z \subseteq A\} A?B={z∣(B)z??A}
用卷積來描述腐蝕操作,結(jié)構(gòu)元素 B 是中心為 1、其它為 0 的卷積模板(核):
(1)卷積核 B 沿著圖像滑動,掃描圖像 A 的每一個像素;
(2)用結(jié)構(gòu)元素與其覆蓋的二值圖像進(jìn)行 “或操作”;
(3)如果圖像與卷積核對應(yīng)區(qū)域的所有像素值都是 1,則圖像的該像素值仍為 1;否則為 0。
OpenCV 提供了函數(shù) cv.erode 可以實(shí)現(xiàn)圖像的腐蝕。
函數(shù)說明:
cv.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) → dst函數(shù) cv.erode 使用指定的結(jié)構(gòu)元(卷積核)侵蝕源圖像,結(jié)構(gòu)元確定像素鄰域的形狀,在該鄰域上取最小值:
dst(x,y)=min?(x′,y′):element(x′,y′≠0)src(x+x′,y+y′)dst(x,y)= \min_{\enspace (x',y'):element(x',y' \neq 0)} \enspace src(x+x',y+y') dst(x,y)=(x′,y′):element(x′,y′?=0)min?src(x+x′,y+y′)
參數(shù)說明:
- src:輸入圖像,可以為單通道或多通道,圖像深度必須為 CV_8U, CV_16U, CV_16S, CV_32F 或 CV_64F
- dst:輸出圖像,大小和類型與 src 相同
- kernel:結(jié)構(gòu)元(卷積核),null 時使用 3*3 矩形結(jié)構(gòu)元素
- anchor:卷積核的錨點(diǎn)位置,默認(rèn)值 (-1, -1) 表示以卷積核的中心為錨點(diǎn)
- iterations:應(yīng)用腐蝕操作的次數(shù),可選項,默認(rèn)值為 1
- borderType:邊界擴(kuò)充的類型
- borderValue:當(dāng) borderType=BORDER_CONSTANT 時以常量 value 填充擴(kuò)充邊界,默認(rèn)值為 (0,0,0)
注意事項:
函數(shù)支持就地模式,腐蝕操作可以迭加使用多次。
在多通道圖像的情況下,每個通道獨(dú)立處理 。
例程 10.1:圖像的腐蝕 (cv.erode)
# 10.1 圖像的腐蝕 (cv.erode)# 讀取原始圖像imgGray = cv2.imread("../images/Fig0905a.tif", flags=0) # flags=0 讀取為灰度圖像ret, imgBin = cv2.threshold(imgGray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) # 二值化處理# 圖像腐蝕kSize = (3, 3) # 卷積核的尺寸kernel = np.ones(kSize, dtype=np.uint8) # 生成盒式卷積核imgErode1 = cv2.erode(imgBin, kernel=kernel) # 圖像腐蝕kSize = (9, 9)kernel = np.ones(kSize, dtype=np.uint8)imgErode2 = cv2.erode(imgBin, kernel=kernel)kSize = (25, 25)kernel = np.ones(kSize, dtype=np.uint8)imgErode3 = cv2.erode(imgBin, kernel=kernel)plt.figure(figsize=(10, 5))plt.subplot(141), plt.axis('off'), plt.title("Origin")plt.imshow(imgBin, cmap='gray', vmin=0, vmax=255)plt.subplot(142), plt.title("eroded kSize=(3,3)"), plt.axis('off')plt.imshow(imgErode1, cmap='gray', vmin=0, vmax=255)plt.subplot(143), plt.title("eroded kSize=(9,9)"), plt.axis('off')plt.imshow(imgErode2, cmap='gray', vmin=0, vmax=255)plt.subplot(144), plt.title("eroded kSize=(25,25)"), plt.axis('off')plt.imshow(imgErode3, cmap='gray', vmin=0, vmax=255)plt.tight_layout()plt.show()(本節(jié)完)
版權(quán)聲明:
youcans@xupt 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:(https://blog.csdn.net/youcans/article/details/123225087)
Copyright 2022 youcans, XUPT
Crated:2022-3-2
歡迎關(guān)注 『youcans 的 OpenCV 例程 200 篇』 系列,持續(xù)更新中
歡迎關(guān)注 『youcans 的 OpenCV學(xué)習(xí)課』 系列,持續(xù)更新中
【youcans 的 OpenCV 例程200篇】01. 圖像的讀取(cv2.imread)
【youcans 的 OpenCV 例程200篇】02. 圖像的保存(cv2.imwrite)
【youcans 的 OpenCV 例程200篇】03. 圖像的顯示(cv2.imshow)
【youcans 的 OpenCV 例程200篇】04. 用 matplotlib 顯示圖像(plt.imshow)
【youcans 的 OpenCV 例程200篇】05. 圖像的屬性(np.shape)
【youcans 的 OpenCV 例程200篇】06. 像素的編輯(img.itemset)
【youcans 的 OpenCV 例程200篇】07. 圖像的創(chuàng)建(np.zeros)
【youcans 的 OpenCV 例程200篇】08. 圖像的復(fù)制(np.copy)
【youcans 的 OpenCV 例程200篇】09. 圖像的裁剪(cv2.selectROI)
【youcans 的 OpenCV 例程200篇】10. 圖像的拼接(np.hstack)
【youcans 的 OpenCV 例程200篇】11. 圖像通道的拆分(cv2.split)
【youcans 的 OpenCV 例程200篇】12. 圖像通道的合并(cv2.merge)
【youcans 的 OpenCV 例程200篇】13. 圖像的加法運(yùn)算(cv2.add)
【youcans 的 OpenCV 例程200篇】14. 圖像與標(biāo)量相加(cv2.add)
【youcans 的 OpenCV 例程200篇】15. 圖像的加權(quán)加法(cv2.addWeight)
【youcans 的 OpenCV 例程200篇】16. 不同尺寸的圖像加法
【youcans 的 OpenCV 例程200篇】17. 兩張圖像的漸變切換
【youcans 的 OpenCV 例程200篇】18. 圖像的掩模加法
【youcans 的 OpenCV 例程200篇】19. 圖像的圓形遮罩
【youcans 的 OpenCV 例程200篇】20. 圖像的按位運(yùn)算
【youcans 的 OpenCV 例程200篇】21. 圖像的疊加
【youcans 的 OpenCV 例程200篇】22. 圖像添加非中文文字
【youcans 的 OpenCV 例程200篇】23. 圖像添加中文文字
【youcans 的 OpenCV 例程200篇】24. 圖像的仿射變換
【youcans 的 OpenCV 例程200篇】25. 圖像的平移
【youcans 的 OpenCV 例程200篇】26. 圖像的旋轉(zhuǎn)(以原點(diǎn)為中心)
【youcans 的 OpenCV 例程200篇】27. 圖像的旋轉(zhuǎn)(以任意點(diǎn)為中心)
【youcans 的 OpenCV 例程200篇】28. 圖像的旋轉(zhuǎn)(直角旋轉(zhuǎn))
【youcans 的 OpenCV 例程200篇】29. 圖像的翻轉(zhuǎn)(cv2.flip)
【youcans 的 OpenCV 例程200篇】30. 圖像的縮放(cv2.resize)
【youcans 的 OpenCV 例程200篇】31. 圖像金字塔(cv2.pyrDown)
【youcans 的 OpenCV 例程200篇】32. 圖像的扭變(錯切)
【youcans 的 OpenCV 例程200篇】33. 圖像的復(fù)合變換
【youcans 的 OpenCV 例程200篇】34. 圖像的投影變換
【youcans 的 OpenCV 例程200篇】35. 圖像的投影變換(邊界填充)
【youcans 的 OpenCV 例程200篇】36. 直角坐標(biāo)與極坐標(biāo)的轉(zhuǎn)換
【youcans 的 OpenCV 例程200篇】37. 圖像的灰度化處理和二值化處理
【youcans 的 OpenCV 例程200篇】38. 圖像的反色變換(圖像反轉(zhuǎn))
【youcans 的 OpenCV 例程200篇】39. 圖像灰度的線性變換
【youcans 的 OpenCV 例程200篇】40. 圖像分段線性灰度變換
【youcans 的 OpenCV 例程200篇】41. 圖像的灰度變換(灰度級分層)
【youcans 的 OpenCV 例程200篇】42. 圖像的灰度變換(比特平面分層)
【youcans 的 OpenCV 例程200篇】43. 圖像的灰度變換(對數(shù)變換)
【youcans 的 OpenCV 例程200篇】44. 圖像的灰度變換(伽馬變換)
【youcans 的 OpenCV 例程200篇】45. 圖像的灰度直方圖
【youcans 的 OpenCV 例程200篇】46. 直方圖均衡化
【youcans 的 OpenCV 例程200篇】47. 圖像增強(qiáng)—直方圖匹配
【youcans 的 OpenCV 例程200篇】48. 圖像增強(qiáng)—彩色直方圖匹配
【youcans 的 OpenCV 例程200篇】49. 圖像增強(qiáng)—局部直方圖處理
【youcans 的 OpenCV 例程200篇】50. 圖像增強(qiáng)—直方圖統(tǒng)計量圖像增強(qiáng)
【youcans 的 OpenCV 例程200篇】51. 圖像增強(qiáng)—直方圖反向追蹤
【youcans 的 OpenCV 例程200篇】52. 圖像的相關(guān)與卷積運(yùn)算
【youcans 的 OpenCV 例程200篇】53. Scipy 實(shí)現(xiàn)圖像二維卷積
【youcans 的 OpenCV 例程200篇】54. OpenCV 實(shí)現(xiàn)圖像二維卷積
【youcans 的 OpenCV 例程200篇】55. 可分離卷積核
【youcans 的 OpenCV 例程200篇】56. 低通盒式濾波器
【youcans 的 OpenCV 例程200篇】57. 低通高斯濾波器
【youcans 的 OpenCV 例程200篇】58. 非線性濾波—中值濾波
【youcans 的 OpenCV 例程200篇】59. 非線性濾波—雙邊濾波
【youcans 的 OpenCV 例程200篇】60. 非線性濾波—聯(lián)合雙邊濾波
【youcans 的 OpenCV 例程200篇】61. 導(dǎo)向?yàn)V波(Guided filter)
【youcans 的 OpenCV 例程200篇】62. 圖像銳化——鈍化掩蔽
【youcans 的 OpenCV 例程200篇】63. 圖像銳化——Laplacian 算子
【youcans 的 OpenCV 例程200篇】64. 圖像銳化——Sobel 算子
【youcans 的 OpenCV 例程200篇】65. 圖像銳化——Scharr 算子
【youcans 的 OpenCV 例程200篇】66. 圖像濾波之低通/高通/帶阻/帶通
【youcans 的 OpenCV 例程200篇】67. 空間域圖像增強(qiáng)的綜合應(yīng)用
【youcans 的 OpenCV 例程200篇】68. 空間域圖像增強(qiáng)的綜合應(yīng)用
【youcans 的 OpenCV 例程200篇】69. 連續(xù)非周期信號的傅立葉系數(shù)
【youcans 的 OpenCV 例程200篇】70. 一維連續(xù)函數(shù)的傅里葉變換
【youcans 的 OpenCV 例程200篇】71. 連續(xù)函數(shù)的取樣
【youcans 的 OpenCV 例程200篇】72. 一維離散傅里葉變換
【youcans 的 OpenCV 例程200篇】73. 二維連續(xù)傅里葉變換
【youcans 的 OpenCV 例程200篇】74. 圖像的抗混疊
【youcans 的 OpenCV 例程200篇】75. Numpy 實(shí)現(xiàn)圖像傅里葉變換
【youcans 的 OpenCV 例程200篇】76. OpenCV 實(shí)現(xiàn)圖像傅里葉變換
【youcans 的 OpenCV 例程200篇】77. OpenCV 實(shí)現(xiàn)快速傅里葉變換
【youcans 的 OpenCV 例程200篇】78. 頻率域圖像濾波基礎(chǔ)
【youcans 的 OpenCV 例程200篇】79. 頻率域圖像濾波的基本步驟
【youcans 的 OpenCV 例程200篇】80. 頻率域圖像濾波詳細(xì)步驟
【youcans 的 OpenCV 例程200篇】81. 頻率域高斯低通濾波器
【youcans 的 OpenCV 例程200篇】82. 頻率域巴特沃斯低通濾波器
【youcans 的 OpenCV 例程200篇】83. 頻率域低通濾波:印刷文本字符修復(fù)
【youcans 的 OpenCV 例程200篇】84. 由低通濾波器得到高通濾波器
【youcans 的 OpenCV 例程200篇】85. 頻率域高通濾波器的應(yīng)用
【youcans 的 OpenCV 例程200篇】86. 頻率域?yàn)V波應(yīng)用:指紋圖像處理
【youcans 的 OpenCV 例程200篇】87. 頻率域鈍化掩蔽
【youcans 的 OpenCV 例程200篇】88. 頻率域拉普拉斯高通濾波
【youcans 的 OpenCV 例程200篇】89. 帶阻濾波器的傳遞函數(shù)
【youcans 的 OpenCV 例程200篇】90. 頻率域陷波濾波器
【youcans 的 OpenCV 例程200篇】91. 高斯噪聲、瑞利噪聲、愛爾蘭噪聲
【youcans 的 OpenCV 例程200篇】92. 指數(shù)噪聲、均勻噪聲、椒鹽噪聲
【youcans 的 OpenCV 例程200篇】93. 噪聲模型的直方圖
【youcans 的 OpenCV 例程200篇】94. 算術(shù)平均濾波器
【youcans 的 OpenCV 例程200篇】95. 幾何均值濾波器
【youcans 的 OpenCV 例程200篇】96. 諧波平均濾波器
【youcans 的 OpenCV 例程200篇】97. 反諧波平均濾波器
【youcans 的 OpenCV 例程200篇】98. 統(tǒng)計排序?yàn)V波器
【youcans 的 OpenCV 例程200篇】99. 修正阿爾法均值濾波器
【youcans 的 OpenCV 例程200篇】100. 自適應(yīng)局部降噪濾波器
【youcans 的 OpenCV 例程200篇】101. 自適應(yīng)中值濾波器
【youcans 的 OpenCV 例程200篇】102. 陷波帶阻濾波器的傳遞函數(shù)
【youcans 的 OpenCV 例程200篇】103. 陷波帶阻濾波器消除周期噪聲干擾
【youcans 的 OpenCV 例程200篇】104. 運(yùn)動模糊退化模型
【youcans 的 OpenCV 例程200篇】105. 湍流模糊退化模型
【youcans 的 OpenCV 例程200篇】106. 退化圖像的逆濾波
【youcans 的 OpenCV 例程200篇】107. 退化圖像的維納濾波
【youcans 的 OpenCV 例程200篇】108. 約束最小二乘方濾波
【youcans 的 OpenCV 例程200篇】109. 幾何均值濾波
【youcans 的 OpenCV 例程200篇】110. 投影和雷登變換
【youcans 的 OpenCV 例程200篇】111. 雷登變換反投影重建圖像
【youcans 的 OpenCV 例程200篇】112. 濾波反投影重建圖像
【youcans 的 OpenCV 例程200篇】113. 形態(tài)學(xué)操作之腐蝕
總結(jié)
以上是生活随笔為你收集整理的【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV 例程200篇】99. 修
- 下一篇: java合并sheet行_java po