[vtkusers] Problem with vtkPolyDataToImageStencil in 5.8
Xiaofeng Z
xf10036 at hotmail.com
Fri Mar 9 18:17:13 EST 2012
This is a well known issue in the community that slice thickness is not slice spacing and some software/library get it mixed.
On Mar 9, 2012, at 4:27 PM, "Jothybasu Selvaraj" <jothybasu at gmail.com> wrote:
> And vtkDICOMImageReader depends on the slice thickness tag it seems, that's why the imageData->GetSpacing()
>
> give 3.0 mm, which is wrong in this case.
>
> Jothy
>
> On Fri, Mar 9, 2012 at 9:24 PM, Jothybasu Selvaraj <jothybasu at gmail.com> wrote:
> Hi David,
>
> Some stunning revelation here!
>
> The problem is because of the inconsistence between the DICOM tags Slice thickness and ImagePositionPatient
>
> Slice thickness says it's 3mm, but the z difference between two slices according to their IPP is 2.5 mm.
>
> If I set the extrude->SetVector(0,0,-2.5).
>
> It works perfectly!
>
> How can it happen in DICOM? Probably, that's the reason why other datasets worked form me with the new vtkPolydataToImageStencil.
>
> Can someone shed light on this?
>
> Many thanks again
>
> Jothy
>
>
>
>
> On Fri, Mar 9, 2012 at 8:36 PM, David Gobbi <david.gobbi at gmail.com> wrote:
> Hi Jothy,
>
> Remove the extrude filter from the pipeline.
>
> - David
>
>
> On Fri, Mar 9, 2012 at 1:29 PM, Jothybasu Selvaraj <jothybasu at gmail.com> wrote:
> > Hi David,
> >
> > I am still not able to fix this issue.
> >
> > This is how I create the polydata and other pipeline.
> >
> > vtkSmartPointer<vtkPoints> points =
> >
> > vtkSmartPointer<vtkPoints>::New();
> >
> > vtkSmartPointer<vtkCellArray> cells =
> >
> > vtkSmartPointer<vtkCellArray>::New();
> >
> > points->SetNumberOfPoints(npts+1);
> >
> > cells->InsertNextCell(npts+1);
> >
> > for(int p=0;p<npts;p++)
> >
> > {
> >
> >
> >
> > points->SetPoint( p, Xp, Yp,Zp );
> >
> > cells->InsertCellPoint( p );
> >
> > }
> >
> > cells->InsertCellPoint(npts);
> >
> > points->SetPoint(npts,pts[0],pts[1],pts[2]);//close contour
> >
> >
> > vtkSmartPointer<vtkPolyData>polydataContour=
> >
> > vtkSmartPointer<vtkPolyData>::New();
> >
> > polydataContour->Initialize();
> >
> > polydataContour->SetLines(cells);
> >
> > polydataContour->SetPoints(points);
> >
> >
> > //Here all contours are appended to vtkAppendPolydataFilter
> >
> > vtkSmartPointer<vtkPolyDataToImageStencil> sts=
> > vtkSmartPointer<vtkPolyDataToImageStencil>::New();
> > sts->SetTolerance(1e-6);//very important
> > sts->SetInformationInput(binary_image);
> > vtkSmartPointer<vtkLinearExtrusionFilter> extrude=
> > vtkSmartPointer<vtkLinearExtrusionFilter>::New();
> > extrude->SetInput(appender->GetOutput());
> > extrude->CappingOff();//also tried ON
> > extrude->SetVector(0, 0,-zSpacing);//Correct Z spacing is
> > important
> > //qDebug()<<-zSpacing<<"-ve zSpacing";
> > sts->SetInput(extrude->GetOutput());
> >
> >
> > //qDebug()<<t->currentTime()<<"Stencil start";
> > vtkSmartPointer<vtkImageStencil> stencil=
> > vtkSmartPointer<vtkImageStencil>::New();
> > stencil->SetStencil(sts->GetOutput());
> > stencil->SetInput(binary_image);
> > stencil->ReverseStencilOn();
> > stencil->Update();
> >
> >
> > I am able to visualize the contour by setting appendFilter->GetOutput() to a
> > vtkPolyDataMapper.
> >
> > Is there any thing wrong.
> >
> > Thanks very much!
> >
> > Jothy
> >
> >
> >
> >
> > On Tue, Mar 6, 2012 at 3:48 PM, David Gobbi <david.gobbi at gmail.com> wrote:
> >>
> >> You'd have to use SetLines() instead of SetPolys(). And for
> >> polylines, the final point in the polyline has to connect to the first
> >> line to create a closed loop, so polylines cell arrays need an extra
> >> entry as compared to polygon cell arrays.
> >>
> >> On Tue, Mar 6, 2012 at 8:36 AM, Jothybasu Selvaraj <jothybasu at gmail.com>
> >> wrote:
> >> > I ma creating the polydat per conoutr like this
> >> >
> >> > vtkSmartPointer<vtkPolyData>polydataContour=
> >> >
> >> > vtkSmartPointer<vtkPolyData>::New();
> >> >
> >> > polydataContour->Initialize();
> >> >
> >> > polydataContour->SetPolys( cells );//vtkCellArray
> >> >
> >> > polydataContour->SetPoints( points);//vtkPoints
> >> >
> >> >
> >> > How should I do that?
> >> >
> >> > Thanks very much
> >> >
> >> > Jothy
> >> >
> >> >
> >> > On Tue, Mar 6, 2012 at 3:31 PM, David Gobbi <david.gobbi at gmail.com>
> >> > wrote:
> >> >>
> >> >> The contours must be polylines, not polygons, or it won't work.
> >> >>
> >> >> On Tue, Mar 6, 2012 at 6:29 AM, Jothybasu Selvaraj
> >> >> <jothybasu at gmail.com>
> >> >> wrote:
> >> >> > Yes, I have one contour for each z slice as a vtkPolyData. I will try
> >> >> > removing that.
> >> >> >
> >> >> > Thanks
> >> >> >
> >> >> >
> >> >> > On Tue, Mar 6, 2012 at 1:26 PM, David Gobbi <david.gobbi at gmail.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> Do you have one contour for each Z slice? If so, then try removing
> >> >> >> the Extrude filter from your pipeline.
> >> >> >>
> >> >> >>
> >> >> >> On Tue, Mar 6, 2012 at 2:51 AM, Jothybasu Selvaraj
> >> >> >> <jothybasu at gmail.com>
> >> >> >> wrote:
> >> >> >> > Another point here,
> >> >> >> >
> >> >> >> > I am creating a vtkPolyData for each contour and then adding it to
> >> >> >> > the
> >> >> >> > vtkAppendPolydataFilter, then the output of vtkAppenPolydataFilter
> >> >> >> > is
> >> >> >> > set as
> >> >> >> > input to vtkPolydataToImageStencil.
> >> >> >> >
> >> >> >> > Could this make any difference?
> >> >> >> >
> >> >> >> > Thanks
> >> >> >> >
> >> >> >> > Jothy
> >> >> >> >
> >> >> >> >
> >> >> >> > On Mon, Mar 5, 2012 at 7:49 PM, Jothybasu Selvaraj
> >> >> >> > <jothybasu at gmail.com>
> >> >> >> > wrote:
> >> >> >> >>
> >> >> >> >> No, it doesn't fix the problem.
> >> >> >> >>
> >> >> >> >> But it seems to work fine for contours with z-spacing in steps of
> >> >> >> >> 1mm.
> >> >> >> >>
> >> >> >> >> It is working well for a dataset with 3mm spacing but fails for
> >> >> >> >> 2.5
> >> >> >> >> mm.
> >> >> >> >>
> >> >> >> >> Maybe I need to test it thoroughly. Can I use those cxx and .h
> >> >> >> >> from
> >> >> >> >> 5.6
> >> >> >> >> in
> >> >> >> >> 5.8, that would be a easy workaround.
> >> >> >> >>
> >> >> >> >> Thanks
> >> >> >> >>
> >> >> >> >> Jothy
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> On Mon, Mar 5, 2012 at 4:01 PM, David Gobbi
> >> >> >> >> <david.gobbi at gmail.com>
> >> >> >> >> wrote:
> >> >> >> >>>
> >> >> >> >>> Hi Jothy,
> >> >> >> >>>
> >> >> >> >>> It underwent significant changes, but the only change I can
> >> >> >> >>> think
> >> >> >> >>> of that might have affected your pipeline is the way that it
> >> >> >> >>> does
> >> >> >> >>> rounding, it used to use a Floor() method that provided a small
> >> >> >> >>> tolerance even if you did SetTolerance(0). Try calling
> >> >> >> >>> SetTolerance(1e-6) on your PolyDataToImageStencil object, it
> >> >> >> >>> might help.
> >> >> >> >>>
> >> >> >> >>> - David
> >> >> >> >>>
> >> >> >> >>> On Mon, Mar 5, 2012 at 3:17 AM, Jothybasu Selvaraj
> >> >> >> >>> <jothybasu at gmail.com>
> >> >> >> >>> wrote:
> >> >> >> >>> > Hi all,
> >> >> >> >>> >
> >> >> >> >>> > I was able to create a mesh using the following pipeline in
> >> >> >> >>> > 5.6
> >> >> >> >>> > and
> >> >> >> >>> > it
> >> >> >> >>> > worked well
> >> >> >> >>> >
> >> >> >> >>> >
> >> >> >> >>> >
> >> >> >> >>> >
> >> >> >> >>> >
> >> >> >> >>> > vtkPolyDataToImageStencil->vtkLinearExtrusionFilter->vtkImageStencil->vtkDiscreteMarchingCubes
> >> >> >> >>> >
> >> >> >> >>> > Now, I have updated vtk to 5.8 and I am getting gaps in the
> >> >> >> >>> > mesh
> >> >> >> >>> > along
> >> >> >> >>> > the z
> >> >> >> >>> > axis. I am really puzzled, I have tried with different data
> >> >> >> >>> > sets
> >> >> >> >>> > as
> >> >> >> >>> > well.
> >> >> >> >>> >
> >> >> >> >>> > I have read somewhere that vtkPolyDataToImageStencil had some
> >> >> >> >>> > changes
> >> >> >> >>> > in
> >> >> >> >>> > 5.8, does it has anything to do with this problem, or am I
> >> >> >> >>> > doing
> >> >> >> >>> > anything wrong?
> >> >> >> >>> >
> >> >> >> >>> > I have contours of constant z-spacing.
> >> >> >> >>> >
> >> >> >> >>> > Any hints?
> >> >> >> >>> >
> >> >> >> >>> > Thanks
> >> >> >> >>> >
> >> >> >> >>> > --
> >> >> >> >>> > Jothy
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> --
> >> >> >> >> Jothy
> >> >> >> >>
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> > --
> >> >> >> > Jothy
> >> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> > --
> >> >> > Jothy
> >> >> >
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > Jothy
> >> >
> >
> >
> >
> >
> > --
> > Jothy
> >
>
>
>
> --
> Jothy
>
>
>
>
> --
> Jothy
>
> _______________________________________________
> 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/20120309/5698a783/attachment.htm>
More information about the vtkusers
mailing list