根據三維空間座標點如何構建三維模型

1.Halcon 算子:xyz_to_object_model_3d

功能:將含有三維空間座標的圖像(數值矩陣)生成一個三維模型,輸入的圖像爲三維空間座標點的X、Y、Z圖像
xyz_to_object_model_3d (ImageX, ImageY, ImageZ, model)
ImageX:含有物體三維空間中的X座標信息
ImageY:含有物體三維空間中的Y座標信息
ImageZ:含有物體三維空間中的Z座標信息

2.OpenCV生成XYZ圖像

XYZ圖像:實際上是以圖像的形式存儲的二維矩陣

定義32位Mat類型圖像,初始化爲0

	Mat xImg, yImg, zImg;
	xImg= Mat::zeros(height, width, CV_32FC1);
	yImg= Mat::zeros(height, width,CV_32FC1);
	zImg= Mat::zeros(height, width, CV_32FC1);

循環遍歷像素,判斷二維座標中該點位置實際對應的三維空間座標點是否存在,若存在則取出三維空間座標點的x、y、z值,分別賦值給 xImg, yImg, zImg

	for (int i = 0; i < height; i++)
	{
	    //注:pt爲三維空間座標點對象
		float *r = xImg.ptr<float>(i);
		float *g = yImg.ptr<float>(i);
		float *b = zImg.ptr<float>(i);
		for (int j = 0; j < width; j++)
		{
		  // 取出2D圖像位置(i,j)對應的點雲
			float x, y, z;
			float cr, cg, cb;
			x = pt->x;
			y = pt->y;
			z = pt->z;
	
			if (fabs(x - 0.0) < FLT_EPSILON && fabs(y - 0.0) < FLT_EPSILON && fabs(z - 0.0) < FLT_EPSILON) // 判斷當前2D圖像位置是否有點雲
			{
				//情況1:當前(i,j)位置沒有點雲
			}
			else
			{
				//情況2:當前(i,j)位置有點雲,取出點雲信息
				cnt++;
				r[j] = x ;
				g[j] = y;
				b[j] = z;
			}
		}
	}

3.保存的XYZ圖像

4.調用Halcon算子,生成三維模型並顯示

xyz_to_object_model_3d (Image1, Image2, Image3, model)
visualize_object_model_3d (WindowHandle, model, []
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章