??????歡迎來到本博客??????
?????? Halcon算子太多,學(xué)習(xí)查找都沒有系統(tǒng)的學(xué)習(xí)查找路徑,本專欄主要分享Halcon各類算子含義及用法,有時間會更新具體案例。
?????? 具體食用方式:可以點擊本專欄【Halcon算子快速查找】–>搜索你要查詢的算子名稱;或者點擊Halcon算子匯總博客,即可食用。
??????支持:如果覺得博主的文章還不錯或者您用得到的話,可以悄悄關(guān)注一下博主哈,如果三連收藏支持就更好啦!這就是給予我最大的支持!??????
學(xué)習(xí)目標
- area_object_model_3d()
- distance_object_model_3d()
學(xué)習(xí)內(nèi)容
算子簡介
函數(shù)名 | 解釋 |
---|---|
area_object_model_3d() | 計算三維對象模型所有面的面積。 |
distance_object_model_3d() | 計算一個三維對象模型的點到另一個三維對象模型的距離。 |
1、area_object_model_3d()
area_object_model_3d( : : ObjectModel3D : Area)
??函數(shù)說明:計算三維對象模型中所有面的面積。三維對象模型需要面或三角形。生成的區(qū)域返回到Area
中。
??函數(shù)參數(shù):
????ObjectModel3D:輸入 3D對象模型句柄;
????Area:輸出計算出的面積;
Halcon例程
無
2、distance_object_model_3d()
distance_object_model_3d( : : ObjectModel3DFrom, ObjectModel3DTo, Pose, MaxDistance, GenParamName, GenParamValue : )
??函數(shù)說明:計算三維對象模型ObjectModel3DFrom
中的點到三維對象模型ObjectModel3DTo
中的點、三角形、多邊形或基本體的距離。距離存儲為三維對象模型ObjectModel3DFrom
中名為“&distance”
的擴展屬性。該屬性隨后可以使用get_object_model_3d_params
進行查詢,也可以使用select_points_object_model_3d
或其他使用擴展屬性的運算符進行處理。
??目標數(shù)據(jù)(點、三角形、多邊形或基本體)是基于ObjectModel3DTo
中包含的屬性選擇的。它是根據(jù)數(shù)據(jù)的存在順序選擇的:基本體、三角形、多邊形和點。作為這種自動目標數(shù)據(jù)選擇的替代方案,還可以使用通用參數(shù)“distance _to”
設(shè)置目標數(shù)據(jù)類型(見下文)。在計算到生成的三角形的距離之前,操作符會對一般的非三角形多邊形進行內(nèi)部三角化。因此,使用三角化對象調(diào)用操作符比使用具有不同多邊形面的對象調(diào)用操作符更快。
??MaxDistance
可用于限制要計算的距離值的范圍。如果“最大距離”設(shè)置為0,則會計算所有距離。如果將“MaxDistance”設(shè)置為另一個值,則不處理距離將超過“MaxDistances”
的點,并將其設(shè)置為“MaxDistrict”
。因此,將MaxDistance
設(shè)置為不同于0的值可以顯著加快此運算符的執(zhí)行。
??如果Pose
是非空元組,則在計算距離之前,它必須包含應(yīng)用于ObjectModel3DFrom
中的點的姿勢??梢允褂猛ㄓ脜?shù)“inverse_pose”
反轉(zhuǎn)姿勢。
??根據(jù)目標數(shù)據(jù)類型(點、三角形或基本體),可以使用多種方法計算距離。其中一些方法在ObjectModel3DTo
的元素上計算數(shù)據(jù)結(jié)構(gòu),以加快距離計算。這些數(shù)據(jù)結(jié)構(gòu)可以使用運算符prepare_object_model_3d
進行預(yù)計算。這允許多次調(diào)用distance_object_model_3d
來重用數(shù)據(jù)結(jié)構(gòu),從而節(jié)省每次調(diào)用重新計算數(shù)據(jù)結(jié)構(gòu)的時間。對于具有非三角形多邊形面的對象,操作符prepare_object_model_3d
可以額外執(zhí)行三角測量并將其保存到對象,以進一步加速distance _object_model_3d
操作符。只有當通用參數(shù)“distance _to”
設(shè)置為“triangles”
時,才會執(zhí)行此三角測量。請注意,與操作符triangulate_object_model_3d
相反,此三角測量不會清除多邊形屬性。
??在計算到點或到三角形的距離時,我們可以選擇通過將通用參數(shù)“store_closest_index”
設(shè)置為“true”
來返回ObjectModel3DFrom
中每個點的最近點或三角形的索引。索引存儲為三維對象模型ObjectModel3DFrom
中名為“&closest_index”
的擴展屬性。請注意,使用“體素”方法時無法計算最接近的索引。如果點與其最近元素的距離超過在MaxDistance
中設(shè)置的最大距離,則最近的索引將設(shè)置為-1
。
??可以計算到點、三角形或到基本體的帶符號距離。因此,必須將通用參數(shù)“signed_dances”
設(shè)置為“true”
。請注意,將“體素”方法與點到點距離結(jié)合使用時,無法計算帶符號距離。
??下面解釋了不同的目標類型和方法,并描述了它們的優(yōu)點和缺點。請注意,我們會根據(jù)目標數(shù)據(jù)類型自動選擇默認方法??梢允褂梅盒蛥?shù)“method”
重寫此方法。
??【Distance to points】:以下方法可用于計算點到點之間的距離:
方法 | 解釋 |
---|---|
Linear search |
對于ObjectModel3DFrom 中的每個點,將計算到ObjectModel3DTo 中所有點的距離,并使用最小距離。此方法不需要預(yù)先計算的數(shù)據(jù)結(jié)構(gòu),并且對于ObjectModel3DTo 中的少量點來說是最快的。 |
KD-Tree |
ObjectModel3DTo 中的點被組織在KD樹中,這加快了搜索最近點的速度。這棵樹的建造非常有效。搜索時間與ObjectModel3DTo中的點數(shù)近似為對數(shù)。但是,搜索時間不是恒定的,并且可能會根據(jù)查詢點在ObjectModel3DFrom中的位置而顯著變化。 |
Voxel |
ObjectModel3DTo 中的點被組織成體素結(jié)構(gòu)。這種體素結(jié)構(gòu)允許在幾乎恒定的時間內(nèi)進行搜索,即獨立于ObjectModel3DFrom 中查詢點的位置和ObjectModel3DTo 中的點的數(shù)量。 |
????請注意,準備此數(shù)據(jù)結(jié)構(gòu)需要幾秒鐘或幾分鐘的時間。但是,可以使用prepare_object_model_3d
對ObjectModel3DTo
執(zhí)行預(yù)計算,其中Purpose
設(shè)置為“distance_computerion”
。
??【Distance to triangles】:計算到三角形的距離,支持以下方法:
方法 | 解釋 |
---|---|
Linear search |
對于ObjectModel3DFrom 中的每個點,將計算到ObjectModel3DTo 中所有三角形的距離,并使用最小距離。此方法不需要預(yù)先計算的數(shù)據(jù)結(jié)構(gòu),并且對于ObjectModel3DTo 中的少量三角形來說是最快的。 |
KD-Tree |
ObjectModel3DTo 中的三角形被組織在KD樹中,這加快了搜索最接近的三角形的速度。這棵樹的建造是有效的。搜索時間大約是ObjectModel3DTo 中三角形數(shù)量的對數(shù)。但是,搜索時間不是恒定的,并且可能會根據(jù)查詢點在ObjectModel3DFrom 中的位置而顯著變化。 |
Voxel |
ObjectModel3DTo 中的三角形以體素結(jié)構(gòu)進行組織。這種體素結(jié)構(gòu)允許在幾乎恒定的時間內(nèi)進行搜索,即獨立于ObjectModel3DFrom 中查詢點的位置和ObjectModel3DTo 中三角形的數(shù)量。 |
????請注意,準備此數(shù)據(jù)結(jié)構(gòu)需要幾秒鐘或幾分鐘的時間。但是,可以使用prepare_object_model_3d
對ObjectModel3DTo
執(zhí)行預(yù)計算,其中Purpose
設(shè)置為“distance_computerion”
。為了創(chuàng)建體素數(shù)據(jù)結(jié)構(gòu),對三角形進行采樣??梢允褂猛ㄓ脜?shù)“sampling_dist_rel”
和“samplings_dist_abs”
設(shè)置相應(yīng)的采樣距離。
????默認情況下,使用0.03的相對采樣距離。請注意,此數(shù)據(jù)結(jié)構(gòu)僅為近似數(shù)據(jù)。一些距離可能偏離了采樣距離的大約10%。在這些情況下,返回的距離將始終大于實際距離。
??【Distance to primitive:】 由于ObjectModel3DTo只能包含一個基元,因此從查詢點到該基元的距離是線性計算的。無法創(chuàng)建或使用數(shù)據(jù)結(jié)構(gòu)。
????請注意,計算與segment_object_model_3d
或fit_primitives_object_model_3d
擬合的基元平面的距離可能很慢,因為這些平面包含用于擬合平面的點的復(fù)雜凸包。如果只需要到平面的距離,并且應(yīng)忽略邊界,則建議使用參數(shù)為“primitive_parameter_pose”
的get_object_model_3d_params
獲取平面姿態(tài),并使用gen_plane_object_model_3d
創(chuàng)建新平面。
??函數(shù)參數(shù):
????ObjectModel3DFrom:輸入 源3D對象模型句柄;
????ObjectModel3DTo:輸入目標3D對象模型句柄;
????Pose:輸入源三維對象模型在目標三維對象模型中的姿勢;
????MaxDistance:輸入感興趣的最大距離;
????GenParamName:輸入通用輸入?yún)?shù)的名稱;默認: [ ];參考: ‘distance_to’, ‘invert_pose’, ‘method’, ‘output_attribute’, ‘sampling_dist_abs’, ‘sampling_dist_rel’, ‘signed_distances’, ‘store_closest_index’;
????GenParamValue:輸入通用輸入?yún)?shù)的值;默認: [ ];參考: ‘a(chǎn)uto’, ‘false’, ‘kd-tree’, ‘linear’, ‘points’, ‘polygons’, ‘primitive’, ‘triangles’, ‘true’, ‘voxel’
??除了上述參數(shù)之外,還可以設(shè)置以下參數(shù)來影響距離計算。如果需要,可以分別使用GenParamName
和GenParamValue
指定這些參數(shù)及其相應(yīng)的值。以下所有參數(shù)都是可選的。
【‘distance_to’】:此參數(shù)可用于明確設(shè)置計算距離的目標數(shù)據(jù)。
參數(shù)名 | 解釋 |
---|---|
'auto' |
(默認)自動設(shè)置目標數(shù)據(jù)。將查詢以下屬性列表,列表中第一個出現(xiàn)的屬性將用作目標數(shù)據(jù):“基本體”、“三角形”、“點”。 |
'primitive' |
計算到ObjectModel3DTo 中包含的基本體的距離。 |
'triangles' |
計算到ObjectModel3DTo 中包含的三角形的距離。 |
'points' |
計算到ObjectModel3DTo 中包含的點的距離。 |
【‘method’】:此參數(shù)可用于明確設(shè)置要用于距離計算的方法。請注意,并非所有方法都可用于所有目標數(shù)據(jù)類型。有關(guān)可能的目標數(shù)據(jù)類型和方法對的列表,請參見上文。
參數(shù)名 | 解釋 |
---|---|
'auto' |
(默認)對所使用的目標數(shù)據(jù)類型使用默認方法。 |
'linear' |
使用線性搜索來計算距離。 |
'kd-tree' |
使用KD樹計算距離。 |
'voxel'' |
使用體素結(jié)構(gòu)來計算距離。 |
【‘invert_pose’】:此參數(shù)可用于反轉(zhuǎn)“姿勢”中給定的姿勢。
參數(shù)名 | 解釋 |
---|---|
'false' |
默認設(shè)置)姿勢不會反轉(zhuǎn)。 |
'true' |
姿勢是倒置(反轉(zhuǎn))的。 |
【‘output_attribute’】:此參數(shù)可用于設(shè)置存儲距離的屬性的名稱。默認情況下,距離存儲在ObjectModel3DFrom
中名為“&distance”
的擴展屬性中。然而,如果相同的3D對象模型用于該運算符的不同調(diào)用,則先前調(diào)用的結(jié)果將被覆蓋。這可以通過更改擴展屬性的名稱來避免。有效的擴展屬性名稱以“&”
開頭。
【‘sampling_dist_rel’, ‘sampling_dist_abs’】:當**使用體素方法計算到三角形的距離時,使用這些參數(shù)。**為此,需要對三角形進行采樣。采樣距離可以使用“sampling_dist_abs”
以絕對值設(shè)置,也可以使用“sampleling_dist_rel”
相對于軸對齊邊界框的直徑設(shè)置。默認情況下,“sampling_dist_rel”
設(shè)置為0.03
。只能設(shè)置兩個參數(shù)中的一個。可以使用get_object_model_3d_params
查詢軸對齊邊界框的直徑。請注意,體素數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建非常耗時,通常使用prepare_object_model_3d
離線執(zhí)行。
【‘store_closest_index’】:此參數(shù)可用于返回擴展屬性'&closest_index'
中最近點或三角形的索引。
參數(shù)名 | 解釋 |
---|---|
'false' |
(默認值)不返回索引。 |
'true' |
返回索引。 |
【‘signed_distances’】:此參數(shù)可用于計算三維對象模型ObjectModel3DFrom中的點到三維對象模型ObjectModel3DTo中的點、三角形或基元的帶符號距離。
參數(shù)名 | 解釋 |
---|---|
'false' |
(默認值)返回無符號距離。 |
'true' |
返回帶符號的距離。 |
根據(jù)可用的目標數(shù)據(jù)(點、三角形或基本體),必須考慮以下特殊性:
參數(shù)名 | 解釋 |
---|---|
Distance to points |
只有“kd-tree” 和“l(fā)inear search” 方法才支持有符號距離的計算。但是,只有當點法線可用于三維對象模型中的點或通過操作符set_object_model_3D_attrib_mod 附加時,才能計算帶符號距離。 |
Distance to triangles |
可以為上面列出的所有方法計算符號距離。如果三角形法向量的點積小于零,則運算符返回負距離。否則,距離為正。 |
Distance to primitive |
計算到圓柱形、球形或長方體的有符號距離時,三維對象模型ObjectModel3DFrom 的點在基本體內(nèi)部的距離為負,而所有其他點的距離為正。當計算到平面的有符號距離時,平面下的所有點都獲得負距離,而所有其他點都獲得正距離。 |
Halcon例程
set_object_model_3d_attrib.hdev 設(shè)置三維對象模型的屬性
scene_flow_globe.hdev 計算兩個立體圖像對之間的3D場景流,以恢復(fù)對象在3D中的運動
reconstruct_3d_object_model_for_matching.hdev 通過三維配準從多個視圖重建用于匹配的三維對象模型
measure_plant.hdev 在三維中測量植物特征
find_surface_model_noisy_data.hdev 在使用飛行時間(TOF)相機獲取的嘈雜3D場景中查找具有基于表面匹配的對象
find_deformable_surface_model.hdev 使用基于可變形曲面的匹配在三維場景中查找對象
compare_surface_sheet_of_light.hdev 使用未校準的光設(shè)置表進行3D表面比較
check_for_holes_sheet_of_light.hdev 使用校準的光設(shè)置表來驗證孔的存在和正確性
【3D Object Model之測量Features】 待更新算子
- area_object_model_3d()
- distance_object_model_3d()
- get_object_model_3d_params()
- max_diameter_object_model_3d()
- moments_object_model_3d()
- select_object_model_3d()
- smallest_bounding_box_object_model_3d()
- smallest_sphere_object_model_3d()
- volume_object_model_3d_relative_to_plane()
匯總
??本專欄博客匯總:Halcon算子匯總文章來源:http://www.zghlxwxcb.cn/news/detail-829932.html
??????今天的文章就到這里啦~
喜歡的話,點贊??、收藏??、關(guān)注??哦 ~文章來源地址http://www.zghlxwxcb.cn/news/detail-829932.html
到了這里,關(guān)于【四】3D Object Model之測量Features——area_object_model_3d()/distance_object_model_3d()算子的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!