<div dir="ltr">Being more specific would depend on what your bitmap looked like and how you wanted to segment it before vectorizing.<div><br></div><div>I assume you would want to do this in a purely OSG/OpenGL/GLSL environment without going to OpenCL or CUDA. So, this is defined in terms of multiple OSG-like rendering passes, each with a single simple operation.</div><div><br></div><div>From my imagination:<div><br></div><div>1. Run a later pass on the RTT rasterizing a fullscreen quad and using the RTT output texture as an input. Here, you perform any downsampling and per-pixel computation necessary to process the input values into a pure binary segmentation of 0 or 1 values. Optimally, at this point you could also compute the XY screen space bounding box of the 0 and 1 regions to restrict the regions the later passes run on.</div><div><br></div><div>2. Run a second pass on a screen-sized quad which uses the output of the first pass as an input texture (nearest neighbor sampling mode) and has a fragment shader which examines the corresponding pixel in the input texture, comparing it to eight of its neighbors. If the center pixel differs from any of the eight neighbors, it could be an 'edge' pixel, and the orientation of a short edge segment at this location should be determined based on the 8 surrounding pixels, and recorded in a Transform Feedback output buffer. Each output segment will represent a one-pixel long fraction of the edge boundary between 1 and 0 regions. You'll probably need to handle edges that reach the sides of the screen by closing the loop around the screen edge somehow, depending on whether you need a closed line loop or an open line segment as the final product.</div></div><div><br></div><div>3. Run a third pass (this might be easier with looping constructs on the CPU side, but maybe the GPU can do it still) on the single-pixel-long edge segments to assemble the fragments, in order, to complete a line segment. This will be output as another Transform Feedback buffer.</div><div><br></div><div>4. Optionally, run a 4th pass using the line string from the 3rd pass, to optimize/simplify the segments based on merging them together using length and turning radius rules to coalesce small features or long straight 1-pixel segments into one longer, multi-pixel-long segment.</div><div><br></div><div>Extract the final line string from the transform feedback buffer into CPU space for use.</div><div><br></div><div>I've been trying to find you an example, but my search terms are colliding with other synonymous words like "tracing" and "vectorizing" and turning up the wrong info.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 5, 2019 at 4:03 PM Trajce Nikolov NICK <<a href="mailto:trajce.nikolov.nick@gmail.com" target="_blank">trajce.nikolov.nick@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Thanks Chris!</div><div><br></div><div>any links? I am interested<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 5, 2019 at 2:43 PM Chris Hanson <<a href="mailto:xenon@alphapixel.com" target="_blank">xenon@alphapixel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Sorry, Nick, I missed this query of yours!<div><br></div><div>I could have given you some suggestions. If your OpenCV solution ever is inadequate, you could probably make something really fast in GPU using transform feedback. Could even do simplification in-GPU too.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 5, 2019 at 2:11 PM Trajce Nikolov NICK <<a href="mailto:trajce.nikolov.nick@gmail.com" target="_blank">trajce.nikolov.nick@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi Community,</div><div><br></div><div>just if someone else will need this:</div><div><br></div><div>I was able to work it with OpenCV. But if you really want to exercise it here is a nice link with different algorithms explained in big detail:</div><div><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4813928/" target="_blank">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4813928/</a></div><div><br></div><div>Cheers,</div><div>Nick<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 2, 2019 at 1:03 PM Trajce Nikolov NICK <<a href="mailto:trajce.nikolov.nick@gmail.com" target="_blank">trajce.nikolov.nick@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi Community,</div><div><br></div><div>This is a bit more CG question rather then OSG related, but I think there are lots of CG folks in this community so I dare to ask</div><div><br></div><div>I am after processing of a rendering outline of a scene (which is a bitmap as a result of RTT in OSG) and then having this outline as an array of 2D coordinates. And preferable close to real time. Anyone with some suggestions?</div><div><br></div><div>Thanks a bunch as always! Meanwhile I am googling this one</div><div><br></div><div>Cheers,</div><div>Nick<br></div><br>-- <br><div dir="ltr" class="gmail-m_7792940239350551101gmail-m_8959677152288236073gmail-m_1775378864422525699gmail-m_3005109804979804611gmail-m_-3808191986090640483gmail_signature">trajce nikolov nick<br></div></div>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail-m_7792940239350551101gmail-m_8959677152288236073gmail-m_1775378864422525699gmail-m_3005109804979804611gmail_signature">trajce nikolov nick<br></div>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_7792940239350551101gmail-m_8959677152288236073gmail-m_1775378864422525699gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div style="text-align:center">Chris 'Xenon' Hanson, omo sanza lettere. Xenon@AlphaPixel.com <a href="http://www.alphapixel.com/" target="_blank">http://www.alphapixel.com/</a></div><div style="text-align:center">Training • Consulting • Contracting</div><div style="text-align:center">3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL</div><div style="text-align:center"><span style="font-size:12.8px">Legal/IP •</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px">Forensics •</span><span style="font-size:12.8px"> </span>Imaging <span style="font-size:12.8px">•</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px">UAVs </span><span style="font-size:12.8px">• GIS • GPS • osgEarth • Terrain • Telemetry • Cryptography • LIDAR • Embedded • Mobile • iPhone/iPad/iOS • Android</span></div><div style="text-align:center"><a href="https://twitter.com/alphapixel" target="_blank">@alphapixel</a> <a href="http://facebook.com/alphapixel" target="_blank">facebook.com/alphapixel</a> (775) 623-PIXL [7495]<br></div></div></div></div></div></div>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail-m_7792940239350551101gmail-m_8959677152288236073gmail_signature">trajce nikolov nick<br></div>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_7792940239350551101gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div style="text-align:center">Chris 'Xenon' Hanson, omo sanza lettere. Xenon@AlphaPixel.com <a href="http://www.alphapixel.com/" target="_blank">http://www.alphapixel.com/</a></div><div style="text-align:center">Training • Consulting • Contracting</div><div style="text-align:center">3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL</div><div style="text-align:center"><span style="font-size:12.8px">Legal/IP •</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px">Forensics •</span><span style="font-size:12.8px"> </span>Imaging <span style="font-size:12.8px">•</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px">UAVs </span><span style="font-size:12.8px">• GIS • GPS • osgEarth • Terrain • Telemetry • Cryptography • LIDAR • Embedded • Mobile • iPhone/iPad/iOS • Android</span></div><div style="text-align:center"><a href="https://twitter.com/alphapixel" target="_blank">@alphapixel</a> <a href="http://facebook.com/alphapixel" target="_blank">facebook.com/alphapixel</a> (775) 623-PIXL [7495]<br></div></div></div></div></div></div>