輪廓處理
halcon有力工具集之一是亞畫素進度的輪廓,輪廓屬於資料型別xld。這些輪廓是一些影象處理的結果,代表諸如物件的邊界。下圖(a)顯示了覆蓋在原圖上的這樣的邊緣;圖(b)將圖(a)中標記的地方縮放到矩形區塊,並用交叉線強調出所謂的輪廓控制點。因此,你可以更加清楚的看到控制點的精確定位。
halcon提供了對這些輪廓執行高階型別測量的運算元。例如,輪廓可以被分割成線和圓或者橢圓弧(如圖(c)),這些分割的引數,例如它們的角度,中心或者半徑,然後可以被確定並用到測量任務中。
xld輪廓:(a)邊緣輪廓;(b)縮放到矩形區塊;(c)被分割的線和橢圓弧
輪廓處理的優勢是雙倍的。首先,其高準確性能夠得到更加可信的測量。其次,針對這種資料型別提供的擴充套件而靈活的一系列運算元能夠讓你解決一些傳統方法,如1d測量,不能解決的問題。
基本概念
輪廓來處理由多個步驟組成,你可以靈活的組合:
建立xld輪廓
建立xld輪廓最通用的方法就是應用乙個亞畫素精度提取的操作運算元。另外,具有一些後處理的邊緣濾波器也可以被應用,然後結果區域被轉化為xld輪廓。請注意,這樣的方法僅僅是畫素級精度。
處理xld輪廓
典型的,僅僅乙個物件的特定輪廓被用於檢測任務。顯示輪廓提取為所期望的一種可能是用很好擬合的感興趣區域,例如下圖(a)。矩形的roi僅僅覆蓋了僅僅覆蓋了葉片的上半部。當應用乙個邊緣提取器,則恰好物件每一面上的乙個輪廓被找到。
但是,在許多情況,不僅僅只是期望的輪廓被提取,例如圖(b)的例子,當roi的取得太大,這樣,輪廓就必須被處理去得到輪廓期望的部分。在例子中,輪廓被分割成一段段的,僅僅具有特定長度的平行分割被選取。
另乙個需要輪廓處理的原因就是,由於雜訊或者紋理,或者由於低對比度或者輪廓交叉造成的輪廓之間有間隙,使得提取返回了不想要的輪廓。
選擇期望的輪廓:(a)恰好的擬合roi,(b)由於roi太大而導致太多的輪廓,(c)對(b)中輪廓後處理的結果
執行擬合
當已經獲得了代表直線,矩形,或者圓弧,或者橢圓弧,你就可以通過呼叫乙個擬合運算元,來決定相對應的引數,例如線段端點的座標,或者圓的半徑。它們的目標就是去盡可能去將輸入輪廓接近一條線,矩形,或者圓形,或者橢圓弧。因為所用的最小化演算法是非常先進的,所有的輪廓點將被用來做處理,引數也可以被很可靠的計算出來。
提取特徵
從原始輪廓和被處理的輪廓部分,特徵可以被決定,它們中的一些將輪廓看作是線性物件,其他的將輪廓看作是物件的外輪廓。很顯然,重心只有對封閉的物件是由意義的,然而曲率是對線性物件的乙個特徵。
第乙個例子
下面的程式是對輪廓處理基本概念的乙個示例。其展示了如果將線提取器返回的短分割組合成長的。
首先用read_image從檔案中獲取一張影象,其任務是提取道路,其在影象中細亮的線。為了達到此目的,利用運算元lines_guass。下圖(a)顯示了輪廓提取的結果,我們可以看到許多不想要的小輪廓被提取,它們可以呼叫具有最小輪廓長度的運算元select_contours_xld很容易的被抑制。還有乙個問題就是一些道路被分割成多個片段,它們可以用運算元union_collinear_contour_xld進行組合,從圖(b)中,我們可以看到許多碎片已經被組合成直的道路部分。對於曲線,這種方法是不起作用的,因為分割段的方向太不相同了。
被處理的xld輪廓(a)提取的輪廓(b)被處理的輪廓
halcon輪廓擦除 HALCON高階篇 輪廓處理
輪廓處理 halcon有力工具集之一是亞畫素進度的輪廓,輪廓屬於資料型別xld。這些輪廓是一些影象處理的結果,代表諸如物件的邊界。下圖 a 顯示了覆蓋在原圖上的這樣的邊緣 圖 b 將圖 a 中標記的地方縮放到矩形區塊,並用交叉線強調出所謂的輪廓控制點。因此,你可以更加清楚的看到控制點的精確定位。ha...
Halcon基於輪廓的模板匹配
大家自己找張測試,就是繪製搜尋區域跟模板提取,提取其輪廓,然後再找一張相似的,從中定位到模板。話不多說,直接上 read image image1,d users s200722103 桌面 r1 f8y046205u1n639a1 038 20201109103715200.jpg dev set...
halcon的XLD特徵峰,輪廓特徵
gen circle circle,200,200,100.5 gen ellipse contour xld contellipse,200,200,0,100,50,0,6.28318,positive 1.5 gen circle contour xld contcircle,200,200,...