MATLAB(7)

筅森魡賤 提交于 2020-01-26 18:17:49

MATLAB(第七讲)


形态学处理应用


找出图中的文字

在这里插入图片描述
效果

在这里插入图片描述

思路

利用腐蚀膨胀和图像重建,在文字所在地方利用重建,找出文字

步骤

  1. 先把图像转换为灰度图
    在这里插入图片描述
  2. 再把图像转换为二值图
    观察灰度图,发现灰色部分较多,而字的白色较明显,可以利用imbinarize的参数,将偏灰的一些元素变为黑色,将特别白的地方转化为白色。

在这里插入图片描述

imbinarize 函数的使用具体见第四讲。
代码:
clear,clc,close all; f=imread('ws.jpg'); g=rgb2gray(f); imshow(g); bw_just=imbinarize(g,0.99); %将大于灰度图取值的0.99的部分转换为白色,小于的转换为黑色 figure,imshow(bw_just);

  1. 去除多余的小对象
    通过观察可以看到,在字的旁边有很多杂乱的小对象,可以用 bwareaopen 去除。

    在这里插入图片描述

    新增代码为:

    bw_ao=bwareaopen(bw_just,100);  %去除大小小于100的对象
    figure,imshow(bw_ao);	
    
  2. 利用默认参数将原图转换为二值图
    本例的目的为得到中间的几个字,上一步所处理得到的图像为字的一部分,自然可以想到利用在原图的重建,得到字体,因此先将原图转换为二值图,便可得到清晰的四个字,如下所示:
    在这里插入图片描述新增代码为:

b=imbinarize(g,0.5);
figure,imshow(b),title('原图');
  1. 膨胀连接所有字体的小部分
    观察可以发现,每个字体的上下或左右结构可能有间隔,最好的办法是对上一步得到的二值图进行膨胀,让每个字都连接成一个连通的部分,然后利用第三步的少部分字体的图在连接好的字体上重建,可以得到膨胀的字体。
    在这里插入图片描述
    新增代码为:
fd=imdilate(b,strel("disk",2));
bw_re=imreconstruct(bw_ao,fd);
figure,imshow(bw_re),title('膨胀后重建');
  1. 观察可知,只需要在二值图上进行重建,即可找出原字体的图像
    在这里插入图片描述

本例代码为:

clear,clc,close all;
f=imread('ws.jpg');
g=rgb2gray(f);
imshow(g);

bw_just=imbinarize(g,0.99);
figure,imshow(bw_just);

bw_ao=bwareaopen(bw_just,100);
figure,imshow(bw_ao);

b=imbinarize(g,0.5);
figure,imshow(b),title('原图');

fd=imdilate(b,strel("disk",2));
bw_re=imreconstruct(bw_ao,fd);
figure,imshow(bw_re),title('膨胀后重建');

bw_rer=imreconstruct(bw_re,b);
figure,imshow(bw_rer);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!