[vtkusers] Problems using vtkConnectivityFilter on Image Data
Darya Yelshyna
darya.yelshyna at yahoo.com
Fri Nov 6 18:10:52 EST 2015
Hi David,
Thank you very much for your help, it worked now with ThresholdByUpper! Now I have only one more question. Is it possible to bind C++ implementation of VTK classes outside the VTK distribution (for example this one) to a Python script?
Best regads,Darya
On Friday, November 6, 2015 10:37 PM, David Gobbi <david.gobbi at gmail.com> wrote:
Hi Darya,
The math for the indices should be the other way around.If you already have the voxel indices, then compute the pointcoordinates like this:
x = origin[0] + xyz[0]*spacing[0]etc. for y and zseed.InsertNextPoint(x,y,z)
Also, of course, if ThresholdByUpper(1) doesn't work, then alsotry ThresholdByLower(1). The names of those two methods alwaysconfuses me, and I always forget which method does what...
- David
On Fri, Nov 6, 2015 at 12:40 PM, Darya Yelshyna <darya.yelshyna at yahoo.com> wrote:
I guess I figured out what are real coordinates, but I still don't get my connected region. This is my code:
seed = vtk.vtkPoints()i = (xyz[0] - origin[0]) / spacing[0]j = (xyz[1] - origin[1]) / spacing[1]k = (xyz[2] - origin[2]) / spacing[2]seed.InsertNextPoint(i, j, k)
connectFilter = vtk.vtkImageThresholdConnectivity()connectFilter.SetInputConnection(dilateFilter.GetOutputPort())connectFilter.SetSeedPoints(seed)connectFilter.ThresholdByUpper(1)connectFilter.ReplaceInOn()connectFilter.SetInValue(1)connectFilter.ReplaceOutOn()connectFilter.SetOutValue(0)connectFilter.Update()
My image is a vtkImageData CT head scan with values 0 and 1. The value 1 corresponds to segmented head and some artifacts, which I want to remove (they are disconnected from the head). My xyz point is a voxel that lies within the head region ( I checked, its value is 1 in the dilateFilter output). The output from vtkImageThresholdConnectivity is a image filled with 0. What am I doing wrong?
Thank you all in advance.
Best regards,Darya
On Friday, November 6, 2015 7:06 PM, Darya Yelshyna <darya.yelshyna at yahoo.com> wrote:
Thank you so much for your reply!I am using Python wrapping to access VTK and I don't know how to add vtkImageConnectivityFilter. I am trying to use vtkImageThresholdConnectivity and I am a little confused with setting the seed. The seeds should be in real data coordinates, not in voxel index locations. How do I retrieve these coordinates from X, Y and Z indexes?
Sorry for inconveniece.
Best regards,Darya
On Friday, November 6, 2015 5:49 PM, David Gobbi <david.gobbi at gmail.com> wrote:
Hi Darya,
The vtkConnectivityFilter is meant for use on mesh data. It suspectthat when you used it on image data, it caused your computer to runout of memory.
I have a connectivity filter that I wrote specifically for images, but itis on github. I haven't contributed it to VTK yet. But you can try itif you are interested:
https://github.com/dgobbi/AIRS/tree/master/ImageSegmentation
You can also try the vtkImageThresholdConnectivity filter that comeswith VTK:http://www.vtk.org/doc/nightly/html/classvtkImageThresholdConnectivity.html
- David
On Fri, Nov 6, 2015 at 10:36 AM, Darya Yelshyna via vtkusers <vtkusers at vtk.org> wrote:
Hi everyone!
I was trying to apply vtkConnectivityFilter to vtkImageData, but the program crashes at this step."This application has requested the Runtime to terminate it in an unusual way." This is this a part of my code:
dilateFilter = vtk.vtkImageContinuousDilate3D()dilateFilter.SetKernelSize(5, 5, 5)dilateFilter.SetInputConnection(logic2.GetOutputPort())dilateFilter.Update()
connectFilter = vtk.vtkConnectivityFilter()connectFilter.SetExtractionModeToLargestRegion()connectFilter.SetInputConnection(dilateFilter.GetOutputPort())connectFilter.Update()
I don't understand what is happening.. Can anybody help me?
Thank you in advance.
Best regards,Darya
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20151106/f40fe8c6/attachment.html>
More information about the vtkusers
mailing list