[vtkusers] How to crop a vtkImageData volume?

allan.martin at utoronto.ca allan.martin at utoronto.ca
Mon Sep 22 09:35:07 EDT 2008


Thanks... Actually, I got it working.  I didn't realize that  
vtkExtractVOI was 0-based (and I also forgot to convert from voxel  
indices to actual coordinates).  Works great now, so thanks again.

Cheers,
Al


Quoting Amy Squillacote <ahs at cfdrc.com>:

> Hi Al,
>
> I'm copying this back to the vtkusers list. Please keep the discussion
> on the list so other people can contribute to the conversation and so
> the discussion is archived.
>
> - Amy
>
> allan.martin at utoronto.ca wrote:
>> Hey Amy,
>>
>> Thanks for your help.  Do you have a brief example of how to use   
>> this? When I do the following, it doesn't seem to get the right   
>> region.  I checked the bounds values and they look to be correct (a  
>>  subset of the original VoxelData bounds), so I'm rather confused.   
>>  Thoughts?
>>
>> vtkPlanes * boxVOIPlanes = vtkPlanes::New();
>> boxVOI->GetPlanes(boxVOIPlanes);
>> vtkExtractVOI * clipDataSet = vtkExtractVOI::New();
>> clipDataSet->SetInput(VoxelData);
>> double* bounds = boxVOIPlanes->GetPoints()->GetBounds();
>> clipDataSet->SetVOI((int)bounds[0],(int)bounds[1],(int)bounds[2],
>>                    (int)bounds[3],(int)bounds[4],(int)bounds[5]);
>> clipDataSet->Update();
>> mc->SetInput(clipDataSet->GetOutput());
>>
>> Cheers,
>> Al
>>
>>
>>
>> Quoting Amy Squillacote <ahs at cfdrc.com>:
>>
>>> Hi Al,
>>>
>>> Assuming that you're cropping planes are aligned with the axes of the
>>> vtkImageData volume, you could try using vtkExtractVOI instead. Its
>>> output is still a vtkImageData, so you wouldn't have a problem with
>>> passing it to vtkMarchingCubes.
>>>
>>> - Amy
>>>
>>> allan.martin at utoronto.ca wrote:
>>>> Hi all,
>>>>
>>>> I'm trying to take a vtkImageData volume and crop it with a box    
>>>> widget to make a smaller volume, so that when I subsequently   
>>>> render  an isosurface it isn't so slow.  I think I'm close, but I  
>>>>  can't  seem to get something that vtkMarchingCubes will eat (it   
>>>> wants a  vtkImageData object, and I don't know how to copy my    
>>>> vtkUnstructuredGrid back to a vtkImageData object).  Anyone have   
>>>> an  example of how to do this?
>>>>
>>>> Here is my broken code:
>>>>
>>>> //Start with a volume, and make it smaller with a box widget
>>>> boxVOI = vtkBoxWidget::New();
>>>> VoxelData = vtkImageData::New();
>>>> ...
>>>> //Now take the region defined by the box widget, and make a new    
>>>> volume data set
>>>> //that is smaller
>>>> vtkPlanes* boxVOIPlanes = vtkPlanes::New();
>>>> boxVOI->GetPlanes(boxVOIPlanes);
>>>> vtkExtractGeometry* clipDataSet = vtkExtractGeometry::New();
>>>> clipDataSet->SetInput(VoxelData);
>>>> clipDataSet->SetImplicitFunction(boxVOIPlanes);
>>>> vtkDataSet* output = (vtkDataSet*) clipDataSet->GetOutput();
>>>> vtkImageData* croppedVoxelData = vtkImageData::New();
>>>>
>>>> //This copy doesn't seem to be sufficient as it doesn't copy the   
>>>>  number of dimensions and other vtkImageData fields
>>>> croppedVoxelData->ShallowCopy(output);
>>>> croppedVoxelData->AllocateScalars(); //It complains if scalars    
>>>> aren't allocated
>>>> mc->SetInput(croppedVoxelData);
>>>>
>>>>
>>>> Thanks for your help,
>>>>
>>>> Al Martin
>>>>
>>>> _______________________________________________
>>>> This is the private VTK discussion list.
>>>> Please keep messages on-topic. Check the FAQ at:    
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>
>>> -- 
>>> Amy Squillacote                    Phone: (256) 726-4839
>>> Computer Scientist                 Fax: (256) 726-4806
>>> CFD Research Corporation           Web: http://www.cfdrc.com
>>> 215 Wynn Drive, Suite 501
>>> Huntsville, AL  35805
>>
>>
>>
>> Regards,
>>
>> Al Martin
>>
>>
>>
>
> -- 
> Amy Squillacote                    Phone: (256) 726-4839
> Computer Scientist                 Fax: (256) 726-4806
> CFD Research Corporation           Web: http://www.cfdrc.com
> 215 Wynn Drive, Suite 501
> Huntsville, AL  35805



Regards,

Al Martin




More information about the vtkusers mailing list