[vtkusers] vtkDICOMImageReader -> vtkCutter -> vtkMarchingCubes
superzz
jxdw_zlf at yahoo.com.cn
Thu Dec 24 22:30:26 EST 2009
Hello Jinyoung Hwang
The data pipeline sequence is not what I want. Your code MarchingCubes the
data from reader first, then cut it. I need to cut the data from reader
first, then doing MarchingCube.
Thanks again.
superZZ
Jinyoung Hwang wrote:
>
> Hello superZZ,
>
> Actually I have no 3D DICOM file, I cannot test my code.
> But I tested 2D DICOM file (single slice) as below.
>
> --------------------------------------------------
>
> // data load
> vtkSmartPointer<vtkDICOMImageReader> reader =
> vtkSmartPointer<vtkDICOMImageReader>::New();
> reader->SetFileName("CT-MONO2-12-lomb-an2"); // this is a single slice
> data
> reader->Update();
>
> vtkSmartPointer<vtkImageCast> img = vtkSmartPointer<vtkImageCast>::New();
> img->SetInputConnection(reader->GetOutputPort());
> img->SetOutputScalarTypeToUnsignedChar();
>
> // MC is used to display in 3D
> vtkSmartPointer<vtkMarchingCubes> cubes =
> vtkSmartPointer<vtkMarchingCubes>::New();
> cubes->SetInputConnection(img->GetOutputPort());
> cubes->ComputeNormalsOn();
> cubes->ComputeGradientsOn();
> cubes->SetValue(0, 20);
> cubes->Update();
>
> vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();
> plane->SetOrigin(10,10,0);
> plane->SetNormal(1,1,0);
>
> vtkSmartPointer<vtkCutter> cutter = vtkSmartPointer<vtkCutter>::New();
> cutter->SetInputConnection(cubes->GetOutputPort());
> cutter->SetCutFunction(plane);
> cutter->GenerateCutScalarsOff();
> cutter->SetValue(0, 0.5);
> cutter->Update();
>
> // create a mapper
> vtkSmartPointer<vtkPolyDataMapper> mapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> mapper->SetInputConnection(cutter->GetOutputPort());
> mapper->ScalarVisibilityOn();
> mapper->Update();
> // create an actor
> vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
> actor->SetMapper(mapper);
> ----------------
>
> Something's wrong?
>
> Jinyoung
>
>
>
>
>
>
> 2009/12/25 Jinyoung Hwang <hwangjinyoung at gmail.com>
>
>> Hi vtkers,
>>
>> I uploaded a method to read a .vtk file in
>> http://www.vtk.org/Wiki/Read_a_.vtk_file.
>> Besides, I linked "test.vtk" and raw data on my ftp, so you can freely
>> access to download.
>> It's my first time to post my code in wiki, some mistakes might be
>> happened. :)
>>
>> Happy new year.
>>
>> Jinyoung
>>
>> 2009/12/24 Jinyoung Hwang <hwangjinyoung at gmail.com>
>>
>> To David,
>>>
>>> How can I send my codes and data?
>>>
>>> Jinyoung
>>>
>>>
>>>
>>> 2009/12/24 KS Jothybasu <jothybasu at gmail.com>
>>>
>>> Thanks Jinyoung!
>>>>
>>>> I wish all the vtkusers list members a Merry Christmas and a very
>>>> happy
>>>> New Year!
>>>>
>>>> Best regards
>>>>
>>>> Jothy
>>>>
>>>>
>>>> On Thu, Dec 24, 2009 at 10:09 AM, KS Jothybasu
>>>> <jothybasu at gmail.com>wrote:
>>>>
>>>>> Thanks!
>>>>>
>>>>> Does the SetOrigin(100,0,0) mean a sagitall cut or cut in the X-plane
>>>>> at
>>>>> 100th pixel and what does SetValue(0, 0.5) mean?
>>>>>
>>>>> Many thanks again
>>>>>
>>>>> Jothy
>>>>>
>>>>> On Thu, Dec 24, 2009 at 3:50 AM, Jinyoung Hwang <
>>>>> hwangjinyoung at gmail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I made an example you want, but it may not be.
>>>>>> If not, repost again, then other will help you.
>>>>>>
>>>>>> Jinyoung
>>>>>>
>>>>>>
>>>>>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>>> // data load
>>>>>> vtkSmartPointer<vtkStructuredPointsReader> reader =
>>>>>> vtkSmartPointer<vtkStructuredPointsReader>::New();
>>>>>> reader->SetFileName("test.vtk");
>>>>>> reader->Update();
>>>>>> // MC is used to display in 3D
>>>>>> vtkSmartPointer<vtkMarchingCubes> cubes =
>>>>>> vtkSmartPointer<vtkMarchingCubes>::New();
>>>>>> cubes->SetInputConnection(reader->GetOutputPort());
>>>>>> cubes->ComputeNormalsOn();
>>>>>> cubes->ComputeGradientsOn();
>>>>>> cubes->SetValue(0, 20);
>>>>>> cubes->Update();
>>>>>> // create a plane, and specify it
>>>>>> vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();
>>>>>> plane->SetOrigin(100,0,0);
>>>>>> plane->SetNormal(1,0,0);
>>>>>> // create a cutter
>>>>>> vtkSmartPointer<vtkCutter> cutter =
>>>>>> vtkSmartPointer<vtkCutter>::New();
>>>>>> cutter->SetInputConnection(cubes->GetOutputPort());
>>>>>> cutter->SetCutFunction(plane);
>>>>>> cutter->GenerateCutScalarsOn();
>>>>>> cutter->SetValue(0, 0.5);
>>>>>> // create a mapper
>>>>>> vtkSmartPointer<vtkPolyDataMapper> mapper =
>>>>>> vtkSmartPointer<vtkPolyDataMapper>::New();
>>>>>> mapper->SetInputConnection(cutter->GetOutputPort());
>>>>>> mapper->ScalarVisibilityOn();
>>>>>> mapper->Update();
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Powered by www.kitware.com
>>>>>>
>>>>>> Visit other Kitware open-source projects at
>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>
>>>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>
>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
--
View this message in context: http://old.nabble.com/vtkDICOMImageReader--%3E-vtkCutter--%3E-vtkMarchingCubes-tp26902455p26918808.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list