1. 如何將灰度圖轉(zhuǎn)為3D點云
這里所說的灰度圖轉(zhuǎn)為3D點云,其實是將灰度圖像每個像素的行列坐標作為3D點云的X,Y坐標,像素的灰度值(0—255)作為三維點的Z坐標。
簡單說就是將一張灰度圖像拆成了三個數(shù)組:X,Y,Z,然后將這三個數(shù)組轉(zhuǎn)為點云。
halcon代碼:
dev_get_window (WindowHandle)
read_image (Image, '1.bmp')
rgb1_to_gray (Image, GrayImage)
*獲取圖像尺寸
get_image_size (GrayImage, Width, Height)
gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)
*從區(qū)域生成所有的像素坐標
get_region_points(Rectangle, X, Y)
*讀取圖像的全部像素
get_grayval(GrayImage, X, Y, Z)
*創(chuàng)建3D對象模型
gen_object_model_3d_from_points(X, Y, Z, ObjectModel3D)
*顯示3D模型
visualize_object_model_3d (WindowHandle,ObjectModel3D , [], [], [], [], [], [], [], PoseOut)
2. 創(chuàng)建一張深度圖
實際上深度圖是使用X,Y,Z三個數(shù)組的數(shù)據(jù)創(chuàng)建來的;
X,Y是作為圖像的行列坐標,Z是實數(shù)(表示的是深度/高度),而不是灰度,因為灰度值是0——255之間的整數(shù);
Z的值是能夠返回高度信息的傳感器獲取到的,比如點激光、線激光,結(jié)構(gòu)光等。
下面是自己賦值得到的一張深度圖。
dev_get_window (WindowHandle)
read_image (Image, '2.bmp')
rgb1_to_gray (Image, GrayImage)
*獲取圖像尺寸
get_image_size (GrayImage, Width, Height)
gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)
*從區(qū)域生成所有的像素坐標
get_region_points(Rectangle, X, Y)
*讀取圖像的全部像素
get_grayval(GrayImage, X, Y, Z)
*改變Z的值
Z:=Z-256
*對在Rectangle2區(qū)域中的像素進行賦值
gen_rectangle1 (Rectangle2, 101, 101, 140,140)
get_region_points(Rectangle2, X2, Y2)
Z[X2*400+Y2]:=2.4
*創(chuàng)建一張類型為'real'的圖像
gen_image_const (ImageConst, 'real', Width, Height)
*使用X,Y,Z給圖像賦值A(chǔ)
set_grayval (ImageConst, X, Y, Z)
3. 深度圖轉(zhuǎn)點云、點云轉(zhuǎn)深度圖
接下來我們加載一張真正的深度圖,它是由線激光采集數(shù)據(jù)得到的,保存格式為tiff文件;
這是截取了其中一段圖像,掃描的是電路板上一些元器件和焊點的高度。
read_image (Image, '3DImage1.tiff')
get_image_size (Image, Width, Height)
*1. 這一步是將灰度圖轉(zhuǎn)為了X,Y,Z三個數(shù)組,當然也就可以轉(zhuǎn)為三位點云了
*獲取圖像尺寸
get_image_size (Image, Width, Height)
gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)
*從區(qū)域生成所有的像素坐標
get_region_points(Rectangle, X, Y)
*讀取圖像的全部像素
get_grayval(Image, X, Y, Z)
*2. 再將X,Y,Z這三個數(shù)組轉(zhuǎn)回深度圖,實際應(yīng)用中,線機光返回的數(shù)據(jù)就是Z數(shù)組,X,Y數(shù)組由自己創(chuàng)建
*創(chuàng)建一個空圖像,注意type選擇'real'
gen_image_const (ImageConst, 'real', Width, Height)
*然后使用數(shù)組填充圖像,這樣就完成了
set_grayval (ImageConst, X, Y, Z)
*3. 接下來就可以對深度圖做進一步處理了。。。
4. 代碼和圖片下載地址
https://download.csdn.net/download/weixin_38566632/19765495
審核編輯 :李倩
-
3D
+關(guān)注
關(guān)注
9文章
2952瀏覽量
109450 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26373 -
點云
+關(guān)注
關(guān)注
0文章
58瀏覽量
3925
原文標題:Halcon 3D點云和深度圖的相互轉(zhuǎn)化
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
告別漫長等待! 3D測量竟然可以如此的絲滑

一種以圖像為中心的3D感知模型BIP3D

3D IC背后的驅(qū)動因素有哪些?

對于結(jié)構(gòu)光測量、3D視覺的應(yīng)用,使用100%offset的lightcrafter是否能用于點云生成的應(yīng)用?
SciChart 3D for WPF圖表庫

騰訊混元3D AI創(chuàng)作引擎正式上線
3D掃描技術(shù)醫(yī)療領(lǐng)域創(chuàng)新實踐,積木易搭3D掃描儀Mole助力定制個性化手臂康復(fù)輔具

裸眼3D筆記本電腦——先進的光場裸眼3D技術(shù)
3D建模的重要內(nèi)容和應(yīng)用
友思特案例 | 自研創(chuàng)新!三維工件尺寸測量及點云處理解決方案

評論