Halcon中有一個模糊的圖像具有高模版匹配成功率的示例程序(成功率幾乎達到了100%):matching defocused pcb.hdev
實現的關鍵是在創建模版、查找模版時,對NumLevels參數(金字塔層數)進行合理設置,如下所示:
create_shape_model中,如果NumLevels參數填'auto'或者較大的值(例如6),且find_shape_model中,NumLevels參數填[0,-1]時,針對模糊圖像的匹配能力極為強勁。
(當然,find_shape_model中,NumLevels參數也可以填[6,-1]、[7,-1]、[8,-1]……[0,-2]、[0,-3]、[0,-999]、[0,-10086]……)
為什么會這樣呢?其實幫助文檔的NumLevels參數描述中,解釋了這一原因。下面是DeepSeek的翻譯:(嫌太長可以先跳過引用的翻譯)
NumLevels:
搜索過程中使用的金字塔層數由NumLevels決定。如果需要,層數會被限制在通過
create_shape_model創建形狀模型時指定的范圍內:如果NumLevels設置為0,則使用create_shape_model中指定的金字塔層數。
在某些情況下,例如通過
create_shape_model自動確定的金字塔層數可能過高。這可能導致一些最終得分較高的匹配在最高金字塔層被拒絕,從而無法被找到。與其將MinScore設置為一個非常低的值以找到所有匹配,更好的方法是通過get_shape_model_params查詢NumLevels的值,然后在find_shape_model中使用稍低的值。這種方法通常在匹配速度和魯棒性方面表現更好。
可選地,NumLevels可以包含第二個值,用于確定要跟蹤到的最低金字塔層級。因此,NumLevels的值為[4, 2]意味著匹配從第4金字塔層級開始,并將匹配項跟蹤到第2層金字塔。這種機制可以用來減少匹配的運行時間。然而,需要注意的是,通常在這種模式下提取的姿態參數的準確性比正常模式下的要低,在正常模式下匹配項會被跟蹤到最低金字塔層級。因此,如果需要高精度,SubPixel應至少設置為'least_squares'。如果選擇的最低金字塔層級過大,可能會導致無法達到所需的精度,或者因為模型在較高的金字塔層級上不夠具體而無法可靠地選擇模型的正確實例,從而找到模型的錯誤實例。在這種情況下,必須將使用的最低金字塔層級設置為更小的值。
在質量較差的輸入圖像中,即那些例如失焦、變形或有噪聲的圖像中,通常在最低金字塔層級上找不到形狀模型的任何實例。這種行為的原因是由于圖像質量差導致的邊緣信息缺失或變形。然而,在較高的金字塔層級上,邊緣信息可能足夠。但如果使用在較高金字塔層級上找到的實例,請記住上述關于精度和魯棒性的限制。選擇合適的金字塔層級,即至少可以找到一個形狀模型實例的最低金字塔層級,取決于模型和輸入圖像。這個金字塔層級可能會因圖像而異。為了便于在質量較差的圖像上進行匹配,可以在匹配過程中自動確定至少可以找到一個模型實例的最低金字塔層級。為了激活這種機制,即使用所謂的“增加容差模式”,必須在NumLevels中將最低金字塔層級指定為負數。例如,如果將NumLevels設置為[4, -2],則匹配從第4金字塔層級開始,并將匹配項跟蹤到第2低的金字塔層級(最低金字塔層級的值為1)。這意味著在金字塔層級2上搜索形狀模型的實例。如果在此金字塔層級上找不到模型的實例,則確定至少可以找到一個模型實例的最低金字塔層級。此金字塔層級的實例將被返回。[ 作者注:第2個參數為負數時,它會玩命給你找到至少1個匹配,除非輸入圖像中根本沒有建模對象 ]
最后是關鍵點總結:
-
NumLevels控制搜索的金字塔層數,影響匹配速度、精度和魯棒性。
-
自動模式(如
[0,-1])適合復雜或低質量圖像,動態調整層數以找到最佳匹配。 -
固定層數(如
4)適合簡單場景或對速度要求高的場景,但可能犧牲精度。 -
增加容忍度模式(負值)用于處理低質量圖像,自動調整到能檢測到目標的最低層。
-
高精度需求時,建議至少將SubPixel設置為
'least_squares',并確保最低金字塔層足夠低(例如2,一般不推薦1,速度太慢)。
拓展問題:查找模版時,NumLevels填[0,-1]或者填4,有什么區別?
find_shape_model (Image, ModelID, -0.39, 0.78, 0.7, 1, 0.5, 'least_squares',[0,-1], 0.9, Row, Column, Angle, Score)
find_shape_model (Image, ModelID, -0.39, 0.78, 0.7, 1, 0.5, 'least_squares',4, 0.9, Row, Column, Angle, Score)

--------------------------------------------
本文系原創,轉載請注明出處。
如果文章對您有幫助,可以點擊下方的【好文要頂】或【關注我】;如果您想進一步表示感謝,可通過網頁右側的【打賞】功能進行打賞。
感謝您的支持,我會繼續寫出更多的相關文章!文章有不理解的地方歡迎跟帖交流,博主經常在線!^_^
浙公網安備 33010602011771號