0
点赞
收藏
分享

微信扫一扫

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码

jjt二向箔 2022-07-12 阅读 81


原图:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识


目标:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_02


好吧,第一步我们应该去除边框。

先转换为二值图:

代码:

bw=im2bw(f);
figure,imshow(bw);

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_03


新知识,因为要用到去边框函数。所以要进行切割,贴合白边切割:

利用find()函数:

代码:

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

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_04


去边框函数:

imclearborder();

注意,你操作的东西不能和边框粘连在一起!!!

ok。

代码:

bw=imclearborder(bw);
figure,imshow(bw);

成功去掉:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_05


为了去掉图中的小点点。我们使用去除小对象:

bw_ao=bwareaopen(bw,150);
figure,imshow(bw_ao);

得到:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_06


因为,本例子是:川。我采用的是利用线条:line来进行腐蚀:

bw_erode=imerode(bw_ao,strel('line',10,0));
figure,imshow(bw_erode);

得到:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_07


然后,再进行修复操作:

bw_re=imreconstruct(bw_erode,bw);
figure,imshow(bw_re);

最后,修复过之后:

恢复了原来胖胖的样子:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_08

然后,原二值图减去上面这个胖胖的图:

chuan=bw_ao-bw_re;
figure,imshow(chuan);

得到:

MATLAB_图形学_形态学课程_有川字的车牌牌&扣出‘川’字以及车牌号码_新知识_09


全部代码:

clear,clc,close all;
f=imread('cl.jpg');
imshow(f);

bw=im2bw(f);
figure,imshow(bw);

[r,c]=find(bw);
bw=bw(min(r):max(r),min(c):max(c));
figure,imshow(bw);
bw=imclearborder(bw);
figure,imshow(bw);

bw_ao=bwareaopen(bw,150);
figure,imshow(bw_ao);

bw_erode=imerode(bw_ao,strel('line',10,0));
figure,imshow(bw_erode);

bw_re=imreconstruct(bw_erode,bw);
figure,imshow(bw_re);

chuan=bw_ao-bw_re;
figure,imshow(chuan);


举报

相关推荐

0 条评论