Halcon算子学习:sample_object_model_3d
sample_object_model_3d
( : : ObjectModel3D, Method, SampleDistance, GenParamName, GenParamValue : SampledObjectModel3D)
示例一個3D對象模型
輸入:
-
ObjectModel3D
對3D對象模型的處理進行采樣。 -
Method
選擇不同的子采樣方法。
默認值:“fast”
值列表:‘accurate’, ‘accurate_use_normals’, ‘fast’, ‘fast_compute_normals’ -
SampleDistance
采樣距離。
元素個數:SampleDistance = = 1 | | SampleDistance = ObjectModel3D
默認值:0.05 -
GenParamName
可以調整的通用參數的名稱。
默認值:[]
值列表:“max_angle_diff”,“min_num_points” -
GenParamValue(input_control)號數組→(real / integer / string)
可調整的通用參數的值。
默認值:[]
建議值:1、2、5、10、20、0.1、0.25、0.5
輸出:
- SampledObjectModel3D
包含采樣點的3D對象模型的手柄。
元素數量:SampledObjectModel3D = ObjectModel3D
描述
1.sample_object_model_3d創建一個3D對象模型ObjectModel3D的采樣版本,該對象模型由彼此之間具有最小距離的點組成。創建的3D對象模型在SampledObjectModel3D中返回。
2.如果需要對復雜的點云進行細化以獲得更快的后處理,或者需要將原語轉換為點云,那么建議使用sample_object_model_3d。請注意,如果3D對象模型是三角化的,并且應該通過盡可能保持其原始幾何形狀來簡化,則應該使用simplify_object_model_3d。
3.如果輸入對象模型ObjectModel3D只包含點,則可以使用參數方法選擇幾種抽樣方法。
默認的“fast”方法是將輸入模型中不接近前面添加到輸出模型中的任何點的所有點添加到輸出模型中。如果存在,則將法線、xyz映射和擴展點屬性復制到輸出模型中。
4.方法’fast_compute_normals’選擇與方法’fast’相同的點,但附加計算所選所有點的法線。為此,輸入對象模型必須包含復制的法線,或者必須包含計算法線的xyz映射屬性。xyz映射由xyz_to_object_model_3d創建。
該方法“accurate”遍歷三維對象模型ObjectModel3D的各個點,并計算在被檢查點周圍的半徑采樣距離范圍內是否有任何其他點。如果沒有其他點,則原始點存儲在SampledObjectModel3D中。如果存在其他點,則這些點(包括原始點)的重心存儲在SampledObjectModel3D中。重復這個過程,直到沒有點剩下。不復制輸入3D對象模型的擴展屬性,但復制法線和xyz映射。對于這種方法,可以通過在GenParamName和GenParamValue中為‘min_num_points’指定一個值來去除噪聲,該值可以去除所有在原始模型中少于指定相鄰點數量的內插點。
方法‘accurate_use_normals’需要在輸入3D對象模型中使用法線,并且只插入具有相似法線的點。相似度取決于法線之間的角度。角度的閾值可以在GenParamName和GenParamValue中指定,并使用’max_angle_diff’。默認值是180度。此外,可以通過設置通用參數“min_num_points”來刪除方法“accurate”中描述的異常值。
如果輸入對象模型包含面(三角形或多邊形)或3D原語,則使用給定的距離對表面進行采樣。在這種情況下,方法中指定的方法將被忽略。注意,平面和圓柱必須有有限的范圍。如果輸入對象模型包含行,則使用給定的距離對這些行進行采樣。
采樣過程通過在輸出對象模型中創建新點來近似曲面。因此,任何來自輸入對象模型的擴展屬性都會被丟棄。
對于混合輸入對象模型,采樣優先級是(從上到下)面、線、原語和點,即,只有最高優先級的對象被采樣。
參數SampleDistance可以接受一個值(該值用于ObjectModel3D中傳遞的所有3D對象模型),也可以接受每個輸入對象模型一個值。樣本距離的單位是通常的HALCON-internal單位“m”。
注意,如果不再需要或應該覆蓋3D對象模型,則必須首先通過調用操作符clear_object_model_3d來釋放內存。
示例:
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D) sample_object_model_3d (ObjectModel3D, 'fast', 0.05, [], [], SampledObjectModel3D) dev_get_window (WindowHandle) visualize_object_model_3d (WindowHandle, SampledObjectModel3D, [], [], [], [], [], [], [], PoseOut)總結
以上是生活随笔為你收集整理的Halcon算子学习:sample_object_model_3d的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python+OpenCV图像处理(十)
- 下一篇: visual studio如何中止正在运