<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Michael,<div><br><div><div>On 29 Aug 2014, at 13:09, Michael Ellis <<a href="mailto:michael.ellis@dsuk.biz">michael.ellis@dsuk.biz</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I am trying to learn about ImgLib2<br><br>In particular I could do with help for the following:<br><br>All my images will be 2D byte images typically of size 1300x1000.<br><br>How do I get an Img into a format compatible for displaying within JavaFX (rather than using ImageJFunctions.show() )?<br>Assuming there is no explicit JavaFX support in ImgLib2, I think this boils down to producing and 24 bit RGB or 32bit ARGB image where I can access the data. But how do I do this?</blockquote><div><br></div><div>Have a look at <span style="font-family: Monaco; font-size: 11px;">ARGBScreenImage </span>which extends <span style="font-family: Monaco; font-size: 11px;">ArrayImg< ARGBType, IntArray >.</span></div><div>This s a 2D image intended for displaying on screen. You can get to the underlying 32bit ARGB int[] array by</div><div><div style="margin: 0px; font-size: 11px; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">public</span> <span style="color: #931a68">int</span>[] getData()</div><div>or get it wrapped in a AWT BufferedImage by</div></div></div><div><div style="margin: 0px; font-size: 11px; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre"> </span><span style="color: #931a68">public</span> BufferedImage image()</div><div><br></div><blockquote type="cite"><br>How would I combine multiple 2D 8 bit image planes (up to 7 planes, each with own colour table) and combine them under programatic control into a single RGB image where every pixel in the destination image dest[x, y] is a function of the pixels at src[plane, x, y]?<br></blockquote><div><br></div><div>See</div><div><div><span style="font-family: Monaco; font-size: 11px;">net.imglib2.display.projector.composite.CompositeXYProjector</span></div><div>or </div><div></div><div><span style="font-family: Monaco; font-size: 11px;">net.imglib2.display.projector.composite.</span><span style="font-family: Monaco; font-size: 11px;">CompositeXYRandomAccessibleProjector</span></div><div><div>They should do exactly what you need. Note, that they expect that [x, y] of your image to composite are the first two dimensions. So it would work with [x, y, …, plane, …].</div><div>If you really have [plane, x, y], you can use Views.permute(...) to get a virtual view into your data as [x, y, plane].</div><div></div></div><div><span style="font-family: Monaco; font-size: 11px;"><br></span></div></div><blockquote type="cite"><br>How would I  threshold a 2D Img producing a 1 bit Img?<br></blockquote><div><br></div><div>You could simply do this by implementing a Converter< __YourImageType__, BitType > and then using Converters.convert(...) to get a virtual view into your data as a thresholded  1 bit image.</div><br><blockquote type="cite">How would I fill holes in the binary thresholded Img?<br></blockquote><div><br></div><div>Have a look through imglib2-algorithms, imglib2-algorithms, and imglib2-ops. There should be something there.</div><br><blockquote type="cite">How could I identify and label objects in the binary thresholded Img and extract a concise description of the object boundaries (e.g. polygon, or chain code descriptions)?<br></blockquote><div><br></div><div>To identify objects you could use</div><div><div style="margin: 0px; font-size: 11px; font-family: Monaco;">net.imglib2.algorithm.labeling.AllConnectedComponents</div></div><div>About the object descriptions, I don’t think we have anything for that, but I’m not sure. Maybe someone familiar with imglib2-ops can comment?</div><div><br></div><div>best regards,</div><div>Tobias</div><br><blockquote type="cite"><br>How can I register a multiple  Imgs using cross correlation image registration?</blockquote><blockquote type="cite"><br>Any help would be appreciated. I’m not looking for complete solutions to this and whilst this work is intended for a commercial product, I am happy to contribute all the source code examples I generate by way of investigating any of the above.<br><br>— Michael Ellis<br>Digital Scientific UK Ltd.<br><br><br><br><br><br><br>_______________________________________________<br>ImageJ-devel mailing list<br><a href="mailto:ImageJ-devel@imagej.net">ImageJ-devel@imagej.net</a><br>http://imagej.net/mailman/listinfo/imagej-devel<br></blockquote></div><br></div></body></html>