select_shape_proto算子的幾種特征模式含義解析


 

select_shape_proto是一個非常有用的region篩選算子,但是由於難以理解,因此一般人使用得不是太多。

 

算子簽名如下:

select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )

其中Feature可以取這7種模式:'distance_center'、'distance_contour'、'distance_dilate'、'fits'、'overlaps_rel'、'overlaps_abs'、'covers'。

 

下面逐個解析。

提供一張圖供讀者研究驗證:

 

select_shape_proto(Regions, Pattern, SelectedRegions, 'distance_center', 0 ,60)

distance_center:判斷Regions中每個region的中心(area_center)距離Pattern中心的距離,MinMax控制距離的下限和上限,可以取負數


distance_contour:判斷Regions中每個region的邊緣距離Pattern邊緣的距離,MinMax控制距離的下限和上限,可以取負數

 

需要注意的是,如果Pattern中的區域是不連續的,也就說Pattern通過connection操作以后可以變成多個region,那么此時'distance_center'、'distance_contour'模式的篩選結果較難預料,要盡量避免這種情況。例如下面這樣的Pattern:

 

distance_dilate:distance_contour極為類似,當Pattern的膨脹量為Min~Max中的某個值時,Regions中剛好(注意“剛好”這兩個字)能與Pattern有交集的region被選出。在計算方法上與'distance_contour'模式有極細微的區別,更大的區別是——如果Pattern中的區域不連續,也不影響'distance_dilate'模式的這一特性。

但是'distance_dilate'模式有個非常嚴重的缺點,當Regions中的元素非常多(例如超過50個)的時候,該模式下整個算子執行時間非常長,經常超過1秒鍾。此時如果用'distance_contour'模式設法實現類似的功能,效率遠高於'distance_dilate'模式。

 

select_shape_proto(Regions, Pattern, SelectedRegions, 'fits', Min, Max )

fits:判斷Regions中每個region通過平移(shift,不能旋轉)能不能完全蓋住(fit)Pattern,如果能,則將這些region篩選出來;這里參數'Min'、'Max'無效

(圖中三個大的矩形和紅色圓平移以后都能完全蓋住藍色的小矩形Pattern,因此被選出)

 

select_shape_proto(Regions, Pattern, SelectedRegions, 'overlaps_rel', 5 ,6)

overlaps_rel:根據Pattern和Regions中每個region的重疊部分進行篩選,overlaps_rel定義為重疊部分面積和當前region面積的比值,用於篩選的重疊比例由參數'Min''Max'控制,有效取值為0-100

(圖中紅色矩形和大圓('margin形式表示')的重疊部分占紅色矩形的比例為5.76875%,剛好位於Min和Max之間,因此被選出)

 


overlaps_abs:overlaps_rel類似,不過由比值(相對值)改成了重疊的絕對值,即重疊的像素面積

 

covers:看了半天、試了半天,沒搞懂這個模式的規律,以后再說。

 

使用經驗:就我個人來說,我覺得這7種特征模式中'distance_center'、'distance_contour'、'distance_dilate'、'overlaps_rel'最有用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM