This is why the image iterator is so valuable. They handle the grunt work for you and are so easy to use. You're code would be simplified to something like:<div><br></div><div>itk::ImageRegionIterator<ImageType> it(image, image->GetLargestPossibleRegion());</div>
<div>for(it.GoToBegin(); !it.IsAtEnd(); ++it)</div><div> {</div><div> if(it.Value() > max)</div><div> max = it.Value();</div><div> }</div><div><br></div><div>Anyway, back to your code. The below looks unusual and unnecessary. Why are you allocating image after assigning it to the reader output?</div>
<div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(80, 0, 80); font-family: arial, sans-serif; font-size: 13px; "> start[0] = 0; // first index on X<br> start[1] = 0; // first index on Y<br>
start[2] = 0; // first index on Z<br><br> InputImageType::RegionType region;<br> region.SetSize( size );<br> region.SetIndex( start );<br> <br> // Pixel data is allocated<br> image->SetRegions( region );<br>
image->Allocate();</span></div><div><br></div><br><div class="gmail_quote">On Tue, Jun 7, 2011 at 10:15 AM, john smith <span dir="ltr"><<a href="mailto:mkitkinsightuser@gmail.com">mkitkinsightuser@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Well,<br>
<br>
When I debug the code, then I am taking an exception:<br>
<i>Unhandled exception at 0x00856a67 in mainwindow.exe: 0xC0000005: Access violation reading location 0x050f0548.</i><br>
<br>
Do yoy know why?Should I change something in my code?Is there wrong in the logic of the code?<br>Thanks for the replies<div class="im"><br><br>ReaderType::Pointer reader = ReaderType::New();<br><br> reader->SetFileName( fileName.toStdString() );<br>
reader->Update();<br><br> InputImageType::RegionType inputRegion =<br> reader->GetOutput()->GetLargestPossibleRegion();<br><br> <br> //typedef itk::Image< short, 3 > InputImageType;<br>
<br> InputImageType::Pointer image = reader->GetOutput();<br><br> <br><br> InputImageType::IndexType start;<br> InputImageType::SizeType size;<br><br></div><div class="im"> size = inputRegion.GetSize();<br> // get the size of the hole 3D image<br>
size_x = size[0];<br> size_y = size[1];<br> size_z = size[2];<br> <br><br><br></div><div class="im"> start[0] = 0; // first index on X<br> start[1] = 0; // first index on Y<br> start[2] = 0; // first index on Z<br>
<br> InputImageType::RegionType region;<br>
region.SetSize( size );<br> region.SetIndex( start );<br> <br> // Pixel data is allocated<br> image->SetRegions( region );<br> image->Allocate();<br><br> int i,j,k;<br> int max_value=0;<br><br><br><br> for ( i=0;i<size_x;i++) {<br>
for ( j=0;i<size_y;j++){<br> for ( k=0;i<size_z;k++){<br><br> InputImageType::IndexType pixelIndex;<br> pixelIndex[0] = i; // x position<br> pixelIndex[1] = j; // y position<br>
pixelIndex[2] = k; // z position<br><br> InputImageType::PixelType pixelValue = image->GetPixel( pixelIndex );<br><br> if(pixelValue>max_value){max_value=pixelValue;}<br>
<br> }<br> }<br> }<br><br> ui->label_22->setText(QString("maximum_value_raw%1").arg(max_value));<br><br></div><div><div></div><div class="h5"><div class="gmail_quote">2011/6/7 john smith <span dir="ltr"><<a href="mailto:mkitkinsightuser@gmail.com" target="_blank">mkitkinsightuser@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">I have added this<div><br><br> size = inputRegion.GetSize();<br> // get the size of the hole 3D image<br>
size_x = size[0];<br> size_y = size[1];<br> size_z = size[2];<br><br></div>I am getting into the loop, but now I am getting an exception.Do you know what I am doing wrong? I have declared the size_x,size_y,size_z in an other function as it seems bellow, and declare them as global variable.Is it this declaration responcible for the exception?<br>
<br>Thanks<div><div></div><div><br> <br><br><div class="gmail_quote">2011/6/7 Brecht Heyde <span dir="ltr"><<a href="mailto:Brecht.Heyde@med.kuleuven.be" target="_blank">Brecht.Heyde@med.kuleuven.be</a>></span><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<div link="blue" vlink="purple" lang="NL">
<div>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Sorry, it should have been:</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">size = inputRegion.GetSize();</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Regards,</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Brecht Heyde</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<div>
<div style="border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10pt" lang="EN-US">From:</span></b><span style="font-size:10pt" lang="EN-US"> <a href="mailto:insight-users-bounces@itk.org" target="_blank">insight-users-bounces@itk.org</a>
[mailto:<a href="mailto:insight-users-bounces@itk.org" target="_blank">insight-users-bounces@itk.org</a>] <b>On Behalf Of </b>Brecht Heyde<br>
<b>Sent:</b> dinsdag 7 juni 2011 15:34<br>
<b>To:</b> 'john smith'; 'robert tamburo'; <a href="mailto:insight-users@itk.org" target="_blank">insight-users@itk.org</a></span></p><div><br>
<b>Subject:</b> Re: [Insight-users] get the maximum pixel value using
GetPixel() for 3D image</div><p></p>
</div>
</div><div>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Hi,</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Your size_x, size_y and size_z are not representing the actual
size of the image.</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Add:</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">size = inputRegion->GetSize();</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Before </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">size_x = …</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">size_y = …</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">size_z = …</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">I would however also suggest to use an imageIterator.</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Regards,</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US">Brecht Heyde</span></p>
<p class="MsoNormal"><span style="font-size:11pt;color:rgb(31, 73, 125)" lang="EN-US"> </span></p>
<div style="border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10pt" lang="EN-US">From:</span></b><span style="font-size:10pt" lang="EN-US"> <a href="mailto:insight-users-bounces@itk.org" target="_blank">insight-users-bounces@itk.org</a>
[mailto:<a href="mailto:insight-users-bounces@itk.org" target="_blank">insight-users-bounces@itk.org</a>] <b>On Behalf Of </b>john smith<br>
<b>Sent:</b> dinsdag 7 juni 2011 15:27<br>
<b>To:</b> robert tamburo; <a href="mailto:insight-users@itk.org" target="_blank">insight-users@itk.org</a><br>
<b>Subject:</b> Re: [Insight-users] get the maximum pixel value using
GetPixel() for 3D image</span></p>
</div>
<p class="MsoNormal"> </p>
</div><p class="MsoNormal" style="margin-bottom:12pt">Thanks for your reply.I have
used the MinimumMaximumImageCalculator, but know I want to take the result
playing with the raw data.But I am trying to do that without using iterators,
just with using for loop. I have added the largest possible area from reader,
but when I am debuging my code, it seems that I cannot get inside the loop. Do
you know why? Here is my code:</p><div><div></div><div><br>
<br>
ReaderType::Pointer reader = ReaderType::New();<br>
<br>
reader->SetFileName( fileName.toStdString()
);<br>
reader->Update();<br>
<br>
InputImageType::RegionType inputRegion =<br>
reader->GetOutput()->GetLargestPossibleRegion();<br>
<br>
<br>
//typedef itk::Image< short, 3 > InputImageType;<br>
<br>
InputImageType::Pointer image =
reader->GetOutput();<br>
<br>
<br>
<br>
InputImageType::IndexType start;<br>
InputImageType::SizeType size;<br>
<br>
// get the size of the hole 3D image<br>
size_x = size[0];<br>
size_y = size[1];<br>
size_z = size[2];<br>
<br>
start[0] = 0; // first index on X<br>
start[1] = 0; // first index on Y<br>
start[2] = 0; // first index on Z<br>
<br>
InputImageType::RegionType region;<br>
region.SetSize( size );<br>
region.SetIndex( start );<br>
<br>
// Pixel data is allocated<br>
image->SetRegions( region );<br>
image->Allocate();<br>
<br>
int i,j,k;<br>
int max_value=0;<br>
<br>
for ( i=0;i<size_x;i++) {<br>
for ( j=0;i<size_y;j++){<br>
for ( k=0;i<size_z;k++){<br>
<br>
InputImageType::IndexType pixelIndex;<br>
pixelIndex[0] = i; // x position<br>
pixelIndex[1] = j; // y position<br>
pixelIndex[2] = k; // z position<br>
<br>
InputImageType::PixelType pixelValue = image->GetPixel( pixelIndex );<br>
<br>
if(pixelValue>max_value){max_value=pixelValue;}<br>
<br>
}<br>
}<br>
}<br>
<br>
ui->label_22->setText(QString("maximum_value_raw%1").arg(max_value));</div></div><div><div></div><div>
<div>
<p class="MsoNormal">2011/6/7 robert tamburo <<a href="mailto:robert.tamburo@gmail.com" target="_blank">robert.tamburo@gmail.com</a>></p>
<p class="MsoNormal">GetPixel() belongs to itkImage, not the reader. Try
reader->GetOutput()->GetPixel(index). </p>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Two other things: 1) You may want to consider using an
ImageRegionIterator instead of for loops, and 2) You can use the
MinimumMaximumImageCalculator to get the maximum intensity in an image.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">There are examples on how to use each class at <a href="http://www.itk.org/Wiki/ITK/Examples" target="_blank">http://www.itk.org/Wiki/ITK/Examples</a></p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"> </p>
<div>
<div>
<div>
<p class="MsoNormal">On Tue, Jun 7, 2011 at 8:36 AM, john smith <<a href="mailto:mkitkinsightuser@gmail.com" target="_blank">mkitkinsightuser@gmail.com</a>>
wrote:</p>
</div>
</div>
<blockquote style="border-width:medium medium medium 1pt;border-style:none none none solid;border-color:-moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204);padding:0cm 0cm 0cm 6pt;margin:5pt 0cm 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt">Hello,<br>
<br>
I am trying to find the maximum pixel value of a 3D image, and I am using
the GetPixel method with 3 loops.I want to load my image from a file so I
created a reader pointer.Does this pointer include the raw data of my image? I
have created the following code but I get an error: GetPixel() method is not a
member of reader. Could somebody tell me what I am doing wrong? How I could
find the maximum pixel value of a loaded image with the method of GetPixel()?<br>
<br>
Thanks<br>
<br>
typedef
short
InputPixelType;<br>
const unsigned int
Dimension = 3;<br>
<br>
typedef itk::Image< InputPixelType, Dimension
> InputImageType;<br>
typedef itk::ImageFileReader< InputImageType >
ReaderType;<br>
<br>
<br>
ReaderType::Pointer reader = ReaderType::New();<br>
<br>
reader->SetFileName( fileName.toStdString()
);<br>
reader->Update();<br>
<br>
InputImageType::RegionType inputRegion =<br>
reader->GetOutput()->GetLargestPossibleRegion();<br>
<br>
InputImageType::SizeType size = inputRegion.GetSize();<br>
<br>
// get the size of the hole 3D image<br>
size_x = size[0];<br>
size_y = size[1];<br>
size_z = size[2];<br>
<br>
InputImageType::IndexType start = inputRegion.GetIndex();<br>
start[0] = 0; // first index on X<br>
start[1] = 0; // first index on Y<br>
start[2] = 0; // first index on Z<br>
<br>
int i,j,k;<br>
int max_value=0;<br>
for ( i=0;i<size_x;i++) {<br>
for ( j=0;i<size_y;j++){<br>
for ( k=0;i<size_z;k++){<br>
<br>
InputImageType::IndexType pixelIndex;<br>
pixelIndex[0] = i; // x position<br>
pixelIndex[1] = j; // y position<br>
pixelIndex[2] = k; // z position<br>
<br>
InputImageType::PixelType pixelValue = reader->GetPixel( pixelIndex );<br>
<br>
if(pixelValue>max_value){max_value=pixelValue;}<br>
<br>
}<br>
}<br>
}</p>
</div>
</div>
<p class="MsoNormal">_____________________________________</p>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"><br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"> </p>
</div>
</div>
<p class="MsoNormal"> </p>
</div></div></div>
</div>
</blockquote></div><br>
</div></div></blockquote></div><br>
</div></div><br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br>