擅长:python、mysql、java
<p>下面的一组说明(使用Matlab图像处理工具箱)似乎对您的图像很有效:</p>
<ol>
<li><p>使用中值过滤器模糊图像(Im)以减少噪声:</p>
<pre><code>ImB=medfilt2(Im,[20 20]);
</code></pre></li>
<li><p>使用sobel mask找到边缘,将其放大一点以连接紧密的组件,然后“清洁”整个图像以去除小区域</p>
^{pr2}$
<p><img src="https://i.stack.imgur.com/UbUKw.png" alt="EdgeClean.png"/></p></li>
<li><p>然后有两个区域,可以使用bwlabel分别检测</p>
<pre><code>L=bwlabel(EdgeClean);
</code></pre></li>
<li><p>最后,绘制L=1和L=2对应的两个区域</p>
<pre><code>[x1 y1] = find(L==1);
[x2 y2] = find(L==2);
plot(y1,x1,'g',y2,x2,'r')
</code></pre>
<p><img src="https://i.stack.imgur.com/1Zc8h.png" alt="ImZones.png"/></p></li>
</ol>
<p>没有太多的步骤,因为你的初始图像很好,除了噪音。你可能需要发挥一些参数,因为我从你的图片下载版本开始,这可能是质量低于原来的一个。当然,这是一个最小的代码,但我仍然希望这将有所帮助。在</p>