最近使用3D sensor(TOF相机),记录一下:
最近做的这个项目,本来是打算使用halcon的3D surface 匹配来试试的,但是一点思路都没有,从TOF出来的是3D点云数据,不知道使用halcon读入应该是怎样的一种表现形式,是image?还是model?还是XYZPoints? 问了很多人,网上查资料,苦于这方面的资料太少,最后还是没有得到解答。一个偶然的机会发现在C:\Program Files\MVTec\HALCON-12.0\doc\pdf\solution_guide有文档,那个激动啊,赶快找来看看。但是solution_guide_iii_c_3d_vision.pdf中对双目以及laser都讲了,就是关于TOF的介绍很少,不过看到了这么一段:
就明白了从TOF过来的是image。那怎么才能得到image那?之前2D相机一直用的GenImageInterleaved得到彩色图像,看了下这个算子不能得到TOF的image。继续查资料,就从halcon的图像获取那几个算子里面找,终于功夫不负有心人,使用GenImage3就可以啦。
void NewImage(HObject *newImage)
{
float X[176*132];
float Y[176*132];
float Z[176*132];
int r,c;
int idx=0;
for (r=0; r<132; r++)
{
for (c=0; c<176; c++)
{
X[r*176+c] = m_coords[idx * 3 + 0];
Y[r*176+c] = m_coords[idx * 3 + 1];
Z[r*176+c] = m_coords[idx * 3 + 2];
idx++;
}
}
GenImage3(newImage,"real",176,132,(Hlong)X,(Hlong)Y,(Hlong)Z);
}
得到了图像就可以处理啦。