Halcon一維測量1D Measuring解析


一維測量(也叫一維計量或卡尺)的概念非常直觀。沿着一個預定的區域(主要是垂直於RIO感興趣區域的方向) 邊緣的位置。這里的邊緣為從暗到亮或從亮到暗的過渡。
基於提取的邊緣,可以測量零件的尺寸。例如,可以測量 ROI內零件的寬度,並將邊緣定位在其左右兩側。

除了這些簡單的矩形ROI外,圓弧也可以用來測量,例如,齒輪上的齒輪寬度。
這種測量方法的優點是使用方便,執行時間短,而且有很高的的精度。只需幾個操作符,就可以實現高性能的應用。
另外,也可以使用HDevelop的測量助手,只需點擊幾下鼠標就可以進行測量。

基本概念

測量包括以下幾個主要步驟:

獲取圖像

創建測量對象

在獲取圖像后,可以指定測量的位置,即描述要測量的線或弧的位置、方向等。
可以通過使用句柄handle來訪問測量對象。類似於文件句柄,在使用該工具時需要這個句柄。每次執行測量時,這個句柄都會作為參數傳遞。
在像C++這樣的面向對象的語言中,可以使用measure類來代替使用句柄的低級方法。在這里,用標准的面向對象方法實現創建和銷毀。

測量

然后,可以通過指定測量對象和一些視覺參數,如最小對比度來應用測量。

擴展概念

在許多情況下,測量應用會比上面描述的更復雜,例如雜亂或不均勻的照明。此外,還可能要將特征轉化為現實世界的單位,或將結果可視化。

衍射校准圖像

為了進行高精度的測量,攝像機應該具有線性響應函數,即圖像中的灰度值應該線性地取決於輸入的量。

由於某些相機沒有線性響應函數,因此 HALCON 提供了所謂的衍射校准(灰度值校准)。通過算子radiometric_self_calibration,可以確定相機的反響應函數(離線),然后在執行測量前使用lut_trans將此函數應用於圖像。

對准ROI或圖像

在某些應用中,要測量的直線或弧線必須相對於另一個對象對齊以方便測量。

矯正圖像

與對准類似,可能需要對圖像進行修正,例如,消除鏡頭變形。

創建測量對象

你可以用像draw_rectangle2這樣的操作符交互式地測量線或弧線,或者從文件中讀取它的參數(read_string)。作為另一種選擇,它的坐標可以基於其他視覺工具如Blob Analysis的結果生成 。特別是在測量線或弧線可能需要對准某個對象的時候。

如果總是沿着同一條線或弧線進行測量,可以離線創建測量對象,然后多次使用它。 如果要對齊測量,每個圖像的線或弧的位置和方向將有所不同,在這種情況下,必須為每個圖像創建一個新的測量對象。這個規則的一個例外是只有位置改變而沒有方向改變,可以保留測量對象,並通過 translate_measure 調整其位置。

將結果轉化為世界坐標

如果已經校准了視覺系統,可以直接用image_points_to_world_plane將測量結果轉化為世界坐標。

結果可視化

可視化邊緣位置的最好方法是使用gen_contour_polygon_xld等運算符創建(短)XLD線段。

涉及算子

獲取圖像

衍射校准圖像

基礎:radiometric_self_calibration(校驗徑向畸變), lut_trans(用灰度值查找表變換圖像)

對准ROI或圖像

矯正圖像

創建測量對象

基礎:gen_measure_rectangle2(提取垂直於矩形的直邊), gen_measure_arc(提取垂直於環形弧線的直邊), translate_measure(轉換測量對象)

測量

基礎:measure_pos(測量垂直於矩形或圓弧的直邊), measure_pairs(測量垂直於矩形或圓弧的直邊對)

進階:set_fuzzy_measure(指定模糊函數), fuzzy_measure_pos((通過指定模糊函數測量垂直於矩形或圓弧的直邊), fuzzy_measure_pairs, fuzzy_measure_pairing(可以使用參數Pairing來測量交錯對和包含對)

把結果轉化為世界坐標

基礎:image_points_to_world_plane

進階:gen_contour_region_xld, contour_to_world_plane_xld

結果可視化

進階:gen_contour_polygon_xld

一維測量的替代方法

邊緣提取(亞像素精度)

測量邊緣參數的一個非常好的方法是用edges_sub_pix提取邊緣輪廓。這種方法的優點是它可以處理任意形狀。此外,它可以確定每個邊緣點的屬性,如邊緣方向。

小技巧

抑制雜物或噪音

在許多應用中,一些雜物或噪音必須被抑制。測量運算符提供了多種方法來實現。最好的是提高邊緣提取的閾值,以消除模糊的邊緣。此外,平滑參數的值可以增加,以平滑不相關的邊緣。
當將邊緣分組為對時,如果噪聲邊緣在 "真實 "邊緣的附近並且具有相同的極性,則可能導致不正確的分組。在這種情況下,可以通過只選擇連續上升和下降邊緣序列中最強的邊緣來抑制噪聲邊緣。

重用測量對象

因為創建一個測量對象需要一些時間,所以建議在有可能的情況下重復使用它們。例如,如果不需要對齊,可以離線創建測量對象,並重復使用該對象。如果對齊只涉及到轉換,那么 translate_measure 可以用來修正位置。

使用絕對灰度值閾值

作為邊緣提取的替代方法,可以使用操作符 measure_thresh 根據絕對灰度值閾值進行測量,可以使所有灰度值超過給定閾值的位置都會被選中。

高階

模糊測量

如果存在不屬於測量范圍的額外邊緣,HALCON提供了一個擴展版本的測量:模糊測量。 這個工具允許定義所謂的模糊規則,它描述了更好的邊緣特征。可能的特征有位置、距離、灰度值或邊緣的振幅。這些函數通過create_funct_1d_pairs創建,並通過set_fuzzy_measure傳遞給工具。基於這些規則,工具將選擇最合適的邊緣。

這種方法的優點是即使使用很低的最小閾值或平滑,也能靈活處理額外的邊緣。

灰度值的評估

要完全控制沿測量線或弧線的灰度值的評估,可以使用 measure_projection。該操作符以數字數組的形式返回投影的灰度值,然后可以使用 HALCON 操作符進一步處理元組或函數。

具體項目案例下次再為大家講解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM