Halcon知识: 矩形测量
首先給出一個問題:如下邊一個圖片中,如何獲取矩形的測量,也就是說,需要更準確的矩形位置參數?halcon提供的一般方法是,首先基本將矩形框住,然后用測量對象進行精確測量。因此,該矩形大致的中心點,長度、寬度、方向角要基本給出,見
??
首先給出代碼,然后一條一條解釋代碼的意義:
read_image (Image, 'rect2') rgb1_to_gray(Image,Image) create_metrology_model (MetrologyHandle) get_image_size (Image, Width, Height) set_metrology_model_image_size (MetrologyHandle, Width, Height) add_metrology_object_rectangle2_measure (MetrologyHandle, 172.3, 239.2, rad(11.609), 146.7, 50.9, 30, 12, 1, 30, [], [], Index)apply_metrology_model (Image, MetrologyHandle)get_metrology_object_result (MetrologyHandle, Index, 'all', 'result_type', 'all_param', Rectangle) get_metrology_object_result_contour (Contour, MetrologyHandle, Index, 'all', 1.5) clear_metrology_model (MetrologyHandle)?? 1) ? create_metrology_model (MetrologyHandle)
該語句定義一個測量容器,該容器可以盛放許多不同的測量對象,本例中測量對象只有一個。
?? 2) ?set_metrology_model_image_size (MetrologyHandle, Width, Height)?
定義測量容器針對的測量范圍,本例是全圖。
? 3) add_metrology_object_rectangle2_measure( : :?MetrologyHandle,?Row,?Column,?Phi,?Length1,?Length2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? *定義外側包含矩形框
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MeasureLength1,MeasureLength2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *定義測量對象
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MeasureSigma,?MeasureThreshold,?GenParamName,?GenParamValue?:?Index) ? *定義被檢圖像灰度 ? ?
- 理解該語句,首先要理解【被檢物體、矩形范圍框、和檢測對象】三者的關系。如下圖:
- 【被檢物體、矩形范圍框、和檢測對象】三者的對應參數定義如下圖:
* 矩形類計量對象的幾何形狀由其中心(Row, Column)、主軸φ的方向以及半邊長度Length1和Length2指定。
* Phi的輸入值自動映射到間隔。
* 矩形測量區域垂直于區域矩形的邊界。與矩形邊界垂直和相切的測量區域的半邊長度在“ Length1”和“ Length2”中設置。
* 測量區域的中心位于矩形的邊界上。參數MeasureSigma指定了一個標準偏差,算子使用該標準偏差應用計量學模型來平滑圖像的灰度值。
* 可以使用參數MeasureThreshold來選擇突出邊緣,該參數構成了一個振幅閾值,即邊緣一階導數的絕對值。
此外,還可以在GenParamName和GenParamValue中調整一些通用參數。特別是,可以設置運算?set_metrology_object_param?中可用的所有通用參數。但請注意,對于許多應用程序,默認值已足夠,無需進行調整。
運算符 add_metrology_object_rectangle2_measure返回參數索引中計量模型內添加的計量對象的Index索引。
4)get_metrology_object_result( : :?MetrologyHandle,?Index,?Instance,?GenParamName,?GenParamValue?:?Parameter)
獲取測量結果。
get_metrology_object_result 允許訪問通過apply_metrology_model?獲得的測量測量對象MetrologyHandle的測量結果。參數?Index指定查詢結果的計量對象(MetrologyHandle中有多個計量對象)。對于設置為“all”的?Index,將返回所有計量對象的結果。通過參數 Instance,可以指定,在參數中返回結果是哪個測量實例的結果。將實例?Instance?設置為“all”將返回所有實例的結果。可以使用不同的泛型參數來控制參數中的返回值Parameter。泛型參數名稱以?GenParamName傳遞。相應的值以GenParamValue傳遞。以下參數和值是可能的:
5)get_metrology_object_result_contour( :?Contour?:?MetrologyHandle,?Index,?Instance,?Resolution?: )
獲取測量結果。即以上測量的輪廓線。
最后測量結果如圖:
如果還不明白,參考下文,文中繼續探討本問題。
參考網文:測量函數
總結
以上是生活随笔為你收集整理的Halcon知识: 矩形测量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-03-15 深入理解SLAM
- 下一篇: 2021-04-08 Halcon进阶【