<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
On 25.10.2010 21:50, David Doria wrote:
<blockquote
 cite="mid:AANLkTikbiTX_wBTFExqis1-+KBMq5nhDRcaLAi4cv2k4@mail.gmail.com"
 type="cite">
  <div>
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div>
    <div class="h5">Hi David,</div>
    </div>
    <div class="im"><br>
You must get the output and pass it back.<br>
If you want to disconnect the output from the pipeline use<br>
image-&gt;DisconnectPipeline();<br>
    <br>
Try this:<br>
    <br>
void ApplyThresholding(ImageType::Pointer &amp;image)<br>
{<br>
&nbsp;typedef itk::BinaryThresholdImageFilter &lt;ImageType, ImageType&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BinaryThresholdImageFilterType;<br>
    <br>
&nbsp;BinaryThresholdImageFilterType::Pointer thresholdFilter<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= BinaryThresholdImageFilterType::New();<br>
&nbsp;thresholdFilter-&gt;SetInput(image);<br>
&nbsp;thresholdFilter-&gt;SetLowerThreshold(10);<br>
&nbsp;thresholdFilter-&gt;SetUpperThreshold(50);<br>
&nbsp;thresholdFilter-&gt;SetInsideValue(255);<br>
&nbsp;thresholdFilter-&gt;SetOutsideValue(0);<br>
&nbsp;thresholdFilter-&gt;InPlaceOn();<br>
&nbsp;thresholdFilter-&gt;Update();<br>
&nbsp;image = thresholdFilter-&gt;GetOutput();<br>
&nbsp;// OPTIONAL:<br>
&nbsp;// image-&gt;DisconnectPipeline();<br>
}<br>
    <br>
PS: I am not 100% sure if this is the "best practice".<br>
    <br>
Hope that helps,<br>
Markus<br>
    </div>
  </blockquote>
  <div><br>
  </div>
Hi Markus,
  <div><br>
  </div>
  <div>You are right, if I change the function signature to pass the
'image' pointer by reference:</div>
  <div><br>
  </div>
  <div>void ApplyThresholding(ImageType::Pointer &amp;image)</div>
  <div><br>
  </div>
  <div>and then assign 'image' to the pointer that is the output of the
filter:</div>
  <div><br>
  </div>
  <div>image = thresholdFilter-&gt;GetOutput();</div>
  <div><br>
  </div>
  <div>the thresholded image is displayed. However, this works whether
or not InPlaceOn has been called. What this has done is simply change
'image' in the calling function to point to a different image, rather
than modify the image that 'image' was pointing to originally.</div>
  <div><br clear="all">
Can anyone clarify the idea/usage of the InPlaceOn option?<br>
  <br>
  </div>
  <div>Thanks,</div>
  <div><br>
  </div>
  <div>David</div>
  </div>
  </div>
</blockquote>
<br>
Hi,<br>
<br>
I think the input buffer is <br>
<br>
The output image data is constructed by overwriting the input image
data.&nbsp; BUT: The output bulk data is the same block of memory as the
input bulk data. The filter maintains general pipeline mechanics but
use less memory because the input buffer is reused as the output
buffer. <br>
In detail it grafts the input to the filter to the output, and may
transfer ownership of the input bulk data to the output object, which
means that the input object must release its hold on the bulk data (see
AllocateOutputs()). <br>
<br>
This is why you must get the Output of the filter.<br>
<br>
Cheers, Markus<br>
<br>
</body>
</html>