<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 19, 2013 at 12:13 PM, Stephan Preibisch <span dir="ltr"><<a href="mailto:preibisch@mpi-cbg.de" target="_blank">preibisch@mpi-cbg.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Lee,<div><br></div><div>
I think that sounds useful ... can you explain exactly how you want to implement it? It seems like it could work on and return a RandomAccessibleInterval on which one can instantiate RandomAccesses. There could be even two implementations of it. One that precomputes it and one that always computes it on the fly, just when the RandomAccess actually queries a value.</div>
<div><br></div><div>What do you guys think?</div><div><br></div></div></blockquote>Internally, there's a seperable convolution which means that, for an N^dim kernel, you have O(N * dim) operations per pixel instead of O(N^dim) operations, but you need scratchpad memory to accumulate the result. I'm putting the computational logic into a class, Kernel1d, that holds the kernel for the convolution and I'm supplying methods to calculate the value at a single point and to use an IterableInterval over the source data to calculate the intermediate 1d convolutions on a scratchpad RandomAccessible or RandomAccessibleInterval. <div>
<br></div><div>public <T extends NumericType<T>> void reduce(IterableInterval<T> src, IterableInterval<T> dest, ImgFactory<T> factory);</div><div><br></div><div>There are several flavors of methods that use this, but I think the one that I will end up using in my plugin is:<div>
<br></div><div>public <T extends NumericType<T>> RandomAccessibleInterval<T> reduce(Img<T> src);</div><div><br></div><div>which will use the factory of src to create a scratchpad Img for intermediate calculations and for the output image. One neat thing is that it should automagically work with Img<ARGBType> ooo score one brownie point for a good design Stephan.</div>
</div><div><br></div><div>I won't use it, but I'll probably figure out an easy way to generate a RandomAccessibleInterval, given a source RandomAccessible and a destination. Also, since it uses a kernel, the pixels along the output's border are undefined. The method I plan to use returns an interval defined only over valid pixels, but a dogged and misguided user should be able to use some out of bounds strategy to get bogus pixel values along the border.</div>
<div class="gmail_extra"> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div></div><div>Cheers, Steffi</div><div><br><div><div>On Jun 18, 2013, at 11:32 , Curtis Rueden wrote:</div><br><blockquote type="cite"><div dir="ltr">Hi Lee,<div><br></div><div><div>> Do people think that these have enough utility to add to imglib2 (and</div>
<div>> where should they go?) or is it more appropriate to keep them within</div><div>> the project itself?</div>

</div><div><br></div><div>How about in algorithms/core? (Or if GPL licensed: in algorithms/gpl?)</div><div><br></div><div>Package prefix: net.imglib2.algorithm.somethingOrOther? (I leave the choice of "somethingOrOther" to you since I know how much you love naming! ;-)</div>


<div><br></div><div>What do others think?</div><div><br></div><div>Regards,</div><div>Curtis</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 18, 2013 at 10:25 AM, Lee Kamentsky <span dir="ltr"><<a href="mailto:leek@broadinstitute.org" target="_blank">leek@broadinstitute.org</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hi all,<br>As part of an upcoming project, I'm planning to implement the methods described in<br>
<br>

Unser, The L2 Polynomial Spline Pyramid, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 15 # 4, April 1993, p 364 (<a href="http://bigwww.epfl.ch/publications/unser9305.pdf" target="_blank">http://bigwww.epfl.ch/publications/unser9305.pdf</a>)<br>



<br>There are two operations, one that decimates an image by half to generate a smaller image (REDUCE) and one that reconstructs the larger image from the smaller (EXPAND). I'd implement both operations as classes supporting the RandomAccessible interface.<div>



<br></div><div>Do people think that these have enough utility to add to imglib2 (and where should they go?) or is it more appropriate to keep them within the project itself?</div><span><font color="#888888"><div>

<br></div><div>--Lee<br><div><span style="line-height:15px;white-space:nowrap;color:rgb(102,102,102);font-family:arial,sans-serif"><br>
</span></div><div><br></div></div></font></span></div>
<br>_______________________________________________<br>
ImageJ-devel mailing list<br>
<a href="mailto:ImageJ-devel@imagej.net" target="_blank">ImageJ-devel@imagej.net</a><br>
<a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>ImageJ-devel mailing list<br><a href="mailto:ImageJ-devel@imagej.net" target="_blank">ImageJ-devel@imagej.net</a><br><a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
</blockquote></div><br></div></div></blockquote></div><br></div></div>