Matlab形态学——大小球提取

        数图第五次小作业,用数学形态学分离下图(灰度图)的大小球。

        

 

        第一反应肯定是用腐蚀和膨胀做,但发现如果我利用相同的算子进行腐蚀和膨胀后,得到的圆形并不圆:

        Se = strel("disk", 14);

        p1 = imerode(img,Se);

        p2 = imdilate(p1,Se);

       

        这是显然会出现的情况,因此我们需要用一些其它的办法使其变回圆形,即用索引值的方法。

        首先腐蚀后用更大半径的算子进行膨胀,使得大球“更大”,之后将其逻辑化(logical())作为掩膜,再在原图中取掩膜的索引。

        Se= strel("disk",14);

        enrode_img = imerode(Neg_img,Se);

  imshow(enrode_img),title("腐蚀得到的效果图");
  Se2 = strel("disk",18);
  dilate_img = 255 - imdilate(enrode_img,Se2);
  p3 = imbinarize(dilate_img);
  p4 = img;

        # 索引即为,当 logical(p3) 的值为 1 时,相应像素点置为 242;当其为0的时候,保持原像素点的灰度值
  p4(logical(p3)) = 242; # 索引
  imshow(p4),title("大圆");

       

        大圆出来了,小圆也就好做了。

 

 

 

       

 

posted @ 2020-12-08 01:45  Taskii  阅读(184)  评论(0)    收藏  举报