答案 0 :(得分:6)
这里有一些代码可以让你继续......这不是完美的,但它是一种有趣的哈哈。
我所做的是用磁盘结构元素侵蚀图像,直到图像中剩下的形状看起来最像圆形。然后我再次被侵蚀,但这次是一个线条结构元素,其取向与笔记的角度接近;我认为它大约是15度。
之后,调用regionprops
获取质心,然后绘制它们。
代码:
clear
clc
BW = im2bw(imread('Notes.png'));
BW = imclearborder(BW);
%//Erode the image with a disk structuring element to obtain circleish
%// shapes.
se = strel('disk',2);
erodedBW = imerode(BW,se);
此处erodedBW
如下所示:
%// Erode again with a line oriented at 15 degrees (to ~ match orientation of major axis of notes...very approximate haha)
se2 = strel('line',5,15);
erodedBW2 = imerode(erodedBW,se2);
erodedBW2
看起来像这样:
然后找到质心并绘制它们
S = regionprops(erodedBW2,'Centroid');
figure;
imshow(BW)
hold on
for k = 1:numel(S)
scatter(S(k).Centroid(:,1), S(k).Centroid(:,2),60,'filled')
end
输出:
我没有检测到空白音符,但我可以使用其他形态学操作进行管理。
希望有所帮助!