VTK教程6--------保存三维重建结果

考虑一个问题,如果通过调整参数得到了一个较好三维重建结果,如何进行保存?
比如下面这个图形,如何保存这个重建结果?
在这里插入图片描述
上图是一个CT的脚踝扫描结果,通过调整体绘制的颜色映射和透明度映射,最终得到了只显示骨骼的结果。现在想要把这个结果保存,避免每次使用的时候都要进行参数调整。在vtk中可以通过抽取等值面来实现,流程图如下:
在这里插入图片描述
从流程图中可以看出,通过vtkContourFilter类可以将vtkImagedata中的等值面提取出来,具体代码如下:

	this->pvtkContourFilter->SetInputData(this->pvtkImageData);
	this->pvtkContourFilter->SetValue(0, 1300);  // 等值面的值
	this->pvtkPolyDataMapper->SetInputConnection(this->pvtkContourFilter->GetOutputPort());

提取等值面的显示效果图如下:
在这里插入图片描述
是不是和上面体绘制的绘制效果一样?
接下来是保存为vtk格式的代码:

	if (this->input_path != "")
	{
		static char BASED_CODE szFilter[] = "VTK Files (*.vtk)|*.vtk|All Files (*.*)|*.*||";
		CFileDialog cFileDialog(FALSE, ".vtk", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);  // 使用了MFC的创建对话框的形式来选择存储路径,输入文件名
		if (cFileDialog.DoModal() == IDOK)
		{
			UpdateData(true);
			auto writer = vtkPolyDataWriter::New();  // 存储为vtk格式的类
			writer->SetInputData(pvtkContourFilter->GetOutput());  // 数据来源于等值面提取
			writer->SetFileTypeToBinary();
			writer->SetFileName(cFileDialog.GetPathName());   // 存储的文件名
			writer->Update();
			writer->Delete();
		}
	}

再使用第三讲编写的程序打开该vtk文件,和提取等值面前的对比效果图如下:
在这里插入图片描述
是不是除了颜色不一样,其他都一样,滑稽.jpg

好了,把这个图像再共享一下,比较大120多M。
脚踝CT图像,点这里
更多VTK教程,请VX搜索CodeKit。
在这里插入图片描述

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值