[Insight-developers] StreamingImageFilter

Miller, James V (CRD) millerjv@crd.ge.com
Tue, 4 Sep 2001 12:45:18 -0400


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C13560.FB147900
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C13560.FB147900"


------_=_NextPart_001_01C13560.FB147900
Content-Type: text/plain;
	charset="iso-8859-1"

I just checked in support for streaming image filters.  This required a minor change to ProcessObject
(moved two ivars from private to protected). There is a new filter StreamingImageFilter that you can
place at the end of your pipeline.  You tell it how many pieces to break the pipeline up into.  On an
Update(), it will divide its OutputRequestedRegion into several pieces and execute the pipeline for
each piece.  The outputs will be then be tiled together to form the final image.
 
StreamingImageFilter uses a ImageRegionSplitter object which decides how to split up the image.  The
current ImageRegionSplitter breaks an image up on the outermost dimension.  If a different splitting
strategy is needed an alternative splitter class can be developed.  I have another splitter in the
works that tries to divide each dimension an equal number of times.  I haven't worked out all the
kinks in that one yets.
 
Once I get this other splitter working, then next step to make sure the readers and writers can
stream.  
 
Given that, it looks like we need some sort of  "VirtualImage" that looks like an image in memory but
is actually on disk.  If the output of a StreamingImageFilter were one of these VirtualImage's, it
would write its output piece by piece directly to disk (rather than compositing the result in
memory).
 
There is a test in Testing/Code/BasicFilters/itkStreamingImageFilterTest.cxx if you would like to see
how to use the filter.


Jim Miller 
_____________________________________
Visualization & Computer Vision
GE Corporate Research & Development
Bldg. KW, Room C218B
P.O. Box 8, Schenectady NY 12301

millerjv@crd.ge.com < mailto:millerjv@crd.ge.com <mailto:millerjv@crd.ge.com> >
(518) 387-4005, Dial Comm: 8*833-4005, 
Cell: (518) 505-7065, Fax: (518) 387-6981 


 

------_=_NextPart_001_01C13560.FB147900
Content-Type: text/html;
	charset="iso-8859-1"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 5.50.4611.1300" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=149533416-04092001><FONT size=2>I just checked in support for 
streaming image filters.&nbsp; This required a minor change to ProcessObject 
(moved two ivars from private to protected). There is a new filter 
StreamingImageFilter that you can place at the end of your pipeline.&nbsp; You 
tell it how many pieces to break the pipeline up into.&nbsp; On an Update(), it 
will divide its OutputRequestedRegion into several pieces and execute the 
pipeline for each piece.&nbsp; The outputs will be then be tiled together to 
form the final image.</FONT></SPAN></DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2>StreamingImageFilter uses a 
ImageRegionSplitter object which decides how to split up the image.&nbsp; The 
current ImageRegionSplitter breaks an image up on the outermost dimension.&nbsp; 
If a different splitting strategy is needed an alternative splitter class can be 
developed.&nbsp; I have another splitter in the works that tries to divide each 
dimension an equal number of times.&nbsp; I haven't worked out all the kinks in 
that one yets.</FONT></SPAN></DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2>Once I get this other splitter 
working, then next step to make sure the readers and writers can stream.&nbsp; 
</FONT></SPAN></DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2>Given that, it looks like we 
need some sort of&nbsp; "VirtualImage"&nbsp;that looks like an image in memory 
but is actually on disk.&nbsp; If the output of a StreamingImageFilter were one 
of these VirtualImage's, it would write its output piece by piece directly to 
disk (rather than compositing the result in memory).</FONT></SPAN></DIV>
<DIV><SPAN class=149533416-04092001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=149533416-04092001></SPAN><SPAN 
class=149533416-04092001></SPAN><SPAN class=149533416-04092001><FONT 
size=2>There is a test in 
Testing/Code/BasicFilters/itkStreamingImageFilterTest.cxx if you would like to 
see how to use the filter.</FONT></SPAN></DIV><BR>
<P><B><FONT face="Comic Sans MS" color=#000080>Jim Miller</FONT></B> 
<BR><B><I><FONT face=Arial color=#ff0000 
size=2>_____________________________________</FONT></I></B><I></I><BR><I></I><I><FONT 
face=Arial color=#000000 size=1>Visualization &amp; Computer Vision<BR>GE 
Corporate Research &amp; Development<BR>Bldg. KW, Room C218B<BR>P.O. Box 8, 
Schenectady NY 12301<BR><BR></FONT><U><FONT face=Arial color=#0000ff 
size=1>millerjv@crd.ge.com &lt;<A 
href="mailto:millerjv@crd.ge.com">mailto:millerjv@crd.ge.com</A>&gt;</FONT></U></I><BR><I><FONT 
face=Arial color=#000000 size=1>(518) 387-4005, Dial Comm: 8*833-4005, 
</FONT></I><BR><I><FONT face=Arial color=#000000 size=1>Cell: (518) 505-7065, 
Fax: (518) 387-6981</FONT></I> </P><BR>
<DIV>&nbsp;</DIV></BODY></HTML>

------_=_NextPart_001_01C13560.FB147900--

------_=_NextPart_000_01C13560.FB147900
Content-Type: application/octet-stream;
	name="Miller, James V (CRD).vcf"
Content-Disposition: attachment;
	filename="Miller, James V (CRD).vcf"

BEGIN:VCARD
VERSION:2.1
N:Miller;James
FN:Miller, James V (CRD)
ORG:CRD;ESL
TITLE:Computer Scientist
TEL;WORK;VOICE:*833-4005
TEL;WORK;VOICE:1 518 387-4005
ADR;WORK:;KW-C218B;P.O. Box 8;Schenectady;New York;12301;USA
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:KW-C218B=0D=0AP.O. Box 8=0D=0ASchenectady, New York 12301=0D=0AUSA
EMAIL;PREF;INTERNET:millerjv@crd.ge.com
REV:20010420T140329Z
END:VCARD

------_=_NextPart_000_01C13560.FB147900--