vtk中的Image Mask
vtk吧
全部回复
仅看楼主
level 12
rabbitbride 楼主
2014年07月20日 00点07分 1
level 12
rabbitbride 楼主
做Mask的思路很多。这里用lookuptable。
vtkXXXXReader
vtkLookupTable
vtkImageMapToColors
vtkImageViewer2
vtkRenderWindowInteractor
2014年07月20日 00点07分 2
level 12
rabbitbride 楼主
中间读取部分就不陈词滥调了。直接调色[太开心]
vtkSmartPointer<vtkLookupTable> lookupTable =
vtkSmartPointer<vtkLookupTable>::New();
lookupTable->SetNumberOfTableValues(2);
lookupTable->SetRange(0.0,1.0);
lookupTable->SetTableValue( 0, 0.0, 0.0, 0.0, 0.0 ); //label 0 is transparent
lookupTable->SetTableValue( 1, 0.0, 1.0, 0.0, 0.5 ); //label 1 is opaque and green
lookupTable->Build();
vtkSmartPointer<vtkImageMapToColors> mapTransparency =
vtkSmartPointer<vtkImageMapToColors>::New();
mapTransparency->SetLookupTable(lookupTable);
mapTransparency->PassAlphaToOutputOn();
mapTransparency->SetInput(maskImage);
2014年07月20日 00点07分 3
level 12
rabbitbride 楼主
将彩色数据传给actor:
vtkSmartPointer<vtkImageActor> maskActor =
vtkSmartPointer<vtkImageActor>::New();
maskActor->GetMapper()->SetInputConnection(
mapTransparency->GetOutputPort());
2014年07月20日 00点07分 4
level 12
rabbitbride 楼主
最后,imageView2做显示。
vtkSmartPointer<vtkImageViewer2> view2 =
vtkSmartPointer<vtkImageViewer2>::New();
view2->SetInput(image);
view2->GetRenderer()->AddActor(maskActor);
view2->SetupInteractor(renderWindowInteractor);
view2->Render();
2014年07月20日 00点07分 5
level 12
rabbitbride 楼主
Mask方法2:用 vtkImageMask
2014年07月20日 02点07分 6
level 12
rabbitbride 楼主
上重点:
vtkSmartPointer<vtkImageMask> maskFilter =
vtkSmartPointer<vtkImageMask>::New();
maskFilter->SetImageInput(image);
maskFilter->SetMaskInput(sphere->GetOutput());
maskFilter->SetMaskedOutputValue(0,255,0);
maskFilter->NotMaskOn();
maskFilter->SetMaskAlpha(0.35);
maskFilter->ReleaseDataFlagOff();
maskFilter->Update();
vtkSmartPointer<vtkImageMask> maskFilter1 =
vtkSmartPointer<vtkImageMask>::New();
maskFilter1->SetImageInput(maskFilter->GetOutput());
maskFilter1->SetMaskInput(sphere1->GetOutput());
maskFilter1->SetMaskedOutputValue(255,0,0);
maskFilter1->NotMaskOn();
maskFilter1->SetMaskAlpha(0.8);
maskFilter1->ReleaseDataFlagOff();
maskFilter1->Update();
2014年07月20日 02点07分 7
请问一下吧主!这里的sphere 是要一个01的二值图吗?还是0和非0的二值图?
2017年09月15日 07点09分
level 12
rabbitbride 楼主
vtkImageViewer2做显示:
vtkSmartPointer<vtkImageViewer2> view2 =
vtkSmartPointer<vtkImageViewer2>::New();
view2->SetInput(maskFilter1->GetOutput());
view2->SetupInteractor(renderWindowInteractor);
view2->Render();
2014年07月20日 02点07分 8
level 12
rabbitbride 楼主
Mask方法3:用 vtkImageToImageStencil vtkImageStencil
2014年07月20日 05点07分 9
level 12
rabbitbride 楼主
上重点:
vtkSmartPointer<vtkImageToImageStencil> imageToImageStencil = vtkSmartPointer<vtkImageToImageStencil>::New();
imageToImageStencil->SetInput(mapTransparency->GetOutput());
imageToImageStencil->ThresholdBetween(0,1);
imageToImageStencil->SetLowerThreshold(imageToImageStencil->GetLowerThreshold());
imageToImageStencil->SetUpperThreshold(imageToImageStencil->GetUpperThreshold());
vtkSmartPointer<vtkImageStencil> stencil = vtkSmartPointer<vtkImageStencil>::New();
stencil->SetBackgroundInput(shiftScale->GetOutput());
stencil->SetStencil(imageToImageStencil->GetOutput());
stencil->SetInput(image);
stencil->ReverseStencilOn();
stencil->Update();
2014年07月20日 05点07分 10
level 12
rabbitbride 楼主
这里用这个设置透明度:
vtkSmartPointer<vtkImageShiftScale> shiftScale =
vtkSmartPointer<vtkImageShiftScale>::New();
shiftScale->SetInputConnection(reader->GetOutputPort());
shiftScale->SetScale(.6);
2014年07月20日 05点07分 11
level 12
rabbitbride 楼主
vtkImageViewer2做显示~
vtkSmartPointer<vtkImageViewer2> view2 =
vtkSmartPointer<vtkImageViewer2>::New();
view2->SetInput(stencil->GetOutput());
view2->SetupInteractor(renderWindowInteractor);
view2->Render();
2014年07月20日 05点07分 12
level 12
rabbitbride 楼主
Mark方法:4:vtkImageBlend 这个是在方法一种的延生
2014年07月20日 06点07分 13
vtkImageAppend
2014年07月20日 07点07分
vtkImageAppendComponents
2014年07月20日 07点07分
level 12
rabbitbride 楼主
vtkSmartPointer<vtkImageBlend> blend =
vtkSmartPointer<vtkImageBlend>::New();
blend->SetInput(0,image);
blend->SetInput(1,mapTransparency->GetOutput());
blend->SetInput(2,mapTransparency2->GetOutput());
blend->SetOpacity(0,.9);
blend->SetOpacity(1,.5);
blend->SetOpacity(2,.5);
blend->Update();
2014年07月20日 07点07分 14
弱弱的问下,vtk6.3版本SetInputData传的数据都是vtkImageData为什么会报错,vtkImageData能转换为vtkImageStencilData吗,如果可以怎么把数据copy过去?谢谢啦
2015年12月30日 05点12分
@hncjxyzjdjuan 能贴出来报什么错吗?看看。那个,我用5.8是不是落伍了[黑线]
2015年12月30日 09点12分
@rabbitbride 报错贴在楼下了,这里字数受限,不会整[委屈]
2015年12月31日 08点12分
level 12
rabbitbride 楼主
vtkSmartPointer<vtkImageViewer2> view2 =
vtkSmartPointer<vtkImageViewer2>::New();
view2->SetInputConnection(blend->GetOutputPort());
view2->SetupInteractor(renderWindowInteractor);
view2->Render();
2014年07月20日 07点07分 15
level 12
rabbitbride 楼主
Mark方法5:vtkImageStack
demo中是与vtkImageSlice一起用。
有时间继续~
2014年07月20日 07点07分 16
level 12
rabbitbride 楼主
2014年07月20日 07点07分 17
level 12
[真棒]
2015年03月20日 00点03分 19
level 10
[真棒]
2015年12月31日 00点12分 20
1 2 尾页