0
点赞
收藏
分享

微信扫一扫

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字

晒大太阳了 2022-07-27 阅读 72


关于温馨饭店的!
原图:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_邻域


目的:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_二值图像_02


思路:

首先转化为二值图:

然后膨胀一下,这个是因为不进行膨胀的话,第二个字:温馨的“馨”。无法进行图像恢复。

没有连接到一起就会得到下面的结果:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_邻域_03


可以看到,上面的那一部分丢失啦。这个就是重建图形只会重建连接在一起的图形。

接下来就是缩小研究范围,通过截取高亮度:im2bw(f,0.99);

​​im2bw函数的用法​​ 得到:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_二值图像_04


接下来去除小对象:

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

bwareaopen是matlab函数,作用是删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。

本例是用100 邻域。

不去除小对象,直接重建的话:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_二值图像_05


使用去除小对象之后的还原;

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_邻域_06


因为之前进行了膨胀处理,所以要还原回来:

bw_re=imreconstruct(bw_ao,bw_dilate);
figure,imshow(bw_re);

对比图:

MATLAB_图形学_形态学课程_温馨饭店招牌&扣出‘温馨饭店’四个大字_邻域_07


然后,进行切割就好啦:

[r,c]=find(rr);
result=rr(min(r):max(r),min(c):max(c));
figure,imshow(result)

全部代码:

clc,clear,close all;
f=imread('ws.jpg');
g=rgb2gray(f);
imshow(g)
bw=im2bw(f);
figure,imshow(bw)
se=strel('disk',2);
bw_dilate=imdilate(bw,se);
figure,imshow(bw_dilate);

bw_adjust=im2bw(f,0.99);
figure,imshow(bw_adjust)
bw_ao=bwareaopen(bw_adjust,100);
figure,imshow(bw_ao)
%bwareaopen是matlab函数,
%作用是删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。

bw_re=imreconstruct(bw_ao,bw_dilate);
figure,imshow(bw_re);

rr=imreconstruct(bw_re,bw);
figure,imshow(rr)
[r,c]=find(rr);
result=rr(min(r):max(r),min(c):max(c));
figure,imshow(result)


举报

相关推荐

0 条评论