在图像中查找笔记

时间:2015-02-24 16:41:48

标签: matlab image-processing

我有这样的图像。我想找到笔记的位置。找到它们的最佳方法是什么? (它们不是圆圈,它们太小,所以圆圈找不到它们!)

enter image description here

Image of Notes !

1 个答案:

答案 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如下所示:

enter image description here

%// 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看起来像这样:

enter image description here

然后找到质心并绘制它们

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

输出:

enter image description here

我没有检测到空白音符,但我可以使用其他形态学操作进行管理。

希望有所帮助!