设置图像原点/大小---vtkImageReslice
vtk吧
全部回复
仅看楼主
level 12
rabbitbride 楼主
vtkImageReslice
号称瑞士军刀~名字很厉害,实际有什么用呢?
这里试试看[吐舌]
2015年08月05日 05点08分 1
level 12
rabbitbride 楼主
故事的开始是这样的:
先有一个图像数据,号称vtkImageData,(从哪里来的就不用管了):
vtkSmartPointer<vtkImageData> pData =vtkSmartPointer<vtkImageData>::New();
pData->DeepCopy(reader->GetOutput());
pData->Update();
2015年08月05日 05点08分 2
level 12
rabbitbride 楼主
需求是修改图像的原点和大小,
起初我认为应该是这样写:
int pExtent[6];
inputData->GetExtent(pExtent);
int pOrigin[3];
pOrigin[0] = (pExtent[1]-pExtent[0])/2;
pOrigin[1] = (pExtent[3]-pExtent[2])/2;
pOrigin[2] = (pExtent[5]-pExtent[4])/2;
inputData->SetExtent(0,pOrigin[0]*2,0,pOrigin[1],0,pOrigin[2]);
inputData->SetOrigin(pOrigin[0],pOrigin[1],pOrigin[2]);
inputData->Update();
2015年08月05日 05点08分 3
level 12
rabbitbride 楼主
看起来,这样设置就差不多了,但是在用的时候,发现并没什么鸟用。[汗]
2015年08月05日 05点08分 4
level 12
rabbitbride 楼主
最后是这么解决的~~如下:(这就是传说中的军刀[哈哈]
int *ext = pData_orz->GetExtent();
double *origin = pData_orz->GetOrigin();
vtkSmartPointer<vtkImageReslice> pReslice = vtkSmartPointer<vtkImageReslice>::New();
pReslice->SetOutputOrigin(origin);
pReslice->SetOutputExtent(ext);
pReslice->SetAutoCropOutput(1);//!!!一定要加这句话
pReslice->SetInput(pData);
pReslice->Update();
2015年08月05日 05点08分 5
level 12
rabbitbride 楼主
代码有些乱,凑合看吧,本来就是抛砖引玉的[晕厥]~
2015年08月05日 05点08分 6
我最近也在研究这个函数主要是想用这个功能: Extraction of slices from an image volume. 提取切片,在使用中需要设置转换坐标,需要用到这个函数vtkMatrix4x4,平行于坐标轴的切片的转换坐标较为容易,但是对于任意方向的切面的转换坐标不知道该如何设置,不知吧主有没有这方面的资料?
2016年01月21日 03点01分
吧主,vtkImageReslice的算法文章有没有?求一篇@rabbitbride
2016年06月17日 06点06分
@拉稀放屁带出翔 这个应该不会有啊~ 看源代码吧
2016年06月17日 19点06分
@rabbitbride 不看算法就看源码,有的时候真的好艰难[不高兴]
2016年06月20日 05点06分
1