% function [d]=main()
close all
clc % 清空命令窗口的所有输入和输出,类似于清屏
%自动弹出提示框读入图像
[filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入%
file=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名
I=imread(file);
figure('name','原图'),imshow(I);title('原图')
%图像增强
% h=ones(5,5)/25; %过滤器h
% I=imfilter(I,h);%真彩色增强
% figure('name','真彩色增强');imshow(I);title('真彩色增强');
I1=rgb2gray(I); % RGB图像转灰度图像
figure('name','灰度处理前'),subplot(1,2,1),imshow(I1);title('灰度处理前的灰度图');
subplot(1,2,2),imhist(I1);title('灰度处理前的灰度图直方图');
%线性灰度变换
I1=imadjust(I1,[0.3,0.7],[]);
figure('name','灰度处理后'),subplot(1,2,1),imshow(I1);title('灰度处理后的灰度图');
subplot(1,2,2),imhist(I1);title('灰度处理后的灰度图直方图');
%进行中值滤波
I1=medfilt2(I1);
figure,imshow(I1);title('中值滤波');
%边缘检测:sobel,roberts,canny,prewitt等
I2=edge(I1,'roberts',0.25,'both'); %边缘检测算法,强度小于阈值0.15的边缘被省略掉,'both'两个方向检测(缺省默认)
figure('name','边缘检测'),imshow(I2);title('robert算子边缘检测')
se=[1;1;1];
I3=imerode(I2,se);% 腐蚀Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象
figure('name','腐蚀后图像'),imshow(I3);title('腐蚀后的图像');
se=strel('rectangle',[20,20]);% 25X25的矩形 strel???
I4=imclose(I3,se);% 用25*25的矩形对图像进行闭运算(先膨胀后腐蚀)有平滑边界作用
figure('name','平滑处理'),imshow(I4);title('平滑图像的轮廓');
I5=bwareaopen(I4,1000);% 从二进制图像中移除所有少于2000像素的连接对象,消失的是连续的白色像素数量少于2000的字符
figure('name','移除小对象'),imshow(I5);title('从对象中移除小对象');
[y,x,z]=size(I5);% y是行数,x是列数,z是维数
myI=double(I5);% 转成双精度型
tic % 开始计时
Blue_y=zeros(y,1);% zeros(M,N) 表示的是M行*N列的全0矩阵
for i=1:y
for j=1:x
if(myI(i,j,1)==1) %% 判断蓝色像素
Blue_y(i,1)= Blue_y(i,1)+1;% 蓝色像素点统计
end
end
end
[temp MaxY]=max(Blue_y);% Y方向车牌区域确定 [temp MaxY]临时变量MaxY
PY1=MaxY; % 以下为找车牌Y方向最小值
while ((Blue_y(P
matlab 车牌识别源码,车牌识别的matlab程序
最新推荐文章于 2024-09-27 11:30:18 发布
这段MATLAB代码详细展示了如何进行车牌识别,包括图像预处理、边缘检测、区域定位、字符分割等步骤,最终实现车牌字符的识别与输出。
摘要由CSDN通过智能技术生成