VTK 超声图像体绘\BMP图像体绘

#include “vtkRenderer.h”
#include “vtkRenderWindow.h”
#include “vtkRenderWindowInteractor.h”
#include “vtkPiecewiseFunction.h”
#include “vtkColorTransferFunction.h”
#include “vtkVolumeProperty.h”
#include “vtkVolumeRayCastIsosurfaceFunction.h”
#include “vtkVolumeRayCastCompositeFunction.h”
#include “vtkVolumeRayCastMapper.h”
#include “vtkVolume.h”
#include “vtkImageCast.h”
#include “vtkBMPReader.h”
#include “vtkFixedPointVolumeRayCastMapper.h”
#include “vtkStructuredPointsWriter.h”

int main()
{
vtkRenderer *aRender = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(aRender);
vtkRenderWindowInteractor *iRen = vtkRenderWindowInteractor::New();
iRen->SetRenderWindow(renWin);

vtkBMPReader *reader = vtkBMPReader::New();	
	reader->SetDataExtent(0,127,0,127,1,51);
	reader->SetFilePrefix("F://超声图像");
	reader->SetFilePattern("%s%d.bmp");
	reader->SetDataSpacing (1, 1, 1.5);//像素间的间隔
	reader->SetNumberOfScalarComponents (1);
	reader->SetAllow8BitBMP(8);
	reader->SwapBytesOn(); 
	reader->SetReleaseDataFlag(1);
	reader->Update();


vtkImageCast *readerImageCast = vtkImageCast::New();
	readerImageCast->SetInput((vtkDataObject *)reader->GetOutput());
	readerImageCast->SetOutputScalarTypeToShort();

/*
vtkStructuredPointsWriter *wSP=vtkStructuredPointsWriter::New();
wSP->SetInput((vtkDataObject *)readerImageCast->GetOutput());
wSP->SetFileName(“E://CT/mr.VTK”);
wSP->Write();
wSP->Delete();
return 1;
/**/
vtkPiecewiseFunction *opacityTransferFunction = vtkPiecewiseFunction::New();
opacityTransferFunction->AddPoint(0, 0);
opacityTransferFunction->AddPoint(40, 0);
opacityTransferFunction->AddPoint(50, 0.0);
opacityTransferFunction->AddPoint(70, 0.0);
opacityTransferFunction->AddPoint(80, 0.1);
opacityTransferFunction->AddPoint(100, 0.15);
opacityTransferFunction->AddPoint(150, 0.1);
opacityTransferFunction->AddPoint(180, 0.05);
opacityTransferFunction->AddPoint(200, 0);

vtkColorTransferFunction *colorTransferFunction = vtkColorTransferFunction::New();
	colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.0, 0.0);
	colorTransferFunction->AddRGBPoint(50,0.9,0.85,0.8);
	colorTransferFunction->AddRGBPoint(60,1,1,1);
	colorTransferFunction->AddRGBPoint(80,1,0,0);
	colorTransferFunction->AddRGBPoint(100,1,1,0);
	colorTransferFunction->AddRGBPoint(130,0,1,1);
	colorTransferFunction->AddRGBPoint(150,1,0,0.85);
	colorTransferFunction->AddRGBPoint(200,0,0,0);

vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
  volumeProperty->SetColor(colorTransferFunction);
  volumeProperty->SetScalarOpacity(opacityTransferFunction);
  volumeProperty->ShadeOn();
  volumeProperty->SetInterpolationTypeToLinear();
  volumeProperty->SetAmbient(0.2);
  volumeProperty->SetDiffuse(0.9);
  volumeProperty->SetSpecular(0.2);
  volumeProperty->SetSpecularPower(10);	

/*
vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeFunction::New();
vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New();
volumeMapper->SetVolumeRayCastFunction(compositeFunction);
volumeMapper->SetInputConnection(readerImageCast->GetOutputPort());
*/
vtkFixedPointVolumeRayCastMapper *volumeMapper = vtkFixedPointVolumeRayCastMapper::New();
volumeMapper->SetInput(readerImageCast->GetOutput());
vtkVolume *volume = vtkVolume::New();
volume->SetMapper(volumeMapper);
volume->SetProperty(volumeProperty);
volume->RotateX(130);
aRender->AddVolume(volume);
aRender->SetBackground(1, 1, 1);
renWin->SetSize(600, 600);
renWin->Render();
iRen->Initialize();
renWin->Render();
iRen->Start();
aRender->Delete();
renWin->Delete();
iRen->Delete();
reader->Delete();
opacityTransferFunction->Delete();
colorTransferFunction->Delete();
volumeMapper->Delete();
volumeProperty->Delete();
// compositeFunction->Delete();
volume->Delete();
return 0;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值