Halcon算子学习:create_sheet_of_light_model
create_sheet_of_light_model
(ProfileRegion : : GenParamName, GenParamValue : SheetOfLightModelID)
創建一個執行線結構光技術3D測量的的模型
輸入:
ProfileRegion
包含要處理的輪廓的圖像的ROI。(如果所提供的區域不是矩形的,則使用其最小的外接矩形)
-
GenParamName
可以為線結構光模型調整的通用參數的名稱。
默認值:“min_gray”
值列表:’ uity_solving’, ‘calibration’, ‘method’, ‘min_gray’, ‘num_profiles’, ‘offset_x’, ‘offset_y’, ‘offset_z’, ‘scale’, ‘scale_x’, ‘scale_y’, ‘scale_z’, ‘score_type’ -
GenParamValue
可以為線結構光模型調整的通用參數的值。
默認值:50
建議值:‘default’, ‘center_of_gravity’, ‘last’, ‘first’, 'bright ', ‘none’, ‘intensity’, ‘width’, ‘offset_scale’, 50,100,150,180
輸出:
- SheetOfLightModelID
用于使用和訪問光照模型的句柄。
描述
操作符create_sheet_of_light_model使用線結構光技術創建一個模型來執行3d測量。
該技術通過使用區域掃描攝像機和光線投影儀(通常是激光線投影儀)對不透明和漫反射固體的表面進行三維重建。照相機和放映機必須安裝好,使它們的主軸形成三角形。三角測量的值通常選擇在30°到60°之間。投射的光線在空間中定義了一個平面(結構光平面)。這個平面與被測量的固體表面相交,并建立了一個對攝像機可見的表面輪廓(Profile)。通過移動固體在測量系統前面,(即如照相機和激光器的組合),就有可能記錄整個固體的表面。作為一種替代方案,測量系統也可以在被測表面上移動。請注意,輪廓在輪廓圖像中必須大致水平定位,因為它們是逐列處理的。
如果有測量裝置的幾何信息,就可以計算出重建曲面的真實三維坐標。瀏覽所需幾何圖形的描述(即,標定)的信息,請參閱操作符set_sheet_of_light_param。如果沒有這樣的信息,測量的結果是一個視差圖像(disparity image),其中每個像素保存著被測輪廓的亞像素精確位置的記錄。
操作員在SheetOfLightModelID中返回光表模型的句柄,該句柄用于對光表模型的所有進一步操作,如修改模型的參數、測量輪廓、應用標定轉換或訪問測量結果。
強制輸入圖像參數
為了執行測量,您將不得不設置以下輸入圖標參數:
- ProfileRegion:定義輪廓圖像的區域,操作符measure_profile_sheet_of_light將處理這些區域。這個區域應該是矩形的,可以通過使用操作符gen_rectangle1生成。如果傳遞給ProfileRegion的區域不是矩形的,那么將使用其最小的外接矩形(包圍框)。注意,ProfileRegion僅由操作符measure_profile_sheet_of_light考慮,在處理視差圖像時忽略它。
線結構光模型的默認設置參數
-
線結構光模型的默認設置被用來在基本配置中執行非校準的測量。以下列表提供了默認情況下使用的參數值的概述(有關所有受支持的通用參數的詳細描述,請參閱set_sheet_of_light_param):
-
‘method’
is set to ‘center_of_gravity’ -
‘min_gray’:
is set to 100 -
‘num_profiles’
is set to 512 -
‘ambiguity_solving’
is set to ‘first’ -
‘score_type’
is set to ‘none’ -
‘calibration’
is set to ‘none’
修改模型參數
我們建議根據您的特定度量任務調整默認參數,以提高度量的質量或縮短運行時間。如果需要校準結果,還必須修改模型參數的默認值。
create_sheet_of_light_model提供了通用參數GenParamName和GenParamValue來修改大多數模型參數的默認值。注意,還可以使用set_sheet_of_light_param操作符設置模型參數。然而,使用第二個操作符,一次只能設置一個參數,而使用create_sheet_of_light_model一次可以設置多個參數。有關所有受支持的通用參數的詳細描述,請參閱set_sheet_of_light_param。
請注意,以下模型參數無法使用create_sheet_of_light_model操作符設置,因此必須使用set_sheet_of_light_param操作符設置:
‘camera_parameter’、‘camera_pose’、‘lightplane_pose’和’movement_pose’。
可以使用操作符get_sheet_of_light_param查詢模型參數的值。操作符query_sheet_of_light_params返回所有受支持的模型參數的名稱。
使用簡化的線結構光模型參數
在一個簡單的設置或是否為一個真正的度量標定是必要的,觀測到的視差圖轉換成3D值可以控制使用簡化的參數集的線結構光模型:
通過將set_sheet_of_light_param的校準設置為‘offset_scale’,位姿和相機參數將更改為這樣的值,即一個像素的偏移量對應于3D結果中的一個單元。這允許從一個未校準的線結構光模型創建一個三維物體模型和三維圖像。
從視差到三維坐標的轉換可以通過六個參數來控制:‘scale_x’、‘scale_y’、‘scale_z’、‘offset_x’、‘offset_y’、‘offset_z’。有關所有受支持的通用參數的詳細描述,請參閱set_sheet_of_light_param。
自由的線結構光模型
由于在操作符create_sheet_of_light_model調用期間以及在接下來的操作期間為模型分配了內存,所以當模型不再使用時,操作符clear_sheet_of_light_model應該顯式地釋放該模型。
在多個線程中使用句柄
請注意,在多線程中使用線結構光模型’“SheetOfLightModelID’的句柄時必須特別小心。同一句柄不能在不同的線程中并發使用,如果它們修改了句柄。因此,您必須小心,特別是當線程調用更改句柄數據的操作符時。你可以在操作符的“注意”部分找到相應的提示。無論如何,如果您仍然希望在不同線程中并發寫入句柄的操作符中使用相同的句柄,則必須同步這些線程,以確保它們不會同時訪問相同的句柄。如果您不確定同一句柄的用法是否線程安全,請參閱相應參考手冊條目的“注意”部分,如果其中包含指向此問題的警告。但是,可以在不同的線程中獨立安全地使用不同的句柄。
示例:
* Create the rectangular region in which the profiles are measured. gen_rectangle1 (ProfileRegion, 120, 75, 195, 710) * * Create a model in order to measure profiles according to * the sheet-of-light technique. Simultaneously set some * parameters for the model. create_sheet_of_light_model (ProfileRegion, ['min_gray','num_profiles', \'ambiguity_solving','score_type'], \[70,290,'first','width'], \SheetOfLightModelID) * * Measure the profile from successive images for Index := 1 to 290 by 1read_image (ProfileImage, 'sheet_of_light/connection_rod_'+Index$'.3')dev_display (ProfileImage)dev_display (ProfileRegion)measure_profile_sheet_of_light (ProfileImage, SheetOfLightModelID, []) endfor * * Get the resulting disparity and score images get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity') get_sheet_of_light_result (Score, SheetOfLightModelID, 'score') * * Close the sheet-of-light handle once the measurement * has been performed clear_sheet_of_light_model (SheetOfLightModelID)總結
以上是生活随笔為你收集整理的Halcon算子学习:create_sheet_of_light_model的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Matplotlib创建散点图
- 下一篇: QT+Halcon综合示例:clip回形