Hi Felix,

I noticed two thing in your code:

First of all you are setting the spacing of your original image to the plane. 
This could be a problem since the spacing is recalculated in case of a rotated 
image volume.
Next thing is that you are setting the bounds of the original image which also 
could be a problem since the bounds of the plane are changed either after a 
rotation.

You can try the following for plane initialization:

 cutterPlaneTopRight->InitializeStandardPlane(rightToCenter, down);
 cutterPlaneTopRight->SetOrigin(p1);

without setting the bounds.

Regards
Andreas



On 14.01.2013, at 16:11, Félix C. Morency wrote:

> Andreas,
> 
> Thank you for your anwser, The solution in WriteBackSegmentationResult is 
> great if you PlaneGeometry is aligned with the current axis. However, this is 
> not my case.
> 
> I define my PlaneGeometry from a T-shaped targed placed in the sagittal view 
> [1]. The plane you see is created using
> 
>         mitk::Point3D p1 = figure->GetWorldControlPoint(0);
>         mitk::Point3D p2 = figure->GetWorldControlPoint(1);
>         mitk::Point3D center2D = figure->GetWorldControlPoint(2);
> 
>         //1.1 Setup direction vectors
>         mitk::Vector3D rightToCenter = p2 - p1;
>         mitk::Vector3D centerToTop = p1 - center2D;
>         centerToTop.Normalize();
>         rightToCenter.Normalize();
> 
>         mitk::Vector3D down = itk::CrossProduct(centerToRight,
>           centerToTop);
>         down.Normalize();
> 
>         //1.2 Initialize the planes
>         mitk::PlaneGeometry::Pointer cutterPlaneTopRight =
>           mitk::PlaneGeometry::New();
>        
>         cutterPlaneTopRight->InitializeStandardPlane(rightToCenter,
>           down, &image->GetGeometry()->GetSpacing());
>         cutterPlaneTopRight->SetOrigin(p1);
>         cutterPlaneTopRight->SetBounds(image->GetGeometry()->GetBounds());
> 
> 
>  where center2D is the top-most point in the image, p2 is the right-most 
> point and p1 is the intersection point of the T. As you can see, the plane 
> creation works just fine. The plane creation also works if the target is 
> rotated [2].
> 
> However, if the axis of the volume are rotated, the plane has holes in it [3] 
> even if the target itself is not rotated. The plane creation is done using
> 
>         mitk::ExtractSliceFilter::Pointer slicer =
>           mitk::ExtractSliceFilter::New();
>         slicer->SetInput(image);
>         slicer->SetWorldGeometry(cutterPlaneTopRight);
>         slicer->SetVtkOutputRequest(true);
>         slicer->Modified();
>         slicer->Update();
> 
>         vtkSmartPointer<vtkImageData> sliceTopRight =
>           vtkSmartPointer<vtkImageData>::New();
>         sliceTopRight = slicer->GetVtkOutput();
> 
>         int* dims = sliceTopRight->GetDimensions();
>         for (int z = 0; z < dims[2]; ++z)
>         {
>           for (int y = 0; y < dims[1]; ++y)
>           {
>             for (int x = 0; x < dims[0]; ++x)
>             {
>               sliceTopRight->SetScalarComponentFromDouble(x,y,z,0,1.0);
>             }
>           }
>         }
> 
>         vtkSmartPointer<mitkVtkImageOverwrite> resliceIdx =
>           vtkSmartPointer<mitkVtkImageOverwrite>::New();
>         resliceIdx->SetOverwriteMode(true);
>         resliceIdx->SetInputSlice(sliceTopRight);
>         resliceIdx->Modified();
> 
>         mitk::ExtractSliceFilter::Pointer overwriter =
>           mitk::ExtractSliceFilter::New(resliceIdx);
>         overwriter->SetInput(image);
>         overwriter->SetWorldGeometry(cutterPlaneTopRight);
>         overwriter->SetVtkOutputRequest(true);
>         overwriter->Modified();
>         overwriter->Update();
> 
>   [1]: http://imgur.com/RPTo2
>   [2]: http://imgur.com/JXFyx
>   [3]: http://imgur.com/j05lH
> 
> Regards,
> -F
> 
> 
> On Mon, Jan 14, 2013 at 3:43 AM, Fetzer, Andreas 
> <[email protected]> wrote:
> Hi Felix,
> 
> how do you get the PlaneGeometry which is set for writing the slice? You 
> should retrieve the according PlaneGeometry like it is done e.g. in the 
> mitkSegTool2D::WriteBackSegmentationResult. If this doesn't solve your 
> problem it would be helpful if you could post your code here.
> 
> Regards
> Andreas
> 
> On 11.01.2013, at 21:15, Félix C. Morency wrote:
> 
> > Hi list,
> >
> > I am trying to overwrite a slice of arbitrary orientation in a volume and 
> > I'm facing some issues. I based my code on the 
> > mitkOverwriteSliceFilterObliquePlaneTest. When my axis planes are oriented 
> > by default (axial/coronal/sagittal), everything's going fine and the slice 
> > is written properly [1].
> >
> > However, if I change the plane orientations using the coupled crosshair 
> > rotation tool, my slice is full of holes [2]. I tried playing with 
> > SetInPlaneResampleExtentByGeometry and with SetResliceTransformByGeometry 
> > without any luck. My initial guess is that it has something to do with 
> > slice sampling and current geometry. Does anyone have a clue on how to 
> > solve my problem? The objective is to fill the entire slice with the same 
> > value.
> >
> >   [1]: http://imgur.com/Ru4Nm
> >   [2]: http://imgur.com/FzCwx
> >
> > Regards,
> > --
> > Félix C. Morency, M.Sc.
> > Plateforme d’analyse et de visualisation d’images
> > Centre Hospitalier Universitaire de Sherbrooke
> > Centre de recherche clinique Étienne-Le Bel
> > Local Z5-3031 | 819.346.1110 ext 16634
> > ------------------------------------------------------------------------------
> > Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
> > much more. Get web development skills now with LearnDevNow -
> > 350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
> > SALE $99.99 this month only -- learn more at:
> > http://p.sf.net/sfu/learnmore_122812_______________________________________________
> > mitk-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/mitk-users
> 
> 
> 
> 
> -- 
> -- 
> Félix C. Morency, M.Sc.
> Plateforme d’analyse et de visualisation d’images
> Centre Hospitalier Universitaire de Sherbrooke
> Centre de recherche clinique Étienne-Le Bel
> Local Z5-3031 | 819.346.1110 ext 16634


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to