日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

例一:毛刺在往外凸的面上

策略1:分割出黑色部分,然后通過開運算去掉毛刺,再通過原黑色部分區域減去開運算之后的區域,得到毛刺部分的區域。?

1 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg') 2 binary_threshold (Tu, Region, 'max_separability', 'dark', UsedThreshold) 3 opening_circle (Region, RegionOpening, 50.5) 4 difference (Region, RegionOpening, RegionDifference) 5 dev_display (Tu) 6 dev_display (RegionDifference)

可以看到,雖然毛刺被分割出來了,但是多出了4塊干擾的區域。原因是執行opening_circle時,四個尖角被削平了。

開運算是先腐蝕再膨脹。腐蝕之后,毛刺被削沒了,但是4個尖角大致保持以前的形狀;4個尖角再經過膨脹運算后,就變得不尖了。

?

策略2:分割出白色部分,然后通過閉運算封閉凹槽,再通過閉運算之后的區域減去原白色部分區域,得到毛刺部分的區域。

1 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg') 2 binary_threshold (Tu, Region, 'max_separability', 'light', UsedThreshold) 3 closing_circle (Region, RegionClosing, 50.5) 4 difference (RegionClosing, Region, RegionDifference) 5 dev_display (Tu) 6 dev_display (RegionDifference)

分割效果很好。

?

例二:毛刺在往內凹的面上

?

策略1:分割出黑色部分,然后通過開運算去掉毛刺,再通過原黑色部分區域減去開運算之后的區域,得到毛刺部分的區域。

1 read_image (Ao, 'C:/Users/xiahui/Desktop/ao.jpg') 2 binary_threshold (Ao, Region, 'max_separability', 'dark', UsedThreshold) 3 opening_circle (Region, RegionOpening, 50.5) 4 difference (Region, RegionOpening, RegionDifference) 5 dev_display (Ao) 6 dev_display (RegionDifference)

分割效果不佳,現象和原因同例一。

?

策略2:分割出白色部分,然后通過閉運算封閉凹槽,再通過閉運算之后的區域減去原白色部分區域,得到毛刺部分的區域。

1 read_image (Ao, 'C:/Users/xiahui/Desktop/ao.jpg') 2 binary_threshold (Ao, Region, 'max_separability', 'light', UsedThreshold) 3 closing_circle (Region, RegionClosing, 50.5) 4 difference (RegionClosing, Region, RegionDifference) 5 dev_display (Ao) 6 dev_display (RegionDifference)

分割效果很好。

?

說明:

以上的opening_circle (Region, RegionOpening, 50.5)可以用下面的代碼來完全等效:

set_system ('tsp_clip_region', 'false') erosion_circle (Region, RegionErosion1, 50.5) dilation_circle (RegionErosion1, RegionDilation, 50.5)

set_system ('tsp_clip_region', 'false')的意思是當region(一般是膨脹以后)超過圖像區域時,不修剪region

?

下面我通過一些簡單圖形來觀察開運算(腐蝕—膨脹)和閉運算(膨脹—腐蝕)的執行效果。

?

用腐蝕、膨脹算子來模擬開運算的過程:

1 *模擬開運算 2 set_system ('tsp_clip_region', 'false') 3 read_image (Rect, 'C:/Users/xiahui/Desktop/Rect.jpg') 4 binary_threshold (Rect, Region, 'max_separability', 'dark', UsedThreshold) 5 erosion_circle (Region, RegionErosion, 30.5) 6 dilation_circle (RegionErosion, RegionDilation, 30.5) 7 dev_display (Rect) 8 dev_display (RegionDilation)

(這個星花腐蝕和膨脹值要小些,不然沒有上圖的效果)

?

?

用膨脹、腐蝕算子來模擬閉運算的過程:

1 *模擬閉運算 2 set_system ('tsp_clip_region', 'false') 3 read_image (Rect, 'C:/Users/xiahui/Desktop/rect.jpg') 4 binary_threshold (Rect, Region, 'max_separability', 'dark', UsedThreshold) 5 dilation_circle (Region, RegionDilation, 30.5) 6 erosion_circle (RegionDilation, RegionErosion, 30.5) 7 dev_display (Rect) 8 dev_display (RegionErosion)

(矩形閉運算后可完全復原)

(正八邊形閉運算后可完全復原)

?

疊加在一起看看:

(無法復原)

?

?

結論:

1、膨脹會使尖角變平滑。
2、對于凸多邊形來說(可用shape_trans (Region, RegionTrans, 'convex')生成凸多邊形),腐蝕以后,region的外形特征保持不變,矩形腐蝕以后仍是矩形,三角形腐蝕以后還是三角形。


3、對于非凸多邊形來說,腐蝕以后,region的外形特征大致保持不變,但是如果region的尖角特別細,則會腐蝕掉,這樣region的形狀就會發生較大變化。


4、圓角腐蝕以后,可能變成尖角。


5、開運算會使尖角變平滑。


6、對于凸多邊形來說,閉運算之后,region不發生任何變化。


7、對于有凹槽的非凸多邊形來說,閉運算之后region的凹槽被填充。第一步膨脹過程中,夾角變圓角,第二步腐蝕過程中,圓角又可能復原成了尖角(見第4條)。

?

?

轉載于:https://www.cnblogs.com/xh6300/p/6397289.html

總結

以上是生活随笔為你收集整理的从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。