PPT里面的练习:

MATLAB_图形学_形态学课程_找出薛之谦的歌词所有字数_像素点

原图:

MATLAB_图形学_形态学课程_找出薛之谦的歌词所有字数_像素点_02

结果:

MATLAB_图形学_形态学课程_找出薛之谦的歌词所有字数_灰度图_03

思想:

文字比较特殊,如果操作不慎。就会大肆粘连。影响判断。

因此,必须用不改变大小的开运算,闭运算操作。

使用到,标记联通分量。

这个是找到一个图像里面的所有连接在一起的所有像素点。

bwlabel():支持灰度图,以及二值图。不过目前我觉得灰度图没有意义。

就需要转换为二值图。

第一次,闭运算。里面变得融合在一起。文字大小不改变。

但是,仍然不完美。这里就说思想,如果,上下分开啦。那么就是用膨胀。strel(‘line’,1,90)上下的话就使用90度。

如果,左右不小心粘连在一起,那么就是用腐蚀。也可以使用线条,但是我用的disk,同样做出来啦。

 

代码:

clc,clear,close all;
f=imread('h1.jpg');
f=~im2bw(f);
figure,imshow(f);
f1=imclose(f,strel('disk',1));
figure,imshow(f1);
f2=imdilate(f1,strel('line',10,90));
figure,imshow(f2);
f3=imerode(f2,strel('disk',1));
figure,imshow(f3);
[k,n]=bwlabel(f3);

for i=1:n
[r,c]=find(k==i)
mr=mean(r);mc=mean(c);
hold on;
plot(mc,mr,'r*');
end

n

OK