[Insight-users] Re: multimiresregistration thanks, vtk!
Christos Panagiotou
C.Panagiotou at cs.ucl.ac.uk
Mon, 23 Feb 2004 07:22:11 +0000
luis
in case i forget something somewhere else, i ll just paste the whole source
(both readers dont work :( )
----------------------------------------------------------------------------------------
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageReader2.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
#include "vtkMetaImageReader.h"
#include "vtkImageData.h"
#include "vtkDataSet.h"
#include "vtkPolyData.h"
int main (int argc, char **argv)
{
//const char *fname =
"/home/christos/PhD/Data/raw/Brain1Rot/Brain/brainweb1e1a10f20Rot10Tx15.raw";
const char *metafname =
"/home/christos/PhD/Data/raw/Brain1Rot/Brain/brainweb1e1a10f20Rot10Tx15.mha";
vtkRenderer *aRenderer = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(aRenderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
/*
vtkImageReader2 *v = vtkImageReader2::New();
v->SetDataExtent(0,180,0,216,0,180 );
v->SetDataByteOrderToLittleEndian();
v->SetDataScalarTypeToUnsignedChar();
v->SetFileName(fname);
v->SetFileDimensionality(3);
v->SetDataSpacing (1.0,1.0,1.0);
v->DebugOn();
v->Update();
*/
vtkMetaImageReader *meta = vtkMetaImageReader::New();
meta->SetFileName(metafname);
vtkContourFilter *skinExtractor = vtkContourFilter::New();
//skinExtractor->SetInput(v->GetOutput());
skinExtractor->SetInput(meta->GetOutput());
//skinExtractor->SetValue(0, 255);
skinExtractor->ComputeNormalsOff();
skinExtractor->ComputeGradientsOff();
skinExtractor->Update();
vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();
skinNormals->SetInput(skinExtractor->GetOutput());
skinNormals->SetFeatureAngle(60.0);
skinNormals->Update();
vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();
skinMapper->SetInput(skinNormals->GetOutput());
skinMapper->ScalarVisibilityOn();
skinMapper->SetScalarModeToUsePointFieldData();
skinMapper->DebugOn();
skinMapper->Update();
vtkActor *skin = vtkActor::New();
skin->SetMapper(skinMapper);
vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
//outlineData->SetInput(v->GetOutput());
outlineData->SetInput(meta->GetOutput());
vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
mapOutline->SetInput(outlineData->GetOutput());
vtkActor *outline = vtkActor::New();
outline->SetMapper(mapOutline);
outline->GetProperty()->SetColor(0,0,0);
aRenderer->AddActor(outline);
aRenderer->AddActor(skin);
aRenderer->ResetCamera ();
aRenderer->SetBackground(1,1,1);
renWin->SetSize(640, 480);
aRenderer->ResetCameraClippingRange();
iren->Initialize();
iren->Start();
//v->Delete();
meta->Delete();
skinExtractor->Delete();
skinNormals->Delete();
skinMapper->Delete();
skin->Delete();
outlineData->Delete();
mapOutline->Delete();
outline->Delete();
iren->Delete();
renWin->Delete();
aRenderer->Delete();
}
--------------------------------------------------------
Luis Ibanez wrote:
>
> Hi Christos,
>
> Is there any particular reason why you are forcing the
> casting the output of the vtkMetaImageReader ?
>
>> vtkContourFilter *skinExtractor = vtkContourFilter::New();
>> skinExtractor->SetInput((vtkDataSet *)meta->GetOutput());
>
>
>
> You shouldn't need to cast this output.
>
>
> Please let us know,
>
>
> Thanks,
>
>
> Luis
>