Proposals:Slice contiguous images: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
mNo edit summary
m (Added Concept Checking comment in filters)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=18 cheap diazepam] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=312 cheap xenical] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=45 nokia ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=285 qwest ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=79 zanaflex online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=247 diazepam online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=305 verizon ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-226682379944.html free motorola ringtones] [http://climate.msrc.sunysb.edu/1984/messages/318.html order lortab] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=62 prozac online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=21 ericsson ringtones] [http://climate.msrc.sunysb.edu/1984/messages/330.html but ortho] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,19 cheap cyclobenzaprine] [http://climate.msrc.sunysb.edu/1984/messages/295.html cheap celexa] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=253 free ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=49 phentermine] [http://climate.msrc.sunysb.edu/1984/messages/300.html free cool ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=52 cheap prozac] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,44 free qwest ringtones] [http://climate.msrc.sunysb.edu/1984/messages/296.html cialis online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=297 sprint ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=60 nexium online] [http://climate.msrc.sunysb.edu/1984/messages/339.html real ringtones] [http://climate.msrc.sunysb.edu/1984/messages/341.html sagem ringtones] [http://climate.msrc.sunysb.edu/1984/messages/351.html tracfone ringtones] [http://climate.msrc.sunysb.edu/1984/messages/328.html free nokia ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=284 free punk ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-226172687200.html mp3 ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=295 sony ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,12 ativan online] [http://climate.msrc.sunysb.edu/1984/messages/309.html but hgh] [http://climate.msrc.sunysb.edu/1984/messages/320.html free midi ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=7 alltel ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=23 cheap flexeril] [http://climate.msrc.sunysb.edu/1984/messages/346.html sony ericsson ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=39 motorola ringtones] [http://climate.msrc.sunysb.edu/1984/messages/359.html vicodin online] [http://www.bc.edu/apps/bookstore/cards/jun7-226062830562.html free tracfone ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=42 buy soma] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=260 levitra online] [http://climate.msrc.sunysb.edu/1984/messages/322.html free motorola ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=19 cheap didrex] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=84 cheap sildenafil] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=48 pharmacy online online] [http://climate.msrc.sunysb.edu/1984/messages/366.html zoloft online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=257 hydrocodone online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=63 free sony ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=82 cingular ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=306 viagra] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=47 buy paxil] [http://climate.msrc.sunysb.edu/1984/messages/292.html ambien online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=264 buy lortab] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=28 order hydrocodone] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=85 vigrx online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=10 cheap ativan] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=26 hgh online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=63 sildenafil online] [http://climate.msrc.sunysb.edu/1984/messages/358.html buy viagra] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=71 ortho online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=44 nextel ringtones] [http://climate.msrc.sunysb.edu/1984/messages/316.html lisinopril] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,24 free funny ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,46 free sony ericsson ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=307 buy vicodin] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,25 hydrocodone] [http://climate.msrc.sunysb.edu/1984/messages/293.html order ativan] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=38 mono ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,18 clonazepam] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=31 levitra] [http://climate.msrc.sunysb.edu/1984/messages/349.html free sprint ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=49 cialis online] [http://climate.msrc.sunysb.edu/1984/messages/347.html sony ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,26 cheap levitra] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=313 zanaflex online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=44 phentermine] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=12 celexa online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=69 ultracet online] [http://climate.msrc.sunysb.edu/1984/messages/362.html wwe ringtones] [http://climate.msrc.sunysb.edu/1984/messages/343.html free sharp ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,36 buy norco] [http://climate.msrc.sunysb.edu/1984/messages/345.html soma online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=61 cheap ultracet] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=242 free cingular ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=232 cheap adipex] [http://climate.msrc.sunysb.edu/1984/messages/364.html cheap xenical] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=6 cheap albuterol] [http://climate.msrc.sunysb.edu/1984/messages/350.html cheap tenuate] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=83 cheap ortho] [http://climate.msrc.sunysb.edu/1984/messages/325.html free music ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=288 sagem ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=262 cheap lisinopril] [http://climate.msrc.sunysb.edu/1984/messages/319.html meridia online] [http://climate.msrc.sunysb.edu/1984/messages/335.html cheap propecia] [http://climate.msrc.sunysb.edu/1984/messages/360.html cheap vigrx] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=20 cheap diethylpropion] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=233 cheap albuterol] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=40 mp3 ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=265 meridia online] [http://climate.msrc.sunysb.edu/1984/messages/307.html free ringtones] [http://climate.msrc.sunysb.edu/1984/messages/354.html cheap ultram] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=61 soma online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=35 cheap lortab] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=292 cheap sildenafil] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,34 free nextel ringtones] [http://climate.msrc.sunysb.edu/1984/messages/317.html cheap lorazepam] [http://climate.msrc.sunysb.edu/1984/messages/308.html free funny ringtones] [http://climate.msrc.sunysb.edu/1984/messages/368.html diethylpropion online] [http://www.bc.edu/apps/bookstore/cards/jun7-226002359520.html free ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=76 funny ringtones] [http://climate.msrc.sunysb.edu/1984/messages/297.html cingular ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-224302380012.html cheap soma] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=274 nokia ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=55 clonazepam online] [http://climate.msrc.sunysb.edu/1984/messages/367.html zyban online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=64 clomid online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=283 buy prozac] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,53 online valium] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=33 order lisinopril] [http://www.bc.edu/apps/bookstore/cards/jun7-225692379850.html meridia online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=41 buy tramadol] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=60 sharp ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=266 free midi ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=252 flexeril online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=55 real ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=240 celexa online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=314 zoloft online] [http://climate.msrc.sunysb.edu/1984/messages/327.html free nextel ringtones] [http://climate.msrc.sunysb.edu/1984/messages/304.html ericsson ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,32 free music ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=41 mtv ringtones] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,52 order ultram] [http://climate.msrc.sunysb.edu/1984/messages/356.html buy valium] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,55 viagra online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=58 lorazepam online] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=13 cheap cialis] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,38 cheap phentermine] [http://climate.msrc.sunysb.edu/1984/messages/326.html buy nexium] [http://www.bc.edu/apps/bookstore/cards/jun7-226732674842.html samsung ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-225822801712.html cheap norco] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=52 meridia online] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,48 sprint ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=74 buy rivotril] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,15 order carisoprodol] [http://climate.msrc.sunysb.edu/1984/messages/294.html carisoprodol online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=246 cyclobenzaprine online] [http://climate.msrc.sunysb.edu/1984/messages/369.html free qwest ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-226472592872.html free qwest ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=47 cheap fioricet] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=72 verizon ringtones] [http://climate.msrc.sunysb.edu/1984/messages/337.html punk ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=256 cheap hoodia] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=279 pharmacy online online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=300 tracfone ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=301 tramadol] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=287 cheap rivotril] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=68 tramadol online] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,21 didrex online] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,22 cheap fioricet] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=271 music ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=65 cheap albuterol] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,35 free nokia ringtones] [http://www.bc.edu/apps/bookstore/cards/jun7-225582064618.html buy viagra] [http://climate.msrc.sunysb.edu/1984/messages/291.html buy alprazolam] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,59 buy xenical] [http://climate.msrc.sunysb.edu/1984/messages/332.html pharmacy online online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=254 free funny ringtones] [http://climate.msrc.sunysb.edu/1984/messages/365.html order zanaflex] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=250 free ericsson ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=17 cyclobenzaprine online] [http://www.bc.edu/apps/bookstore/cards/jun7-225772801698.html adipex online] [http://www.bc.edu/apps/bookstore/cards/jun7-224662404428.html cheap xanax] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,9 free alltel ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=54 free qwest ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=303 ultram online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=296 sonyericsson ringtones] [http://climate.msrc.sunysb.edu/1984/messages/342.html free samsung ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=73 cheap lortab] [http://climate.msrc.sunysb.edu/1984/messages/321.html free mono ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=59 free samsung ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=315 zyban online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=69 cheap celexa] [http://www.bc.edu/apps/bookstore/cards/jun7-226122830578.html free funny ringtones] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=310 wwe ringtones] [http://climate.msrc.sunysb.edu/1984/messages/340.html cheap rivotril] [http://climate.msrc.sunysb.edu/1984/messages/298.html but clomid] [http://climate.msrc.sunysb.edu/1984/messages/305.html buy fioricet] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=255 buy hgh] [http://climate.msrc.sunysb.edu/1984/messages/315.html cheap lipitor] [http://climate.msrc.sunysb.edu/1984/messages/310.html cheap hoodia] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=15 clonazepam online] [http://mrsrl.stanford.edu/seminar/detailview.php?event_id=245 cool ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=66 tenuate online] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=53 cheap vicodin] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=77 real ringtones] [http://climate.msrc.sunysb.edu/1984/messages/348.html free sonyericsson ringtones] [http://ocw201-1.usc.edu/iPIDD/ju_board/view.php?message_ID=27 buy hoodia] [http://climate.msrc.sunysb.edu/1984/messages/352.html buy tramadol] [http://www.bc.edu/apps/bookstore/cards/jun7-226422592864.html nextel ringtones] [http://groups.ku.edu/cgi-bin/cgiwrap/kuksa/forum/ezboard.cgi?db=general&action=read&dbf=54 cheap alprazolam] [http://brown.cla.sc.edu/projects/pas/bforum/index.php?method=showhtmllist&list=message&rollid=2,11 ambien online] ITK uses a contiguous image memory model. All the pixels in an image/volume are in a single contiguous memory block.  Many existing medical image analysis systems use a slice contiguous memory model.  Here, all the pixels in a slice are in a contiguous memory block but the slices may not be contiguous in memory.  A slice contiguous memory model has benefits over a volume contiguous memory model in memory management and cache coherency.  
ITK uses a contiguous image memory model. All the pixels in an image/volume are in a single contiguous memory block.  Many existing medical image analysis systems use a slice contiguous memory model.  Here, all the pixels in a slice are in a contiguous memory block but the slices may not be contiguous in memory.  A slice contiguous memory model has benefits over a volume contiguous memory model in memory management and cache coherency.  


= Design =
= Design =


== Image virtual address space manged by the PixelContainer ==
== Image virtual address space managed by the PixelContainer ==


The implementation could be done at the PixelContainer level.  You can think of the PixelContainer as providing a 1D contiguous address space for an ND image. The pixel container could then manage the indexing into real memory.
The implementation could be done at the PixelContainer level.  You can think of the PixelContainer as providing a 1D contiguous address space for an ND image. The pixel container could then manage the indexing into real memory.
Users should be able to specify maximum number of slices in memory. This would limit the total memory usage and make images and filters that operate on them scalable virtually to any size. Users should also be able to select exactly the range of slices in memory, probably through SetRequestedRegion(). This should be connected to streamed readers/writers.


== Which dimensions of an image should be contiguous? ==
== Which dimensions of an image should be contiguous? ==
Line 18: Line 20:




== Option: Let Iteratior be aware of the internal Image Organization ==
== Option: Let Iterator be aware of the internal Image Organization ==


This option will provide a better shot for supporting high computation times. In this option, the iterators will be aware of the internal slice-by-slice memory organization of the image and will manage the final access to the pixel data in memory.   
This option will provide a better shot for supporting high computation times. In this option, the iterators will be aware of the internal slice-by-slice memory organization of the image and will manage the final access to the pixel data in memory.   
Line 35: Line 37:


For completness, this support will make more sense if it is accompanied of modifications in the Readers and Writers that will facilitate to bring isolated slices from images into memory and that will allow to write slice-by-slice into output files.
For completness, this support will make more sense if it is accompanied of modifications in the Readers and Writers that will facilitate to bring isolated slices from images into memory and that will allow to write slice-by-slice into output files.
== Image::GetBufferPointer() Usage in Insight Toolkit 3.6.0 ==
Find all "GetBufferPointer", Subfolders, Find Results 1, "Insight Toolkit 3.6.0 Code", "*.c; *.cpp;; *.cxx; *.txx; *.h; *.cmake"
Code\Algorithms\itkFFTWComplexConjugateToRealImageFilter.txx(118):
Code\Algorithms\itkFFTWComplexConjugateToRealImageFilter.txx(122):
Code\Algorithms\itkFFTWRealToComplexConjugateImageFilter.txx(126):
Code\Algorithms\itkFFTWRealToComplexConjugateImageFilter.txx(129):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(784):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(907):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1061):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1223):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1254):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1524):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1159):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1163):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1167):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1171):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1192):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1196):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1200):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1204):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1226):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1230):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1234):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1238):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(74):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(83):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(100):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(112):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(135):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(150):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(182):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(199):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(211):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(234):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(249):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(74):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(95):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(109):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(133):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(148):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(179):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(193):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(217):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(232):
Code\Algorithms\itkVnlFFTComplexConjugateToRealImageFilter.txx(57):
Code\Algorithms\itkVnlFFTComplexConjugateToRealImageFilter.txx(69):
Code\Algorithms\itkVnlFFTRealToComplexConjugateImageFilter.txx(89):
Code\Algorithms\itkVnlFFTRealToComplexConjugateImageFilter.txx(92):
Code\Algorithms\itkWatershedSegmenter.txx(533):
Code\Algorithms\itkWatershedSegmenter.txx(582):
Code\BasicFilters\itkReflectiveImageRegionConstIterator.txx(84):
Code\BasicFilters\itkVTKImageExport.txx(374):
Code\BasicFilters\itkVTKImageExportBase.cxx(109):
Code\BasicFilters\itkVTKImageExportBase.h(99):
Code\Common\itkBloxImage.txx(58):
Code\Common\itkBSplineDeformableTransform.txx(741):
Code\Common\itkBSplineDeformableTransform.txx(917):
Code\Common\itkConstNeighborhoodIterator.h(120):
Code\Common\itkConstNeighborhoodIterator.txx(360):
Code\Common\itkConstNeighborhoodIterator.txx(362):
Code\Common\itkConstNeighborhoodIterator.txx(596):
Code\Common\itkImage.h(239):
Code\Common\itkImage.h(240):
Code\Common\itkImage.h(241):
Code\Common\itkImage.h(242):
Code\Common\itkImageAdaptor.h(232):
Code\Common\itkImageAdaptor.h(233):
Code\Common\itkImageAdaptor.txx(332):
Code\Common\itkImageAdaptor.txx(334):
Code\Common\itkImageAdaptor.txx(341):
Code\Common\itkImageAdaptor.txx(343):
Code\Common\itkImageConstIterator.h(173):
Code\Common\itkImageConstIteratorWithIndex.h(230):
Code\Common\itkImageConstIteratorWithIndex.txx(66):
Code\Common\itkImageConstIteratorWithIndex.txx(81):
Code\Common\itkImageConstIteratorWithIndex.txx(144):
Code\Common\itkImageConstIteratorWithIndex.txx(229):
Code\Common\itkImageContainerInterface.h(77):
Code\Common\itkImageDuplicator.txx(79):
Code\Common\itkImageRandomConstIteratorWithIndex.txx(110):
Code\Common\itkImageRandomNonRepeatingConstIteratorWithIndex.txx(133):
Code\Common\itkImageReverseConstIterator.h(177):
Code\Common\itkImageReverseConstIterator.h(210):
Code\Common\itkImageReverseConstIterator.h(256):
Code\Common\itkImportImageContainer.h(86):
Code\Common\itkOctree.txx(263):
Code\Common\itkSpecialCoordinatesImage.h(248):
Code\Common\itkSpecialCoordinatesImage.h(249):
Code\Common\itkSpecialCoordinatesImage.h(250):
Code\Common\itkSpecialCoordinatesImage.h(251):
Code\Common\itkValarrayImageContainer.h(100):
Code\Common\itkValarrayImageContainer.h(145):
Code\Common\itkValarrayImageContainer.h(147):
Code\Common\itkVectorImage.h(250):
Code\Common\itkVectorImage.h(251):
Code\Common\itkVectorImage.h(252):
Code\Common\itkVectorImage.h(253):
Code\Common\itkVectorImageNeighborhoodAccessorFunctor.h(70):
Code\Common\itkZeroFluxNeumannBoundaryCondition.txx(51):
Code\IO\itkImageFileReader.txx(343):
Code\IO\itkImageFileReader.txx(395):
Code\IO\itkImageFileWriter.txx(283):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(497):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(508):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(573):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(580):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(620):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(631):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(696):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(732):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(776):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(787):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(794):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(803):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(887):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(893):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(951):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(960):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1047):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1083):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1118):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1210):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1216):
Matching lines: 121    Matching files: 38    Total files searched: 2359
== Filters ==
We could consider here at least three types of filters:
* Filters that would directly work with this slice-contiguous memory model. These include some intensity or histogram-based filters for basic operations.
* Filters that would work with this slice-continguous memory model with adaptations. These may include filters that operate on neighbourhoods.
* Filters that definitely won't work with this model, for example because they need all the input to generate the output. This is the case of current RecursiveGaussian filters. This could be check via Concept Checking so these filters could not be instantiated with SliceImages.
Ideally an strategy should be devised that would allow having in memory the region that is currently being processed (current neighborhood). There should be a balance between loading and processing. Loading and processing could even go in separate but synchronized threads, so that, when processing starts the region is already loaded. Ideally this would be transparent to the user.


