[vtkusers] vtkPolydata contour to image
Sara Rolfe
smrolfe at u.washington.edu
Sat Mar 12 10:37:38 EST 2011
Sorry, I just realized there was a typo in the code I sent, please
look at this version.
Thanks,
Sara
// Draw contours around the segmented regions
vtkSmartPointer<vtkContourFilter> contour =
vtkSmartPointer<vtkContourFilter>::New();
contour->SetInput( vtkImporter->GetOutput() );
contour->SetValue(0, 128); // edges of a binary image with
values 0,255
contour->Update();
// get list of points from polydata
vtkPolyData * polyData = contour->GetOutput();
const unsigned int numberOfPoints = polyData->GetNumberOfPoints();
cout << "Numbers of points: " << numberOfPoints << endl;
vtkPoints * vtkpoints = polyData->GetPoints();
//allocate itk image to be used as a property mask for later region
merging
MaskImageType::Pointer propertyMask = MaskImageType::New();
propertyMask->SetRegions( inputImage->GetLargestPossibleRegion() );
propertyMask->SetOrigin( inputImage->GetOrigin() );
propertyMask->SetSpacing( inputImage->GetSpacing() );
propertyMask->SetDirection( inputImage->GetDirection() );
propertyMask->Allocate();
// iterate through image
double defpoint[3];
MaskImageType::IndexType index;
MaskImageType::SpacingType spacing = inputImage->GetSpacing();
for(unsigned int p =0; p < numberOfPoints; p++)
{
vtkpoints->GetPoint( p, defpoint ); // get point in polydata mesh
of surface
index[0] = defpoint[0]/spacing[0]; // convert polydata index to
field index
index[1] = defpoint[1]/spacing[1];
index[2] = defpoint[2]/spacing[2];
propertyMask->SetPixel( index, 255 );
}
On Mar 12, 2011, at 7:31 AM, Sara Rolfe wrote:
> Hello,
>
> In case it helps to see what I did, I am including the code below.
> However, I suspect this is not the best approach.
>
> Thanks,
> Sara
>
> // Draw contours around the segmented regions
> vtkSmartPointer<vtkContourFilter> contour =
> vtkSmartPointer<vtkContourFilter>::New();
> contour->SetInput( vtkImporter->GetOutput() );
> contour->SetValue(0, 128); // edges of a binary image with
> values 0,255
> contour->Update();
>
> // get list of points from polydata
> vtkPolyData * polyData = contour->GetOutput();
> const unsigned int numberOfPoints = polyData->GetNumberOfCells();
> cout << "Numbers of points: " << numberOfPoints << endl;
> vtkPoints * vtkpoints = polyData->GetCells();
>
>
> //allocate itk image to be used as a property mask for later region
> merging
> MaskImageType::Pointer propertyMask = MaskImageType::New();
> propertyMask->SetRegions( inputImage->GetLargestPossibleRegion() );
> propertyMask->SetOrigin( inputImage->GetOrigin() );
> propertyMask->SetSpacing( inputImage->GetSpacing() );
> propertyMask->SetDirection( inputImage->GetDirection() );
> propertyMask->Allocate();
>
> // iterate through image
> double defpoint[3];
> MaskImageType::IndexType index;
> MaskImageType::SpacingType spacing = inputImage->GetSpacing();
>
> for(unsigned int p =0; p < numberOfPoints; p++)
> {
> vtkpoints->GetCell( p, defpoint ); // get point in polydata
> mesh of surface
>
> index[0] = defpoint[0]/spacing[0]; // convert polydata index to
> field index
> index[1] = defpoint[1]/spacing[1];
> index[2] = defpoint[2]/spacing[2];
>
> propertyMask->SetPixel( index, 255 );
> }
>
> On Mar 11, 2011, at 3:42 PM, Sara Rolfe wrote:
>
>> Hello,
>>
>> I have a vtkPolydata contour that I'd like to convert into image
>> data. This is similar to the example here:
>> VTK/Examples/Cxx/PolyData/PolyDataContourToImageData
>>
>> except that I don't want the image contour to be filled. I thought
>> that I could get around this by using polyData->GetPoints,
>> iterating through the point list, converting to an ITK image index,
>> and assigning the image data value. However, I get the ridge
>> artifact shown in the image I've attached.
>>
>> Please let me know if you have any ideas on the optimal method to
>> solve this problem.
>>
>> Thanks,
>> Sara
>>
>> <Picture 10.png>
>> _______________________________________________
>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110312/4466430d/attachment.htm>
More information about the vtkusers
mailing list