Hi Martin,

you can access the single values of an mitk::Point3D like in a normal array, in your example:
position[0]
position[1]
position[2]

Greets,

Alfred

Am 13.03.2013 15:33, schrieb Martin Tatzber:
Hi Joseph!

Thanks for your quick reply!

I'm not really sure if it's better to use itk or mitk. But as far as I can see, it's not possible to use the mitk accessors without knowing the data type at compilation time. So I'll decide on using itk. I'm now doing this, which works very well:

    float coords[3]={100,100,100};
    mitk::Point3D position(coords);
    IndexType idx;
    imageGeometry->WorldToIndex( position, idx);
    TPixel pixelValue=itkImage->GetPixel(idx);
    cout<<"pixel value at 100,100,100 = "<<pixelValue<<endl;

This gives me the value at the corresponding world coordinates in mm, which is actually very convenient for me. Is this always interpolating in mm?

So the next step would then be to iterate just like this:

for(int i=0;i<xsize;i++){
    coords[0]=i;
    for(int j=0;j<ysize;j++) {
        coords[1]=j;
        for(int k=0;k<number_of_slices;k++) {
            coords[2]=k;
            //do something
}}}

How can I reinitialize a new point? Or is there a way to just change single coordinates in the mitk::Point3D variable?

Best Regards,
Martin

------------------------------------------------------------------------
*Von:* "Görres, Joseph" <[email protected]>
*An:* 'Martin Tatzber' <[email protected]>; "[email protected]" <[email protected]>
*Gesendet:* 13:16 Dienstag, 12.März 2013
*Betreff:* AW: [mitk-users] get pixel values

Hi Martin,

At first you should decide if you want to work with itk or with mitk images. If you want to work with the mitk::Image class, ImageAccessors are the best way to access pixels by index. The concept of ImageAccessors (including the ImagePixelReadAccessor) is explained on http://docs.mitk.org/2012.12/MitkImagePage.html#MitkImagePage_AccessImageData.

You get compiler errors, because you cannot call GetPixelByWorldCoordinates without having an object of ImagePixelReadAccessor. Your code should look like this:

mitk::ImagePixelReadAccessor<TPixel,VDimension> readAccess(image);
TPixel value = readAccess.GetPixelByWorldCoordinates(point3d)

However, if you want to work with the itk::Image class, you should use image access methods provided by itk.

Best Regards,
Joseph


-------------------------------------------------

Von: Martin Tatzber [mailto:[email protected] <mailto:[email protected]>]
Gesendet: Dienstag, 12. März 2013 12:17
An: [email protected] <mailto:[email protected]>
Betreff: [mitk-users] get pixel values

Hi!

I have a DICOM image and now want to go through all pixels to get their values. How can I do this best?

In the region grower from  the tutorial, pixel values are read like this:

// convert world coordinates to image indices
imageGeometry->WorldToIndex( pointsIterator.Value(), seedIndex);
// get the pixel value at this point
TPixel currentPixelValue = itkImage->GetPixel( seedIndex );

Is it possible to iterate ALL pixels like this, not just some selected points?

Another possibility would be the ImagePixelReadAccessor, which seems to be what I need, but I don't know how to use it. According to the class reference (http://docs.mitk.org/2012.12/classmitk_1_1ImagePixelReadAccessor.html), there should be a method GetPixelByWorldCoordinates, but it doesn't seem to recognize it, as it says "identifier not found". I tried it as follows, just to test it out:

template < typename TPixel, unsigned int VImageDimension >
void MITKPluginTest2::ItkImageProcessing( itk::Image< TPixel, VImageDimension >* itkImage )
{
  float coords[3]={100,100,100};
  mitk::Point3D position(coords);
TPixel p=mitk::ImagePixelReadAccessor<float, 3>::GetPixelByWorldCoordinates(position);
}

This results in 32 errors, all looking like this, with different data types instead of int and VImageDimension 2 or 3:

6>..\..\..\..\myProjectTwo\Plugins\org.company.myplugin2\src\internal\MITKPluginTest2.cpp(160) : error C2027: use of undefined type 'mitk::ImagePixelReadAccessor<TPixel,VDimension>'
6>        with
6>        [
6>            TPixel=float,
6>            VDimension=3
6>        ]
6> ..\..\..\..\myProjectTwo\Plugins\org.company.myplugin2\src\internal\MITKPluginTest2.cpp(148) : see reference to function template instantiation 'void MITKPluginTest2::ItkImageProcessing<int,2>(itk::Image<TPixel,VImageDimension> *)' being compiled
6>        with
6>        [
6>            TPixel=int,
6>            VImageDimension=2
6>        ]
6>..\..\..\..\myProjectTwo\Plugins\org.company.myplugin2\src\internal\MITKPluginTest2.cpp(160) : error C3861: 'GetPixelByWorldCoordinates': identifier not found

Can someone help me, please?

Best Regards,
Martin



------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to