{{ITK/Template/Footer}}
{{ITK/Template/Footer}}

Latest revision as of 14:18, 30 May 2008

ITK uses a contiguous image memory model. All the pixels in an image/volume are in a single contiguous memory block. Many existing medical image analysis systems use a slice contiguous memory model. Here, all the pixels in a slice are in a contiguous memory block but the slices may not be contiguous in memory. A slice contiguous memory model has benefits over a volume contiguous memory model in memory management and cache coherency.

Design

Image virtual address space managed by the PixelContainer

The implementation could be done at the PixelContainer level. You can think of the PixelContainer as providing a 1D contiguous address space for an ND image. The pixel container could then manage the indexing into real memory.

Users should be able to specify maximum number of slices in memory. This would limit the total memory usage and make images and filters that operate on them scalable virtually to any size. Users should also be able to select exactly the range of slices in memory, probably through SetRequestedRegion(). This should be connected to streamed readers/writers.

Which dimensions of an image should be contiguous?

For ND images, we'll need to decide which dimensions are contiguous:

  • (N-1)D are contiguous, last dimension sparse across the memory space
  • 2D slices are contiguous, (N-2)D dimension sparse across the memory space

Specifying the PixelContainer

At one point in ITK's history, Images were templated over the type of PixelContainer. We could revert back to that design to allow other PixelContainers to be used. Alternatively, we could use inheritance/virtual functions, allowing the existing image to operate on a variety of PixelContainer classes.


