在图像中查找笔记

onl*_*app 1 matlab image-processing

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

在此输入图像描述

笔记的形象!

Ben*_*_11 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);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

没有检测到空注释,但我猜测这可以使用其他形态操作来管理.

希望有所帮助!