C# 基于halcon的視覺工作流-章21-點查找
本章目標:
一、檢測顯著點;
二、Harris檢測興趣點;
三、Harris二項式檢測興趣點;
四、Sojka運算符檢測角點;
五、Lepetit算子檢測興趣點;
一、檢測顯著點
halcon算子points_foerstner用于檢測圖像中的顯著點(重要點),重要點是與鄰域不同的點,即圖像函數在二維中變化的點,這些變化一方面發生在圖像邊緣的交叉處(稱為連接點、角點),另一方面也發生在顏色或亮度與周圍鄰域不同的地方(稱為區域點)。
與C#聯合開發時可用如下方法實現
HOperatorSet.PointsFoerstner(imageReduced, sigmaGrad1, sigmaInt1, sigmaPoints1, threshInhom1, threshShape1, smoothing1, eliminateDoublets1, out crossRow, out crossColumn, out HTuple coRRJunctions, out HTuple coRCJunctions, out HTuple coCCJunctions, out HTuple rowArea, out HTuple columnArea, out HTuple coRRArea, out HTuple coRCArea, out HTuple coCCArea);
其中,輸入參數:
imageReduced為輸入圖像,
sigmaGrad1為梯度平滑量,
sigmaInt1為漸變平滑量,
sigmaPoints1為函數平滑量,
threshInhom1為非均區域分割閾值,
threshShape1為點區域分割的閾值,
smoothing1為平滑方法,
eliminateDoublets1為消除多重檢測點,
輸出參數:
crossRow為連接點的行坐標,
crossColumn為連接點的列坐標,
coRRJunctions為連接點的協方差矩陣的行部分,
coRCJunctions為連接點的協方差矩陣的混合部分,
coCCJunctions為連接點的協方差矩陣的列部分,
rowArea為區域點的行坐標,
columnArea為區域點的列坐標,
coRRArea為區域點的協方差矩陣的行部分,
coRCArea為區域點的協方差矩陣的混合部分,
coCCArea為區域點的協方差矩陣的列部分
效果如下圖
二、Harris檢測興趣點
halcon算子points_harris 基于平滑矩陣從圖像中提取興趣點。
與C#聯合開發時可用如下方法實現
HOperatorSet.PointsHarris(imageReduced, sigmaGrad2, sigmaSmooth2, alpha2, threshold2, out crossRow, out crossColumn);
其中,imageReduced為輸入圖像,
sigmaGrad2為梯度平滑量,
sigmaSmooth2為漸變平滑量,
alpha2為平方梯度矩陣的平方軌跡的權重,
threshold2為點的最小過濾器響應,
crossRow為輸出點的行坐標,
crossColumn為輸出點的列坐標
效果如下圖
三、Harris二項式檢測興趣點
halcon算子points_harris_binomial 是 Harris 角點檢測的二項式近似實現,通過優化計算方式提升運算速度,同時保持與標準 Harris 檢測相似的精度。
與C#聯合開發時可用如下方法實現
HOperatorSet.PointsHarrisBinomial(imageReduced, maskSizeGrad3, maskSizeSmooth3, alpha3, threshold3, subpix3, out crossRow, out crossColumn);
其中,imageReduced為輸入圖像,
maskSizeGrad3為二項式平滑量,
maskSizeSmooth3為漸變平滑量,
alpha3為平方梯度矩陣的平方軌跡的權重,
threshold3為點的最小過濾器響應,
subpix3為打開或關閉亞像素細化,
crossRow為輸出點的行坐標,
crossColumn為輸出點的列坐標
效果如下圖
四、Sojka運算符檢測角點
halcon算子points_sojka 專用于檢測圖像中的?角點?(兩條非共線邊緣的交點),通過分析局部鄰域梯度方向變化實現高精度定位。
與C#聯合開發時可用如下方法實現
HOperatorSet.PointsSojka(imageReduced, maskSize4, sigmaW4, sigmaD4, minGrad4, minApparentness4, minAngle4, subpix4, out crossRow, out crossColumn);
其中,imageReduced為輸入圖像,
maskSize4為過濾器尺寸,
sigmaW4為權重函數的西格瑪根據到角候選的距離,
sigmaD4為西格瑪的權重函數表示到理想灰度值邊緣的距離,
minGrad4為梯度最小值,
minApparentness4為外觀最小值,
minAngle4為角點方向變化的閾值(弧度),
subpix4為角點的亞像素精確計算,
crossRow為輸出點的行坐標,
crossColumn為輸出點的列坐標
效果如下圖
五、Lepetit算子檢測興趣點
halcon算子points_lepetit 是 Halcon 中用于?快速提取興趣點?(如角點、水滴狀結構)的高效算子,特別適合實時性要求高的場景。
與C#聯合開發時可用如下方法實現
HOperatorSet.PointsLepetit(imageReduced, radius5, checkNeighbor5, minCheckNeighborDiff5, minScore5, subpix5, out crossRow, out crossColumn);
其中,imageReduced為輸入圖像,
radius5為圓半徑,
checkNeighbor5為圓圈上已檢查的鄰居數量,
minCheckNeighborDiff5為每個圓點的灰度值差閾值,
minScore5為最小比分,
subpix5為角點的亞像素精確計算,
crossRow為輸出點的行坐標,
crossColumn為輸出點的列坐標
效果如下圖
halcon中點查找還有很多算子,本文僅描述以上幾種。
上述內容需要一定的技術功底,本章至此已結束,歡迎閱讀下章,謝謝!