Halcon算子学习:smooth_object_model_3d
smooth_object_model_3d
( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D)
平滑3D對象模型的3D點
輸入:
- object_model_3d(input_control)
包含3D點數據的3D對象模型的句柄。 - Method(input_control)
平滑方法。
默認值:“ mls”(移動最小二乘法)
值列表:“ mls” - GenParamName(input_control)屬性
通用平滑參數的名稱。
默認值: []
值列表:“ mls_abs_sigma”,“ mls_force_inwards”,“ mls_kNN”,“ mls_order”,“ mls_relative_sigma” - GenParamValue(input_control)屬性
通用平滑參數的值。
默認值: []
建議值:10、20、40、60、0.1、0.5、1.0、2.0、0、1、2
輸出:
- object_model_3d
帶有光滑的三維點數據的三維對象模型的句柄。
算子說明
操作符smooth_object_model_3d使用方法指定的方法對ObjectModel3D中的3D點進行平滑處理。得到的平滑點在SmoothObjectModel3D中返回。目前,移動最小二乘法(Method=’ MLS ')是唯一支持的平滑方法。
對于每個點P, MLS平滑算法將一個平面或一個高階多項式曲面與其k鄰域(k個最近點)相匹配。曲面擬合實質上是對平面或多項式曲面參數分別進行加權最小二乘參數估計的一種標準方法。P的最近鄰的貢獻比其他點的貢獻大,這是由下面帶參數σ(sigma) 的加權函數控制的:
然后將點投射到表面上。對所有點重復這個過程,得到一個平滑的點集。(它們可以很容易地從表面參數計算出來)。因此,這些點被相應的法線作為平滑的副作用加以擴大。
通過將GenParamName設置為以下值之一,可以用GenParamValue設置額外的MLS特定參數:
-
“mls_kNN”:
指定用于將MLS曲面與每個點匹配的最近鄰k的數量。
建議值:40、60(默認值)、80、100、400 -
“mls_order”:
指定MLS多項式曲面的順序。對于’mls_order’=1,表面是一個平面。
建議值:1、2(默認值)、3 -
“mls_abs_sigma”:
將加權參數指定為以米為單位的固定絕對值。要選擇的值取決于點數據的規模。根據經驗,可以選擇P點與其k/2相鄰點之間的典型距離。注意,對于不同密度的點數據設置一個絕對加權參數,可能會導致位于不同密度點數據部分的點的平滑結果不同。
這個問題可以通過使用’mls_relative_sigma’來避免,它是與比例無關的,這也使它成為指定鄰域加權的一種更方便的方法。注意,如果傳遞了’mls_abs_sigma’,則忽略’mls_relative_sigma’中的任何值。
建議值:0.0001,0.001,0.01,0.1,1.0 -
“mls_relative_sigma”:
指定一個乘法因子,用于計算點P的公式:
注意,與所有點的全局參數不同,它是為每個點P計算的,因此使權重函數適應于它的鄰域。這避免了在試圖將全局參數(‘mls_abs_sigma’)設置為具有高度變化的點密度的點數據時可能出現的問題。但是請注意,如果設置了’mls_abs_sigma’,則忽略’mls_relative_sigma’。
建議值:0.1、0.5、1.0(默認值)、1.5、2.0 -
“mls_force_inwards”:
如果這個參數設置為“真”,所有的表面法線都指向“原點的方向”。用數學方法表示,可以保證法向量和從各自的曲面點到原點的向量的標量積是正的。如果生成的SmoothObjectModel3D用于基于表面的匹配,可能需要這樣做,無論是作為create_surface_model中的模型,還是作為find_surface_model中的3D場景,因為在這里,法線的一致方向對于匹配過程非常重要。如果’mls_force_inwards’設置為’false’,則法向量的方向是任意的。
可能的值:‘true’, ‘false’(默認值)
注意:
- 如果不再需要或應該覆蓋3D對象模型,則必須首先通過調用操作符clear_object_model_3d來釋放內存。
平滑后的結果對比:
總結
以上是生活随笔為你收集整理的Halcon算子学习:smooth_object_model_3d的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态资源和静态资源分离
- 下一篇: Halcon算子学习:图像阈值分割-th