思想:
以第一个为例,因为其他的就是调整了一些参数。具体思想并没有改变。
顶帽操作,与底帽操作:参考,轻点
高帽变换和低帽变换是数学形态学中重要的运算形式,有形态学中最基本的运算如膨胀、腐蚀组合实现。
高帽变换是通过利用原始图像与原始图像开操作的结果图像进行图像减操作实现的;
而低帽变换是通过原始图像闭操作的结果图像与原始图像进行图像减操作实现的。
高帽变换具有高通滤波的特性,适用于处理具有暗背景、亮物体特征的图像。
低帽变换能够检测图像中的谷值,适用于处理具有亮背景、暗物体特征的图像。
顶帽:取出亮度高的地方。
底帽:取出亮度低的地方。
车牌还是属于亮的呀。
利用:bw=im2bw(gth,0.6);分离出来比较亮的部分!
因为数字,边缘特征比较明显,我们就利用边缘函数edge()进行边缘提取处理。
先腐蚀【90度线条腐蚀】,然后再膨胀回来【注意别粘连在一起】
去除小对象:
关于find():https://blog.csdn.net/weixin_42859280/article/details/88765993
是彩色:
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
不是彩色:
rr=f(min(r):max(r),min(c):max(c));
figure,imshow(rr)
rr=f(min(r):max(r),min(c):max(c),:);RGB图像就要这样切割。【具体为啥,我也不知道呀!】
其他四个,就不说啦。原理都一样,具体做法大同小异啦。
car1代码:
clear,clc,close all;
f=imread('c1.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',18));
figure,imshow(gth)
bw=im2bw(gth,0.6);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);
bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',22));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
car1结果:
car2代码:
clear,clc,close all;
f=imread('c2.jpg');
imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',12));
figure,imshow(gth)
bw=im2bw(gth,0.2);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);
bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',25));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
car2结果:
car3代码:
clear,clc,close all;
f=imread('c3.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',12));
figure,imshow(gth)
bw=im2bw(gth,0.4);figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);
bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',20));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,10000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
car3结果:
car4代码:
clear,clc,close all;
f=imread('c4.jpg');figure,imshow(f);
g=rgb2gray(f);figure,imshow(g);
gth=imtophat(g,strel('disk',6));
figure,imshow(gth);
bw=im2bw(gth,0.3);figure,imshow(bw);
bwao=bwareaopen(bw,20);
figure,imshow(cat(2,bw,bwao));
bwedge=edge(bwao);
figure,imshow(bwedge);
bwao=bwareaopen(bwedge,20);
figure,imshow(cat(2,bwedge,bwao));
bwerode=imerode(bwao,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',25));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
[r,c]=find(bwao);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
car4结果:
car5代码:
clear,clc,close all;
f=imread('c5.jpg');imshow(f)
g=rgb2gray(f);figure,imshow(g);
gth=imbothat(g,strel('disk',18));
figure,imshow(gth)
% gg=g-gth;
% figure,imshow(gg);
bw=im2bw(gth,0.4);
figure,imshow(bw);
bwedge=edge(bw);
figure,imshow(bwedge);
bwerode=imerode(bwedge,strel('line',5,90));
figure,imshow(bwerode);
bwdilate=imdilate(bwerode,strel('disk',30));
figure,imshow(bwdilate);
bwao=bwareaopen(bwdilate,20000);
figure,imshow(bwao);
bwao1=bwareaopen(bwao,40000);
figure,imshow(bwao1);
bwao2=bwao-bwao1;
figure,imshow(bwao2);
[r,c]=find(bwao2);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr)
car5结果:
OK!