VTK 三维配准,如何从三维模型上获取点云
vtk吧
全部回复
仅看楼主
level 1
GarrisonHao 楼主
需要进行三维配准,配准一个是扫描仪扫描的点云,另一个是要从模型中取一部分对应的点云,有什么思路或方法吗?
比如怎样获取把下图中红色矩形范围内的面部区域对应的点云?@rabbitbride 求指导
2016年11月26日 10点11分 1
level 7
数据提取,vtk区域选择就是用这样的办法,具体类应该是vtkextractselectedfrustum
2016年11月27日 01点11分 2
多谢,我查找一下这个类
2016年11月28日 02点11分
level 12
看到你用的是一个盒子,是不是i就可以呢?
class vtkMyCallback : public vtkCommand
{
public:
static vtkMyCallback *New()
{ return new vtkMyCallback; }
virtual void Execute(vtkObject *caller, unsigned long, void*)
{
vtkBoxWidget *widget = reinterpret_cast<vtkBoxWidget*>(caller);
widget->GetPlanes(planes);
this->volume->RemoveAllClippingPlanes();
planes->GetPlane(0,plane0);
planes->GetPlane(1,plane1);
planes->GetPlane(2,plane2);
planes->GetPlane(3,plane3);
planes->GetPlane(4,plane4);
planes->GetPlane(5,plane5);
volume->AddClippingPlane(plane0);
volume->AddClippingPlane(plane1);
volume->AddClippingPlane(plane2);
volume->AddClippingPlane(plane3);
volume->AddClippingPlane(plane4);
volume->AddClippingPlane(plane5);
}
//vtkFixedPointVolumeRayCastMapper *volume;
vtkVolumeRayCastMapper *volume;
vtkPlanes *planes;
vtkPlane *plane0;
vtkPlane *plane1;
vtkPlane *plane2;
vtkPlane *plane3;
vtkPlane *plane4;
vtkPlane *plane5;
double a[3];
};
2016年11月28日 00点11分 3
我要进行配准,所以要取头骨某一个区域(比如面部)的点云,应该是一系列离散的点,没有思路,不知道该怎么进行
2016年11月28日 02点11分
@GarrisonHao 不是盒子的话,那你就加一个盒子啊,用盒子来把这部分区域裁剪出来
2016年11月28日 03点11分
@rabbitbride 你的思路是添加一个vtkBoxWidget,然后判断vtkPoint是否在盒子内部?在盒子内部的点就是我想要的点?
2016年11月28日 07点11分
@GarrisonHao 聪明[太开心]
2016年11月28日 09点11分
level 2
请问楼主问题解决了吧 请教一下[乖]
2018年04月01日 04点04分 4
level 10
这个是术中配准的部分
2024年11月21日 14点11分 5
level 10
如果做神外的话,这种是不能用的。精度太差了。
2024年11月21日 14点11分 6
1