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("大圆");

大圆出来了,小圆也就好做了。
浙公网安备 33010602011771号