[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