<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>