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