兄弟们自己看!!!!不想写了
%图像预处理
Image=imread ('C:\car.jpg') ;
Image=imresize(Image,[300 450]);%该函数用于对图像做缩放处理
figure(1),subplot(3,3,1) ,imshow (Image(:,:,3)),title ('原图的B分量图');%输出原图B分量图
%车牌区域与车牌分割
gray=2*Image(:,:,3)-Image(:,:,1)-Image(:,:,2);%代数运算,让车牌蓝底区域更为突出
subplot(3,3,2),imshow(gray),title('B分量图-R分量图');%保留蓝色色域
l=graythresh(gray);%利用Oust法获取图像的阀值
bw=im2bw(gray,l);%根据Oust法分割车牌图像
subplot(3,3,3),imshow(bw),title('Otsu分割');%输出分割得到的图像
bw1=bwareaopen(bw,500);%删除面积小于500的区域
subplot(3,3,4),imshow(bw1),title('删除小面积区域后的图像');
se=strel('square',15);%创建一个边长为15的正方形
bw2=imclose(bw1,se);%闭运算连使整个车牌区域连接在一起
subplot(3,3,5),imshow(bw2),title('闭运算处理后的图像');
%车牌区域的单独截取
stats=regionprops(bw2,'BoundingBox','Centroid');%获取车牌矩形区域,即二值图中值为1的矩形框
bb=stats(1).BoundingBox;%获取车牌矩形区域左上角坐标及矩形的长和宽, bb(1)为矩形框左上角的y坐标,bb(2)为矩形框左上角的x坐标
Img=Image(floor(bb(2)):floor(bb(2)+bb(4)),floor(bb(1)):floor(bb(1)+bb(3)),:);%按获取坐标截取车牌,bb(3)为矩形框的长 ,bb(4)为矩形框的高
subplot(3,3,6),imshow(Img),title('车牌区域图像');
%车牌字符的单独分割
gray=Img(:,:,2);%突出蓝色车牌的白色字体区域
subplot(3,3,7),imshow(gray),title('车牌灰度图');
l=graythresh(gray);%利用Oust发获取图像的阀值
bw3=im2bw(gray,l);%转换为二值图像
subplot(3,3,8),imshow(bw3),title('车牌二值图');
se=strel('line',5,90);%创建一个线条形状,长度,角度
bw4=imclose(bw3,se);%闭运算,连接各字符之间的运算
bw5=imclearborder(bw4);%去除与边界相连部分
bw6=bwareaopen(bw5,100);%删除面积小于100的区域
subplot(3,3,9),imshow(bw6),title('形态学处理');
%输出车牌区域各个字符
stats=regionprops(bw6,'BoundingBox','Centroid');%获取各个字的矩形区域坐标
figure(2),subplot(2,1,1),imshow(Image);title('原图');
subplot(2,1,2),imshow(Img);title('车牌图像');
for i=1:length(stats)
bb = stats(i).BoundingBox;%获取第 i 个字区域左上角坐标及矩形的长和宽 ,bb(1)为矩形框左上角的 y 坐标 ,bb(2)为矩形框左上角的 x 坐标
I=Img(floor(bb(2)):floor(bb(2)+bb(4)),floor(bb(1)):floor(bb(1)+bb(3)),:);%按坐标截取第i个字, ,bb(3)为矩形框的长 ,bb(4)为矩形框的高
I=imresize(I,[100 30]);%大小归一化
str=['第',num2str(i),'个字'];
figure(3),subplot(1,7,i),imshow(I),title(str);%显示第i个字
end