<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hello,<br>
<br>
For selecting a ROI of any shape, after displaying the grayplot:<br>
<ul>
<li>plot(x,y) at least a segment around the middle of the
grayplot.<br>
Choose an appropriate line color.</li>
<li>run useditor(gcf().figure_id)</li>
<li>interact with the initial segment :</li>
<ul>
<li>click on a link to insert a point</li>
<li>click on and drag a point to move it with its links to
neighboors</li>
<li>double-click on a point to delete it</li>
</ul>
<li>Doing that = define your area. Interactions are not "modal"
= after <br>
running useeditor(), Scilab does not wait for it returning.
And when the editor<br>
is quit (right-click + Exit), no signal is sent to the
console, and AFAIK there is<br>
no way to read out the current status of this editor.<br>
</li>
<li>Then, gce().children.data returns the XY Nx2 matrix of
coordinates of your curve.<br>
</li>
<li>You close it: XY($+1,:) = XY(1,:)</li>
</ul>
<p>This ends the selection part.<br>
</p>
<p>After that, identifying points of your grayplot area being in
the curve may be done with<br>
point_in_polygon:
<a class="moz-txt-link-freetext" href="https://fileexchange.scilab.org/toolboxes/121000">https://fileexchange.scilab.org/toolboxes/121000</a><br>
However, this script is not vectorized. So, if your full area
has big sizes, it may takes a while.<br>
</p>
<p>I would not guaranty that point_in_polygon() can be vectorized,
but we may try to.<br>
It does not look too bad, at first sight :)<br>
</p>
<p>HTH<br>
Regards<br>
Samuel<br>
</p>
Le 11/03/2016 11:01, Philipp Mühlmann a écrit :<br>
</div>
<blockquote
cite="mid:CACf7ODvrpLQqB=Jp4G=o3Um31ptt8Ugwr0kSh=KVt3sCaQiEOQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>...so to better explain my purpose:</div>
<div><br>
</div>
<div>Assumptions:</div>
<div><br>
</div>
<div>- one has a 2D Array of data or a gray scale Image</div>
<div>- one wants to select the Region of interest via mouse
clicks, by clicking into the Image</div>
<div>- the ROI can be of any shape (triangle, rectangle,
parallelogram, 5-point star ...etc)</div>
<div>- one wants to Display only the ROI...everything outside of
the ROI should be set to 0</div>
<div><br>
</div>
<div>purpose of ROI</div>
<div>- one wants to process only a part of the input Image in
such a way that:</div>
<div><br>
</div>
<div> -if Pixel belongs to ROI than process Image</div>
<div>- if Pixel does not belong to ROI do nothing</div>
<div><br>
</div>
<div><br>
</div>
<div>So since I somehow can't figure it out how to:</div>
<div><br>
</div>
<div>- calculate by hand if a pixel is left, right, above
or below a line defined by two points (to bad, i know)</div>
<div><br>
</div>
<div>and therfore </div>
<div><br>
</div>
<div>- sort pixels in such a way that they either belong to the
ROI or not</div>
<div><br>
</div>
<div>I use the mentioned approach.</div>
<div><br>
</div>
<div><br>
</div>
<div>Here the code:</div>
<div><br>
</div>
<div><br>
</div>
<div>
<pre style="font-family:Monospaced;font-size:12px;font-style:normal"><span style="color:rgb(176,24,19)">function</span> <span style="color:rgb(74,85,219)">[</span><span style="color:rgb(131,67,16);font-weight:bold">ROI</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(131,67,16);font-weight:bold">ROIpoints</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(0,0,0);text-decoration:underline">RoiImage</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16);font-weight:bold">img</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">cols</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">size</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16);font-weight:bold">img</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">c</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">rows</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">size</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16);font-weight:bold">img</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">r</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">f</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(174,92,176);text-decoration:underline">figure</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(174,92,176);text-decoration:underline">ShowImage</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">im</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">click with mouse into image</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span> <span style="color:rgb(100,174,100);font-style:italic">// use of IDP function, could be exchanged by Matplot()</span>
<span style="color:rgb(0,0,0)">a</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(174,92,176);text-decoration:underline">gca</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">a</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">margins</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(74,85,219)">[</span><span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(50,185,185)">messagebox</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">[</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">left click into the image to get ROI borders</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(0,0,0)">;</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">end with any other button</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(0,0,0)">,</span> <span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">Information</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(0,0,0)">,</span> <span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">info</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(0,0,0)">,</span> <span style="color:rgb(74,85,219
)">[</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">OK</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(74,85,219)">)</span>
<span style="color:rgb(0,0,0)">ibutton</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">3</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">nr_points</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">0</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">while</span> <span style="color:rgb(0,0,0)">ibutton</span> <span style="color:rgb(92,92,92)">==</span> <span style="color:rgb(188,143,143)">3</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(74,85,219)">[</span><span style="color:rgb(0,0,0)">ibutton</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">xcoord</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">ycoord</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(50,185,185)">xclick</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">if</span> <span style="color:rgb(0,0,0)">ibutton</span> <span style="color:rgb(92,92,92)">==</span> <span style="color:rgb(188,143,143)">3</span> <span style="color:rgb(160,32,240)">then</span>
<span style="color:rgb(0,0,0)">nr_points</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(0,0,0)">nr_points</span> <span style="color:rgb(92,92,92)">+</span> <span style="color:rgb(188,143,143)">1</span>
<span style="color:rgb(174,92,176);text-decoration:underline">plot</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">xcoord</span><span style="color:rgb(0,0,0)">,</span> <span style="color:rgb(0,0,0)">ycoord</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">o</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(131,67,16);font-weight:bold">ROIpoints</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">nr_points</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(255,170,0)">:</span><span style="color:rgb(74,85,219)">)</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">double</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">[</span><span style="color:rgb(0,0,0)">xcoord</span> <span style="color:rgb(0,0,0)">ycoord</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">end</span>
<span style="color:rgb(160,32,240)">end</span>
<span style="color:rgb(0,0,0)">nr_points</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">max</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(50,185,185)">size</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16);font-weight:bold">ROIpoints</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">if</span> <span style="color:rgb(0,0,0)">nr_points</span> <span style="color:rgb(92,92,92)"><</span> <span style="color:rgb(188,143,143)">3</span> <span style="color:rgb(160,32,240)">then</span>
<span style="color:rgb(50,185,185)">mprintf</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">not enough points \n</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(50,185,185)">mprintf</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">ROI requires minimal 3 points \n</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(131,67,16);font-weight:bold">ROI</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">0</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(95,158,160)">return</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">end</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">f</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(174,92,176);text-decoration:underline">figure</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">f</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">background</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">8</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">f</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">axes_size</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(74,85,219)">[</span><span style="color:rgb(0,0,0)">cols</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">rows</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">x</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(131,67,16);font-weight:bold">ROIpoints</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(255,170,0)">:</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">y</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(131,67,16);font-weight:bold">ROIpoints</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(255,170,0)">:</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">2</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(50,185,185)">xfpolys</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">y</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(74,85,219)">[</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span> <span style="color:rgb(100,174,100);font-style:italic">// how does xfpolys know which area to fill? Is this area stored somewhere as a variable?</span>
<span style="color:rgb(0,0,0)">a</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(174,92,176);text-decoration:underline">gca</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">a</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">tight_limits</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">"</span><span style="color:rgb(188,143,143)">on</span><span style="color:rgb(188,143,143)">"</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">a</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">data_bounds</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(74,85,219)">[</span><span style="color:rgb(188,143,143)">0</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">0</span><span style="color:rgb(0,0,0)">;</span><span style="color:rgb(0,0,0)">cols</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">rows</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">a</span><span style="color:rgb(92,92,92)">.</span><span style="color:rgb(170,170,170)">margins</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(74,85,219)">[</span><span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span> <span style="color:rgb(188,143,143)">0</span><span style="color:rgb(74,85,219)">]</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(50,185,185)">xs2bmp</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(174,92,176);text-decoration:underline">gcf</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">mask.bmp</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">maskIm</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(174,92,176);text-decoration:underline">RGB2Gray</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(174,92,176);text-decoration:underline">ReadImage</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">mask.bmp</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span> <span style="color:rgb(100,174,100);font-style:italic">// uses IDP functions</span>
<span style="color:rgb(50,185,185)">deletefile</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(188,143,143)">mask.bmp</span><span style="color:rgb(188,143,143)">'</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(131,67,16);font-weight:bold">ROI</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">zeros</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">rows</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">cols</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(0,0,0)">pos</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">find</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">maskIm</span> <span style="color:rgb(92,92,92)"><</span> <span style="color:rgb(188,143,143)">255</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(131,67,16);font-weight:bold">ROI</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">pos</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(50,185,185)">delete</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(176,24,19)">endfunction</span></pre>
<br>
</div>
<div><br>
</div>
<div><br clear="all">
<br>
-- <br>
</div>
<div class="gmail_extra">
<div>There we have the salad.</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</body>
</html>