Here&#39;s some more specifics about the problem:  <br>I start with a large 3D image (sometimes RGB, or 16 bit), &gt;2GB.  <br>This image has structures in the foreground that I am trying to segment.<br>I begin by using several ITK filters to do some pre-processing on the image (currently the ones listed previously). I write the preprocessed image out to file.<br>
Now I use a series of executables (I do have source), strung together (pipeline), that work on segmenting the image. <br>After each step(exe) the output is written to disk. Output usually includes an image and a text file.  These files are used as input to the next step.<br>
<br>At the end I want to visualize the original image, and the segmentation results (from the final text file).  <br>The visual program is not connected to the pipeline. It is a separate application.  <br><br>Since I have source - I can modify the pipeline as needed - and plan to.  I don&#39;t see any need to write out a file between each step (unless I need to see it for debugging).<br>
In the end I see two programs: 1. process 2. visualize. <br>However, the problem still remains in both cases.  <br><br>A useful example for me would simply be one that loads part of an image using itkImageFileReader, applies a filter (maybe binarize), and writes out the binarized part using itkImageFileWriter..<br>
Say the image is 512x512, but we just load up the first 1/4 of the image (256x256) to binarize and write out. The output should be 512x512 with 1/4 of it binarized, the rest either blank, or just the original grayscale values.  I could then use this principle to apply whatever code I wanted to the image in between the read and write.<br>
<br>Does this make sense?<br>Isaac<br><div class="gmail_quote"><br>On Thu, Jan 28, 2010 at 4:08 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Isaac,<br>
<br>
Thanks for letting us know about the specific filters<br>
that you are using in the pipeline.<br>
<br>
The Median filter is streamable,<br>
<br>
While the RecursiveGaussian family of filter is not.<br>
<br>
(that is, the Smooth, and Hessian filters based on the<br>
 RecursiveGaussianImageFilter, are not streamable).<br>
<br>
<br>
The visualization part may not be too much of a problem,<br>
once the processing of the appropriate chunk has been<br>
solved.<br>
<br>
<br>
What are you doing with the output of the Hessian and<br>
the Smooth Gaussian ?<br>
<br>
Are you visualizing them directly ?<br>
<br>
Note that even though these filters are not strictly<br>
streamable, they have a support where the influence of<br>
far away pixels decrease exponentially.  There for you<br>
could still process the image by chunks and get something<br>
&quot;very similar&quot; to the actual outcome of filtering the full image<br>
and then cropping it.<br>
<br>
However, the pipeline will not help you in this process,<br>
you will have to &quot;manually&quot; calculate the region of the<br>
input image, that comes to be visible in your final rendering,<br>
and then extract that region out of the input image using<br>
the RegionOfInterestImageFilter.<br>
<br>
Then feed that smaller image into your pipeline.<br>
<br>
<br>
    Please let us know if you find any problems,<br>
<br>
<br>
         Thanks<br>
<br>
<br>
             Luis<br>
<br>
<br>
---------------------------------------------------------------------------<br>
<div><div></div><div class="h5">On Thu, Jan 28, 2010 at 4:00 PM, Isaac Abbott &lt;<a href="mailto:isaac.abbott@gmail.com">isaac.abbott@gmail.com</a>&gt; wrote:<br>
&gt; Currently I am using the MedianImageFilter and the<br>
&gt; SmoothingRecursiveGaussianImageFilter or<br>
&gt; HessianRecursiveGaussianImageFilter.<br>
&gt; We also do some other &quot;filtering&quot; using code that is not in the form of an<br>
&gt; itk filter (doesn&#39;t use any ITK yet)<br>
&gt;<br>
&gt; This same project requires some visualization of this image - our plan was<br>
&gt; to create a 2D projection and create a sliding box that the is used to<br>
&gt; define the region that is rendered using VTK.<br>
&gt; For this task I also need to just grab a portion of the image at one time<br>
&gt; for creating the projection and for creating the volume.<br>
&gt;<br>
&gt; Isaac<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Jan 28, 2010 at 3:48 PM, Luis Ibanez &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Isaac,<br>
&gt;&gt;<br>
&gt;&gt; As you have already noticed, not all filters are<br>
&gt;&gt; streamable.<br>
&gt;&gt;<br>
&gt;&gt; However, for those that are, it should be possible<br>
&gt;&gt; to process your image by pieces.<br>
&gt;&gt;<br>
&gt;&gt; Brad Lowekamp has recently revamped the streaming<br>
&gt;&gt; pipeline and verified that is possible to pass the entire<br>
&gt;&gt; Visible Human dataset through an ITK pipeline.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; What specific ITK filters are you using ?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; If you are having problems with the pipeline, we should<br>
&gt;&gt; identify a reproducible minimal example, in case there<br>
&gt;&gt; is anything that needs to be fixed.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;    Please let us know,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;            Thanks<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;                 Luis<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; -----<br>
&gt;&gt; PS. I&#39;m copying the ITK users-list, since this<br>
&gt;&gt; topics will be of interest to many users.<br>
&gt;&gt;<br>
&gt;&gt; --------------------------------------------------------------<br>
&gt;&gt; On Thu, Jan 28, 2010 at 3:43 PM, Isaac Abbott &lt;<a href="mailto:isaac.abbott@gmail.com">isaac.abbott@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Luis,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;m trying to process some very large 3D images.  I cannot load these<br>
&gt;&gt; &gt; images<br>
&gt;&gt; &gt; using ImageFileReader because I run out of RAM.<br>
&gt;&gt; &gt; I would like to apply various filters to only subregions of this image,<br>
&gt;&gt; &gt; and<br>
&gt;&gt; &gt; write the output to the same output image file.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; This means my input and output images might be something like 10,000 x<br>
&gt;&gt; &gt; 10,000 x 200 voxels, but I only want 1000x1000x100 in memory.<br>
&gt;&gt; &gt; I&#39;d load up a region, do the processing, then save the result to file,<br>
&gt;&gt; &gt; and<br>
&gt;&gt; &gt; iterate, saving the results to the same file each time.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I have been following the discussion about applying filters to ROIs of<br>
&gt;&gt; &gt; an<br>
&gt;&gt; &gt; itk::Image.<br>
&gt;&gt; &gt; I&#39;ve also seen some discussion about the usage of buffered region vs<br>
&gt;&gt; &gt; largest<br>
&gt;&gt; &gt; possible region vs requested region.<br>
&gt;&gt; &gt; And, I&#39;ve looked at the StreamingImageFilter - which only seems to work<br>
&gt;&gt; &gt; for<br>
&gt;&gt; &gt; a limited subset of the filters.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; None of these discussions seem to meet my need. According to the<br>
&gt;&gt; &gt; documentation I should be able to do something with the buffered region,<br>
&gt;&gt; &gt; because this defines only the region of the image that is in memory -<br>
&gt;&gt; &gt; but I<br>
&gt;&gt; &gt; haven&#39;t seen this work in practice.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks for any help you can give,<br>
&gt;&gt; &gt; Isaac (Roysam lab, RPI)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>