基於halcon的形狀模板輪廓篩選

2021-10-23 15:59:30 字數 2054 閱讀 4889

我這人比較懶得羅里吧嗦,基本都是直接說兩點:why?how?

有需求,才會去做。有時候,在一張質量不怎麼好的影象上做模板,比如,有很多干擾點、背景或者其他不想要的輪廓,除了生成模板後,再慢慢去用橡皮擦來擦除它,還有一種更直接了當的方法:篩選。

bool

gendesiredcontours

(const hxld& srccontours, hxld& dstcontours,

qpoint length, qpointf circularity,

int delta =0,

int contournum =0)

;

引數1 :srccontours,輸入的原始輪廓,一般先生成模板,然後get~

引數2 :dstcontours,輸出篩選後的輪廓,用來重新生成模板;

引數3 :length,為篩選輪廓的最小長度值;

引數4 :circularity,為篩選輪廓的圓度值;

引數5 :delta,為依靠相鄰輪廓的偏差值來判斷,後續的輪廓還要不要了;

引數6 :contournum,直接粗暴,指明就要最長的幾個輪廓。

bool halconunity::

gendesiredcontours

(const hxld& srccontours, hxld& dstcontours,

qpoint length, qpointf circularity,

int delta,

int contournum)

lengthxld

(selectobj,

&xldlength)

; xldlengthmap.

insert

(i,(

int)xldlength[0]

.d()

);xldlengthlist.((

int)xldlength[0]

.d()

);}qsort

(xldlengthlist)

;int judgemaxxld = xldlengthlist.

length()

;if(judgemaxxld >2)

}//else if (percent > 0)

//// else

//

//}//差值判斷

if(delta >

0.0)}}

//標準差

//// mean = sum / judgemaxxld;

// for (i = 0; i < judgemaxxld; ++i)

//

// stddeviation = sqrt(variance / judgemaxxld);

// for (i = judgemaxxld - 1; i >= 0; i--)

//

// }

//}}

int count =0;

for(

int i = xldlengthlist.

length()

-1; i >=

0; i--

)else

count++;if

(count >= judgemaxxld)

iter = xldlengthmap.

erase

(iter);}

else}}

}catch

(hexception& ex)

catch(.

..)return

false

;}

篩選出來的輪廓,可以直接用createscaledshapemodelxld建立模板,但這個比較麻煩:如果輪廓線還是比較多、比較複雜的話,很耗時。所以我一般是再把輪廓轉為區域,然後再用區域去建立模板。

注意二次建立模板後,不要直接用新的輪廓或者區域的中心點去仿射變換,應該還是用原來第一次建立模板的區域去做變換,不然你的模板輪廓會錯位顯示,很尷尬。

Halcon基於輪廓的模板匹配

大家自己找張測試,就是繪製搜尋區域跟模板提取,提取其輪廓,然後再找一張相似的,從中定位到模板。話不多說,直接上 read image image1,d users s200722103 桌面 r1 f8y046205u1n639a1 038 20201109103715200.jpg dev set...

halcon基於形狀的幾何定位函式說明

1.create shape model template reduce domain後的模板影象 numlevels,金字塔的層數,可設為 auto 或0 10的整數 anglestart,模板旋轉的起始角度 angleextent,模板旋轉角度範圍,0 anglestep,旋轉角度的步長,0 a...

9 halcon定位學習(1) 基於形狀的匹配

1 基於形狀的匹配 1 建立roi 使用halcon 運算元可以方便的設定roi 標準形狀 draw rectangle1 2 draw circle draw ellipse draw line 任意形狀 draw region draw polygon 生成標準roi gen rectangle...