VTK使用入门(四)
- 博客分类:
- 技术杂绘
#include "vtkDICOMImageReader.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
//#include "vtkVolume16Reader.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkPolyDataNormals.h"
#include "vtkStripper.h"
#include "vtkMarchingCubes.h" int main(int argc, char **argv)
{
if (argc SetDirectoryName("d:/headsq/");
v16->SetFilePrefix(argv[1]);
v16->SetDataSpacing(1.0,1.0,1.0);
v16->Update();
//=====================重建皮肤=============================
vtkMarchingCubes *skinExtractor = vtkMarchingCubes::New();
skinExtractor->SetInputConnection(v16->GetOutputPort ());
skinExtractor->SetValue(0,500);
vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();
skinNormals->SetInputConnection(skinExtractor->GetOu tputPort());
skinNormals->SetFeatureAngle(60.0);
vtkStripper *skinStripper = vtkStripper::New();
skinStripper->SetInputConnection(skinNormals->GetOut putPort());
vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();
skinMapper->SetInputConnection(skinNormals->GetOutpu tPort());
skinMapper->ScalarVisibilityOff();
vtkActor *skin = vtkActor::New();
skin->SetMapper(skinMapper);
skin->GetProperty()->SetDiffuseColor(1, .49, .25);
skin->GetProperty()->SetSpecular( .3);
skin->GetProperty()->SetSpecularPower(20);
skin->GetProperty()->SetOpacity(1.0);
//=======================重建骨骼================================
vtkMarchingCubes *boneExtraractor = vtkMarchingCubes::New();
boneExtraractor->SetInputConnection(v16->GetOutputPo rt());
boneExtraractor->SetValue(0,1150);
vtkPolyDataNormals *boneNormals = vtkPolyDataNormals::New();
boneNormals->SetInputConnection(boneExtraractor->Get OutputPort());
boneNormals->SetFeatureAngle(60.0);
vtkStripper *boneStripper = vtkStripper::New();
boneStripper->SetInputConnection(boneStripper->GetOu tputPort());
vtkPolyDataMapper *boneMapper = vtkPolyDataMapper::New();
boneMapper->SetInputConnection(boneMapper->GetOutput Port());
boneMapper->ScalarVisibilityOff();
vtkActor *bone = vtkActor::New();
bone->SetMapper(boneMapper);
bone->GetProperty()->SetDiffuseColor(1,1, .9412);
//=============================建立轮廓============================
vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
outlineData->SetInputConnection(v16->GetOutputPort() );
vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
mapOutline->SetInputConnection(outlineData->GetOutpu tPort());
vtkActor *outline = vtkActor::New();
outline->SetMapper(mapOutline);
outline->GetProperty()->SetColor(0,0,0);
//========================建立相机===============================
vtkCamera *aCamera = vtkCamera::New();
aCamera->SetViewUp(0,0,-1);
aCamera->SetPosition(0,1,0);
aCamera->SetFocalPoint(0,0,0);
aCamera->ComputeViewPlaneNormal();
//=======================准备演示=================================
vtkRenderer *aRenderer = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(aRenderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
aRenderer->AddActor(outline);
aRenderer->AddActor(skin);
aRenderer->AddActor(bone);
aRenderer->SetActiveCamera(aCamera);
aRenderer->ResetCamera();
aCamera->Dolly(1.5);
aRenderer->SetBackground(1,1,1);
aRenderer->ResetCameraClippingRange();
renWin->SetSize(640,480);
//=========================开始演示==============================
iren->Initialize();
iren->Start();
//==========================演示结束=============================
v16->Delete();
skinExtractor->Delete();
skinNormals->Delete();
skinStripper->Delete();
skinMapper->Delete();
skin->Delete();
boneExtraractor->Delete();
boneNormals->Delete();
boneStripper->Delete();
boneMapper->Delete();
bone->Delete();
outlineData->Delete();
mapOutline->Delete();
outline->Delete();
aCamera->Delete();
aRenderer->Delete();
renWin->Delete();
iren->Delete();
return 0;
}
=============程序来源于《Visual C++数字图象处理技术详解》==================
以上是在VS2005环境下VTK对医学图像成功3V重建的代码,基于MC算法,当然,前提是你配置好了VTK。
【不知道等上传后会不会出现代码丢失。。。。】
1,头文件的用法,声明,需要进一步搞明白;
2,程序的模块化后,一步一步,依次,读取-》重建皮肤-》重建骨骼-》建立轮廓-》建立相机-》准备演示-》开始演示-》演示结束~~~ 其实大致就包括信息读取,处理,新建窗口,窗口显示;
3,需要搞明白其中的算法;
4,还有很多~~~~~~~~~
这个只是VTK初探,慢慢学吧,呵呵。
发表评论
-
一个字符串问题的思考
2012-07-06 09:51 496一、 问题描述: 求解给定文本text 中以字符 A ... -
Vim正则表达式查找替换
2012-07-06 09:45 934这里简单的给大家介绍一下Vim的查找替换,众所周知,Vim ... -
使用正则表达式实现表达式计算器
2012-07-06 09:37 1234使用正则表达式实 ... -
页面仿百度下拉框,支持动态后台提取数据
2012-07-05 20:44 998.bottom_up { font-family ... -
核心Swing组件(五)
2012-07-03 13:42 563如图4-1所示,AbstractButton类是作用在幕后 ... -
Flex 文件上传导入组件
2012-07-02 10:22 334上文讲到Flex利用Blazeds来上传文件,本文则封装了 ... -
flex分页控件源码
2012-07-02 10:22 563功能说明:只配合服务器端分页。这个分页条是通用的。只需要在 ... -
自定义网页滚动条
2012-07-02 10:21 521用户操作 [留言] [发消息] [加为好友] ... -
Three ways to set a custom busy cursor in flex
2012-07-02 10:21 507First, prepare your custom cu ... -
Android
2012-07-02 09:43 446... -
PHP作为Flex程序的数据源
2012-07-01 09:41 446Adobe Flash Builder 4 简体中文正式版 ... -
Flex和Spring的整合
2012-07-01 09:41 390关于Flex Adobe Flex是一套创建富客户端应用( ... -
实现FLEX 通过AMF跟PHP通信
2012-07-01 09:41 517AMF flex一种远调用 ... -
Java Server Push To Flex (ServerPush)
2012-07-01 09:40 514在网上找了许多的Flex与java 通信做ServerPu ... -
linux 下同名符号冲突问题解决方法
2012-06-30 17:56 1646最近的工作中遇到如下令人蛋疼的问题: linux 下 ... -
在xp和Win7上使用Tomcat 6.0经常遇到的几个问题及其解决方法
2012-06-30 17:56 497在Win7上使用Tomcat 6.0经常会遇到一下几个问题 ... -
找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。错误的解决方法!
2012-06-30 17:56 529找到多个具有相 ... -
DB2相关问题及解决方法
2012-06-30 17:56 495DB2相关问题及解决方法: 一、DB2中的代码页( ... -
session串的问题以及解决方法
2012-06-30 17:56 561什么是session串的问题 典型案例:现有一W ...
相关推荐
详细介绍了vtk使用方法,虽然是以前的版本,但是还是有一定的参考价值,对英语不好的同学有很大帮助
VTK入门及应用案例
vtk入门教程从每个例子讲起,STEP9 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
VTK入门经典.pdf,适合初学者。通过掌握vtk的基础知识更好的入门。
vtk入门教程从每个例子讲起,STEP16 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
vtk入门教程从每个例子讲起,STEP6 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起,
VTK入门程序样例.zipVTK三维重建!!
vtk入门教程从每个例子讲起,STEP7 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
一共十九个程序,都是基础,简单的程序,可以轻松入门
VTK是三维可视化工具箱,vtk入门教程从每个例子讲起,STEP2
vtk编译文档 VTK入门程序样例分析-vtk与MFc混编.pdf 可视化编程
vtk入门教程从每个例子讲起,STEP10 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
VTK学习的入门教程,包含各种基本的三维图形,还有一些基本操作如漫游,文档读入
VTK入门样例,适合于新手入门参考使用。
VTK三维可视化工具箱.入门教程,从每个例子讲起这是第1个例子STEP1
VTK入门程序样例,这是叶峰无偿提供的宝贵的学习财富。 其它的我不说了,叶峰整理的东西,我相信了解VTK的人都会下的!这里面的样列,基本上覆盖了VTK所有基本用法。
VTK程序代码,VTK的入门程序例子,方便初学者的学习
vtk入门教程从每个例子讲起,STEP14 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
vtk入门教程从每个例子讲起,STEP13 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起
vtk入门教程从每个例子讲起,STEP3 VTK是三维可视化工具箱,vtk入门教程从每个例子讲起,STEP3