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