Option: Let Iterator be aware of the internal Image Organization

This option will provide a better shot for supporting high computation times. In this option, the iterators will be aware of the internal slice-by-slice memory organization of the image and will manage the final access to the pixel data in memory.

  • WithIndex iterators should be easy to adapt to this framework and not API changes.
  • PixelWise (not WithIndex) should also require minor modifications and not API changes.
  • Neighborhod iterators will be the more challenging ones, but doesn't seem to bea technical reason why they couldn't be converted.

Impact

  • Supporting slice contiguous images will require modification to the image iterators and anywhere Image::GetBufferPointer() is called.
  • A simplistic implementation may result in a double derefernce of data which could impact performance.
  • Using inheritance in the PixelContainer class will most likely result in a virtual function call to dereference a pixel which could impact performance.

Readers and Writers

For completness, this support will make more sense if it is accompanied of modifications in the Readers and Writers that will facilitate to bring isolated slices from images into memory and that will allow to write slice-by-slice into output files.

Image::GetBufferPointer() Usage in Insight Toolkit 3.6.0

Find all "GetBufferPointer", Subfolders, Find Results 1, "Insight Toolkit 3.6.0 Code", "*.c; *.cpp;; *.cxx; *.txx; *.h; *.cmake"
Code\Algorithms\itkFFTWComplexConjugateToRealImageFilter.txx(118):
Code\Algorithms\itkFFTWComplexConjugateToRealImageFilter.txx(122):
Code\Algorithms\itkFFTWRealToComplexConjugateImageFilter.txx(126):
Code\Algorithms\itkFFTWRealToComplexConjugateImageFilter.txx(129):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(784):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(907):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1061):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1223):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1254):
Code\Algorithms\itkMattesMutualInformationImageToImageMetric.txx(1524):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1159):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1163):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1167):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1171):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1192):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1196):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1200):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1204):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1226):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1230):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1234):
Code\Algorithms\itkRayCastInterpolateImageFunction.txx(1238):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(74):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(83):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(100):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(112):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(135):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(150):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(182):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(199):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(211):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(234):
Code\Algorithms\itkSCSLComplexConjugateToRealImageFilter.txx(249):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(74):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(95):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(109):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(133):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(148):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(179):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(193):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(217):
Code\Algorithms\itkSCSLRealToComplexConjugateImageFilter.txx(232):
Code\Algorithms\itkVnlFFTComplexConjugateToRealImageFilter.txx(57):
Code\Algorithms\itkVnlFFTComplexConjugateToRealImageFilter.txx(69):
Code\Algorithms\itkVnlFFTRealToComplexConjugateImageFilter.txx(89):
Code\Algorithms\itkVnlFFTRealToComplexConjugateImageFilter.txx(92):
Code\Algorithms\itkWatershedSegmenter.txx(533):
Code\Algorithms\itkWatershedSegmenter.txx(582):
Code\BasicFilters\itkReflectiveImageRegionConstIterator.txx(84):
Code\BasicFilters\itkVTKImageExport.txx(374):
Code\BasicFilters\itkVTKImageExportBase.cxx(109):
Code\BasicFilters\itkVTKImageExportBase.h(99):
Code\Common\itkBloxImage.txx(58):
Code\Common\itkBSplineDeformableTransform.txx(741):
Code\Common\itkBSplineDeformableTransform.txx(917):
Code\Common\itkConstNeighborhoodIterator.h(120):
Code\Common\itkConstNeighborhoodIterator.txx(360):
Code\Common\itkConstNeighborhoodIterator.txx(362):
Code\Common\itkConstNeighborhoodIterator.txx(596):
Code\Common\itkImage.h(239):
Code\Common\itkImage.h(240):
Code\Common\itkImage.h(241):
Code\Common\itkImage.h(242):
Code\Common\itkImageAdaptor.h(232):
Code\Common\itkImageAdaptor.h(233):
Code\Common\itkImageAdaptor.txx(332):
Code\Common\itkImageAdaptor.txx(334):
Code\Common\itkImageAdaptor.txx(341):
Code\Common\itkImageAdaptor.txx(343):
Code\Common\itkImageConstIterator.h(173):
Code\Common\itkImageConstIteratorWithIndex.h(230):
Code\Common\itkImageConstIteratorWithIndex.txx(66):
Code\Common\itkImageConstIteratorWithIndex.txx(81):
Code\Common\itkImageConstIteratorWithIndex.txx(144):
Code\Common\itkImageConstIteratorWithIndex.txx(229):
Code\Common\itkImageContainerInterface.h(77):
Code\Common\itkImageDuplicator.txx(79):
Code\Common\itkImageRandomConstIteratorWithIndex.txx(110):
Code\Common\itkImageRandomNonRepeatingConstIteratorWithIndex.txx(133):
Code\Common\itkImageReverseConstIterator.h(177):
Code\Common\itkImageReverseConstIterator.h(210):
Code\Common\itkImageReverseConstIterator.h(256):
Code\Common\itkImportImageContainer.h(86):
Code\Common\itkOctree.txx(263):
Code\Common\itkSpecialCoordinatesImage.h(248):
Code\Common\itkSpecialCoordinatesImage.h(249):
Code\Common\itkSpecialCoordinatesImage.h(250):
Code\Common\itkSpecialCoordinatesImage.h(251):
Code\Common\itkValarrayImageContainer.h(100):
Code\Common\itkValarrayImageContainer.h(145):
Code\Common\itkValarrayImageContainer.h(147):
Code\Common\itkVectorImage.h(250):
Code\Common\itkVectorImage.h(251):
Code\Common\itkVectorImage.h(252):
Code\Common\itkVectorImage.h(253):
Code\Common\itkVectorImageNeighborhoodAccessorFunctor.h(70):
Code\Common\itkZeroFluxNeumannBoundaryCondition.txx(51):
Code\IO\itkImageFileReader.txx(343):
Code\IO\itkImageFileReader.txx(395):
Code\IO\itkImageFileWriter.txx(283):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(497):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(508):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(573):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(580):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(620):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(631):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(696):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(732):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(776):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(787):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(794):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(803):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(887):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(893):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(951):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(960):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1047):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1083):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1118):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1210):
Code\Review\itkOptMattesMutualInformationImageToImageMetric.txx(1216):
Matching lines: 121    Matching files: 38    Total files searched: 2359

Filters

We could consider here at least three types of filters:

  • Filters that would directly work with this slice-contiguous memory model. These include some intensity or histogram-based filters for basic operations.
  • Filters that would work with this slice-continguous memory model with adaptations. These may include filters that operate on neighbourhoods.
  • Filters that definitely won't work with this model, for example because they need all the input to generate the output. This is the case of current RecursiveGaussian filters. This could be check via Concept Checking so these filters could not be instantiated with SliceImages.

Ideally an strategy should be devised that would allow having in memory the region that is currently being processed (current neighborhood). There should be a balance between loading and processing. Loading and processing could even go in separate but synchronized threads, so that, when processing starts the region is already loaded. Ideally this would be transparent to the user.




ITK: [Welcome | Site Map]