Halcon 簡單的圓擬合

2021-09-19 04:34:16 字數 1985 閱讀 3166

直接貼**

輸入影象

*讀取影象

invert_image(iamge, imageinvert)

*反轉threshold(imageinvert, region1, 40, 255)

*二值化

boundary (region1, regionborder, 'inner')

*取得邊界

*clip_region_rel (regionborder, regionclipped, 5, 5, 5, 5)

*四邊減去一些畫素

dilation_circle (regionborder, regiondilation, 9)

*利用半徑為radius的圓對region進行膨脹運算,輸出

reduce_domain (iamge, regiondilation, imagereduced)

*獲取原圖中膨脹區域的

edges_sub_pix (imagereduced, edges, 'canny', 2, 4, 60)

*canny運算元求出邊緣 輸出的是xdl

select_shape_xld(edges, selectedxld1, 'area', 'and', 320000, 520000)

*xdl通過面積篩選xdl

fit_circle_contour_xld(selectedxld1, 'algebraic', -1, 0, 0, 3, 2, row, column, radius, startphi, endphi, pointorder)

*查詢到的xdl擬合圓

gen_circle_contour_xld (contcircle, row, column, radius, 0, rad(360), 'positive', 1.0)

disp_message(3600, '內輪廓圓心座標:x=' + row + ',y=' + column +',半徑=' + radius +'.', 'window', -1, -1, 'black', 'true')

*輸出資訊row

segment_contours_xld (edges, contourssplit1,'lines_circles',5, 4, 4)

*找到外圍輪廓

select_shape_xld(contourssplit1, selectedxld11, 'area', 'and', 150, 700)

*篩選 條件:長度

count_obj (selectedxld11, number)

*統計數量用於遍歷

for i := 1 to number by 1

select_obj (selectedxld11, objectselected, i)

*遍歷

*篩選if (attrib > 0)

fit_circle_contour_xld (objectselected, 'ahuber', -1, 2, 0, 3, 2, row, column, radius, startphi, endphi, pointorder)

*擬合distance_pp(row,column,195.656, -353.522, distance)

*計算兩點之間距離 計算這個擬合出來的圓心到中心的距離

if(distance>1700)

*判斷gen_circle_contour_xld (contcircle, row, column, radius, 0, rad(360), 'positive', 1.0)

*做圓endif

endif

endfor

結果圖

Halcon學習之擬合圓

對於圓形區域,我們想擬合出它的圓形輪廓或者其他的圓,我們可以用如下的方法擬合出來 1 如果該區域是乙個圓環區域的話,那就執行骨架運算元skeleton得到圓環區域的骨架,然後用gen contours skeleton xld生成骨架輪廓。如果該區域是圓形區域,那麼可以用產生區域輪廓運算元gen c...

halcon測試篇 三點擬合圓弧和圓

已知三個座標點,擬合對應的圓弧和圓。設定圓的寬度 dev set line width 3 dev set draw margin 確定三個點,在視窗上用滑鼠點三個點 draw point 200000 row1,column1 draw point 200000 row2,column2 draw...

空間圓的擬合

通過擬合球面與擬合平面交匯成圓 先擬合出平面,再在平面裡作平面圓的擬合 x c x r u x cos theta v x sin theta y c y r u y cos theta v y sin theta z c z r u z cos theta v z sin theta end ri...