Halcon中的3D技術

2021-09-24 23:13:02 字數 2339 閱讀 9685

對於檢測一些產品的3d資訊,我們通過3d相機能獲取其點雲資料或一張帶有高度資訊的影象。

這邊我們用smartray相機,獲取到一張16位的png影象。實際上就是一張高度資訊圖。

這邊x、y縮放比例為0.019,z方向為0.0016,意思就是你xyz乘這係數就是相對距離。

在那個相機軟體中能看到如上的3d圖。

我們獲取到的是一張16位的png圖,如下

halcon中建立乙個3d模型,需要3張影象,每張圖的灰度值分別代表x、y、z。

現在我們有的是上面這張z方向的還沒縮放的圖。轉乘real的,縮放就能得到z。x、y圖自己建立就行。這邊講原點設在影象左上角。

halcon**:

convert_image_type (zmap112653, imageconverted, 'real')

get_image_size (imageconverted, width, height)

gen_image_su***ce_first_order (imagesu***ce, 'real', 1, 0, 0, 0, 0, width, height)

gen_image_su***ce_first_order (imagesu***ce1, 'real', 0, 1, 0, 0, 0, width, height)

scale_image (imagesu***ce, x, 0.019, 0)

scale_image (imagesu***ce1, y, 0.019, 0)

scale_image (imageconverted, z, 0.0016, 0)

compose3 (x, y, z, multichannelimage)

xyz_to_object_model_3d (x, y, z, objectmodel3d)

好了,我們就得到這個3d模型了。

下面舉個應用的例子:測量兩平面的夾角

如上圖,我們要測量我畫的兩塊紅框位置,它們兩平面的夾角。在3d模型中也能看出,這個差不多90度的樣子。

我們需要分別擬合這兩塊平面,然後得到其單位法向量,向量點乘得到這個角的cos,就知道夾角了。

當然擬合平面是注意去躁,這個成像上面有很多丟失點,這邊在z圖上乙個閾值分割就能把它們去掉,得到有效的region來擬合平面。

halcon**:

我們得到了那個有效的紅色框region(排除了其中的躁點區域)regionintersection

reduce_domain (x, regionintersection, imagereduced3)

xyz_to_object_model_3d (imagereduced3, y, z, objectmodel3d1)

fit_primitives_object_model_3d (objectmodel3d1, ['primitive_type','fitting_algorithm'], ['plane','least_squares_tukey'], objectmodel3dout)

get_object_model_3d_params (objectmodel3dout, 'primitive_parameter', paramvalue)

get_object_model_3d_params (objectmodel3dout, 'primitive_rms', paramvalue4)

解釋下這段**:

reduce了x,然後生成乙個3d模型objectmodel3d1,這樣這個3d模型就只有那個用來擬合的平面部分,

fit_primitives_object_model_3d 這個運算元用來擬合的,這邊填入了一些引數擬合型別:plane,演算法:最小二乘法。然後我們

得到乙個模型:objectmodel3dout。這是那個擬合出來的3d平面模型。

然後我們通過get_object_model_3d_params,從擬合的模型中獲取資訊

這個primitive_parameter獲取這平面的單位法向量和這個平面距離原點的距離,4個引數。[x,y,z,d]

primitive_rms就是rms嘍。

照著這麼做,把另外乙個平面搞出來,就能求兩平面的夾角了。

至於其他應用,如找兩平面的交線,點到平面的距離,就是一些向量運算。

3D顯示技術

3d顯示技術說白了都是為了一點 分別讓左眼和右眼在同一時間看到不同的影象。為此發明了幾種不同的技術 紅藍3d。紅藍3d採用普通的顯示器。者只需佩戴乙個紅藍眼鏡便可以看到3d影像。紅藍3d中紅色鏡片只允許紅光通過,藍色鏡片只允許藍光通過。因此左右眼可以分別看到不同的影象。典型的紅藍影象如圖所示 偏振光...

3D顯示技術

3d顯示技術說白了都是為了一點 分別讓左眼和右眼在同一時間看到不同的影象。為此發明了幾種不同的技術 紅藍3d。紅藍3d採用普通的顯示器。者只需佩戴乙個紅藍眼鏡便可以看到3d影像。紅藍3d中紅色鏡片只允許紅光通過,藍色鏡片只允許藍光通過。因此左右眼可以分別看到不同的影象。典型的紅藍影象如圖所示 偏振光...

3D 相機halcon運算元,持續更新

add scene 3d camera 功能 將相機新增到三維場景中。add scene 3d instance 功能 將三維物件模型的例項新增到三維場景中。add scene 3d label 功能 向三維場景新增文字標籤。add scene 3d light 功能 將光源新增到三維場景。clea...