首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

基于MATLAB的车牌识别系统设计

音视频 180.51KB 26 需要积分: 1
立即下载

资源介绍:

本设计为使用MATLAB的车牌识别程序仿真,是使用MATLAB编程语言和图像处理技术来识别和提取车牌上的字符和数字。本设计包括以下步骤: 1. 图像采集:使用摄像头或其他设备采集车牌图像,本设计自带测试图片。 2. 图像预处理:对图像进行预处理,包括灰度化、二值化和噪声去除等操作,以提高后续的字符分割和识别准确度。 3. 车牌定位:使用图像处理算法来检测和定位车牌区域。 4. 字符分割:在定位的车牌区域中,使用字符分割算法将车牌上的字符分割出来。 5. 字符识别:使用字符识别算法,如模式识别、神经网络等,对分割出的字符进行识别。 6. 结果显示:将识别结果以文字或图像形式显示出来,方便用户查看和使用。 步骤清晰,每一步都有过程图,很直观。
%% clc; clear; close all; [filename filepath] = uigetfile('.jpg', '输入一个需要识别出车牌的图像'); %自动读入图像 file = strcat(filepath, filename); img = imread(file); figure; imshow(img); title('车牌图像'); %% 灰度处理 img1 = rgb2gray(img); % RGB图像转灰度图像 figure; subplot(1, 2, 1); imshow(img1); title('灰度图像'); subplot(1, 2, 2); imhist(img1); title('灰度处理后的灰度直方图'); %% 直方图均衡化 img2 = histeq(img1); %直方图均衡化 figure; subplot(1, 2, 1); imshow(img2); title('灰度图像'); subplot(1, 2, 2); imhist(img2); title('灰度处理后的灰度直方图'); %% 中值滤波 img3 = medfilt2(img2); figure; imshow(img3); title('中值滤波'); %% 边缘提取 img4 = edge(img3, 'sobel', 0.2); figure('name','边缘检测'); imshow(img4); title('sobel算子边缘检测'); %% 图像腐蚀 se=[1;1;1]; img5 = imerode(img4, se); figure('name','图像腐蚀'); imshow(img5); title('图像腐蚀后的图像'); %% 平滑图像,图像膨胀 se = strel('rectangle', [20, 20]); img6 = imclose(img5, se); figure('name','平滑处理'); imshow(img6); title('平滑图像的轮廓'); %% 从图像中删除所有少于1000像素8邻接 img7 = bwareaopen(img6, 1000); figure('name', '移除小对象'); imshow(img7); title('从图像中移除小对象'); %% 切割出图像 [y, x, z] = size(img7); img8 = double(img7); % 转成双精度浮点型 blue_Y = zeros(y, 1); for i = 1:y for j = 1:x if(img8(i, j) == 1) blue_Y(i, 1) = blue_Y(i, 1) + 1; end end end img_Y1 = 1; while (blue_Y(img_Y1) < 5) && (img_Y1 < y) img_Y1 = img_Y1 + 1; end % 找到Y坐标的最大值 img_Y2 = y; while (blue_Y(img_Y2) < 5) && (img_Y2 > img_Y1) img_Y2 = img_Y2 - 1; end % x方向 blue_X = zeros(1, x); for j = 1:x for i = 1:y if(img8(i, j) == 1) % 判断车牌位置区域 blue_X(1, j) = blue_X(1, j) + 1; end end end % 找到x坐标的最小值 img_X1 = 1; while (blue_X(1, img_X1) < 5) && (img_X1 < x) img_X1 = img_X1 + 1; end % 找到x坐标的最小值 img_X2 = x; while (blue_X(1, img_X2) < 5) && (img_X2 > img_X1) img_X2 = img_X2 - 1; end % 对图像进行裁剪 img9 = img(img_Y1:img_Y2, img_X1:img_X2, :); figure('name', '定位剪切图像'); imshow(img9); title('定位剪切后的彩色车牌图像') % 保存提取出来的车牌图像 imwrite(img9, '车牌图像.jpg'); %% 对车牌图像作图像预处理 plate_img = imread('车牌图像.jpg'); % 转换成灰度图像 plate_img1 = rgb2gray(plate_img); % RGB图像转灰度图像 figure; subplot(1, 2, 1); imshow(plate_img1); title('灰度图像'); subplot(1, 2, 2); imhist(plate_img1); title('灰度处理后的灰度直方图'); % 直方图均衡化 plate_img2 = histeq(plate_img1); figure('name', '直方图均衡化'); subplot(1,2,1); imshow(plate_img2); title('直方图均衡化的图像'); subplot(1,2,2); imhist(plate_img2); title('直方图'); % 二值化处理 plate_img3 = im2bw(plate_img2, 0.76); figure('name', '二值化处理'); imshow(plate_img3); title('车牌二值图像'); % 中值滤波 plate_img4 = medfilt2(plate_img3); figure('name', '中值滤波'); imshow(plate_img4); title('中值滤波后的图像'); plate_img5 = my_imsplit(plate_img4); [m, n] = size(plate_img5); s = sum(plate_img5); j = 1; k1 = 1; k2 = 1; while j ~= n while s(j) == 0 j = j + 1; end k1 = j; while s(j) ~= 0 && j <= n-1 j = j + 1; end k2 = j + 1; if k2 - k1 > round(n / 6.5) [val, num] = min(sum(plate_img5(:, [k1+5:k2-5]))); plate_img5(:, k1+num+5) = 0; end end y1 = 10; y2 = 0.25; flag = 0; word1 = []; while flag == 0 [m, n] = size(plate_img5); left = 1; width = 0; while sum(plate_img5(:, width+1)) ~= 0 width = width + 1; end if width < y1 plate_img5(:, [1:width]) = 0; plate_img5 = my_imsplit(plate_img5); else temp = my_imsplit(imcrop(plate_img5, [1,1,width,m])); [m, n] = size(temp); all = sum(sum(temp)); two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:))); if two_thirds/all > y2 flag = 1; word1 = temp; end plate_img5(:, [1:width]) = 0; plate_img5 = my_imsplit(plate_img5); end end figure; subplot(2,4,1), imshow(plate_img5); % 分割出第二个字符 [word2,plate_img5]=getword(plate_img5); subplot(2,4,2), imshow(plate_img5); % 分割出第三个字符 [word3,plate_img5]=getword(plate_img5); subplot(2,4,3), imshow(plate_img5); % 分割出第四个字符 [word4,plate_img5]=getword(plate_img5); subplot(2,4,4), imshow(plate_img5); % 分割出第五个字符 [word5,plate_img5]=getword(plate_img5); subplot(2,3,4), imshow(plate_img5); % 分割出第六个字符 [word6,plate_img5]=getword(plate_img5); subplot(2,3,5), imshow(plate_img5); % 分割出第七个字符 [word7,plate_img5]=getword(plate_img5); subplot(2,3,6), imshow(plate_img5); figure; subplot(5,7,1),imshow(word1),title('1'); subplot(5,7,2),imshow(word2),title('2'); subplot(5,7,3),imshow(word3),title('3'); subplot(5,7,4),imshow(word4),title('4'); subplot(5,7,5),imshow(word5),title('5'); subplot(5,7,6),imshow(word6),title('6'); subplot(5,7,7),imshow(word7),title('7'); word1=imresize(word1,[40 20]); word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); subplot(5,7,15),imshow(word1),title('11'); subplot(5,7,16),imshow(word2),title('22'); subplot(5,7,17),imshow(word3),title('33'); subplot(5,7,18),imshow(word4),title('44'); subplot(5,7,19),imshow(word5),title('55'); subplot(5,7,20),imshow(word6),title('66'); subplot(5,7,21),imshow(word7),title('77'); imwrite(word1,'1.jpg'); % 创建七位车牌字符图像 imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg'); %% 进行字符识别 liccode=char(['0':'9' 'A':'Z' '京辽陕苏鲁浙']); subBw2 = zeros(40, 20); num = 1; % 车牌位数 for i = 1:7 ii = int2str(i); word = imread([ii,'.jpg']); segBw2 = imresize(word, [40,20], 'nearest'); segBw2 = im2bw(segBw2, 0.5); if i == 1 kMin = 37; kMax = 42; elseif i == 2 kMin = 11; kMax = 36; elseif i >= 3 kMin = 1; kMax = 36; end l = 1; for k = kMin : kMax fname = strcat('namebook\',liccode(k),'.jpg'); % 根据字符库找到图片模板 samBw2 = imread(fname); % 读取模板库中的图片 samBw2 = im2bw(samBw2, 0.5); % 图像二值化 % 将待识别图片与模板图片做差 for i1 = 1:40 for j1 = 1:20 subBw2(i1, j1) = segBw2(i1, j1) - samBw2(i1 ,j1); end end % 统计两幅图片不同点的个数,并保存下来 Dmax = 0; for i2 = 1:40 for j2 = 1:20 if subBw2(i2, j2) ~= 0 Dmax = Dmax + 1; end end end error(l) = Dmax; l = l + 1; end % 找到图片差别最少的图像 errorMin = min(error); findc = find(error == errorMin); % error % findc % 根据字库,对应到识别的字符 Code(num*2 - 1) = liccode(findc(1) + kMin - 1); Code(num*2) = ' '; num = num + 1; end % 显示识别结果 disp(Code); msgbox(Code,'识别出的车牌号');

资源文件列表:

基于MATLAB的车牌识别系统设计.zip 大约有58个文件
  1. 基于MATLAB的车牌识别系统设计/
  2. 基于MATLAB的车牌识别系统设计/1.jpg 900B
  3. 基于MATLAB的车牌识别系统设计/2.jpg 606B
  4. 基于MATLAB的车牌识别系统设计/3.jpg 669B
  5. 基于MATLAB的车牌识别系统设计/4.jpg 707B
  6. 基于MATLAB的车牌识别系统设计/5.jpg 672B
  7. 基于MATLAB的车牌识别系统设计/6.jpg 684B
  8. 基于MATLAB的车牌识别系统设计/7.jpg 437B
  9. 基于MATLAB的车牌识别系统设计/getword.m 860B
  10. 基于MATLAB的车牌识别系统设计/main.m 7.25KB
  11. 基于MATLAB的车牌识别系统设计/my_imsplit.m 705B
  12. 基于MATLAB的车牌识别系统设计/namebook/
  13. 基于MATLAB的车牌识别系统设计/namebook/0.jpg 509B
  14. 基于MATLAB的车牌识别系统设计/namebook/1.jpg 482B
  15. 基于MATLAB的车牌识别系统设计/namebook/2.jpg 12.06KB
  16. 基于MATLAB的车牌识别系统设计/namebook/3.jpg 815B
  17. 基于MATLAB的车牌识别系统设计/namebook/4.jpg 11.74KB
  18. 基于MATLAB的车牌识别系统设计/namebook/5.jpg 12.05KB
  19. 基于MATLAB的车牌识别系统设计/namebook/6.jpg 797B
  20. 基于MATLAB的车牌识别系统设计/namebook/7.jpg 583B
  21. 基于MATLAB的车牌识别系统设计/namebook/8.jpg 789B
  22. 基于MATLAB的车牌识别系统设计/namebook/9.jpg 778B
  23. 基于MATLAB的车牌识别系统设计/namebook/A.jpg 8.61KB
  24. 基于MATLAB的车牌识别系统设计/namebook/B.jpg 807B
  25. 基于MATLAB的车牌识别系统设计/namebook/C.jpg 742B
  26. 基于MATLAB的车牌识别系统设计/namebook/D.jpg 662B
  27. 基于MATLAB的车牌识别系统设计/namebook/E.jpg 11.59KB
  28. 基于MATLAB的车牌识别系统设计/namebook/F.jpg 11.45KB
  29. 基于MATLAB的车牌识别系统设计/namebook/G.jpg 11.99KB
  30. 基于MATLAB的车牌识别系统设计/namebook/H.jpg 439B
  31. 基于MATLAB的车牌识别系统设计/namebook/I.jpg 11.29KB
  32. 基于MATLAB的车牌识别系统设计/namebook/J.jpg 566B
  33. 基于MATLAB的车牌识别系统设计/namebook/L.jpg 598B
  34. 基于MATLAB的车牌识别系统设计/namebook/M.jpg 611B
  35. 基于MATLAB的车牌识别系统设计/namebook/N.jpg 11.95KB
  36. 基于MATLAB的车牌识别系统设计/namebook/O.jpg 11.96KB
  37. 基于MATLAB的车牌识别系统设计/namebook/P.jpg 656B
  38. 基于MATLAB的车牌识别系统设计/namebook/Q.jpg 12.13KB
  39. 基于MATLAB的车牌识别系统设计/namebook/R.jpg 12.03KB
  40. 基于MATLAB的车牌识别系统设计/namebook/S.jpg 12.14KB
  41. 基于MATLAB的车牌识别系统设计/namebook/T.jpg 11.17KB
  42. 基于MATLAB的车牌识别系统设计/namebook/U.jpg 11.74KB
  43. 基于MATLAB的车牌识别系统设计/namebook/V.jpg 793B
  44. 基于MATLAB的车牌识别系统设计/namebook/W.jpg 12.02KB
  45. 基于MATLAB的车牌识别系统设计/namebook/X.jpg 797B
  46. 基于MATLAB的车牌识别系统设计/namebook/Y.jpg 668B
  47. 基于MATLAB的车牌识别系统设计/namebook/Z.jpg 11.79KB
  48. 基于MATLAB的车牌识别系统设计/namebook/k.jpg 764B
  49. 基于MATLAB的车牌识别系统设计/namebook/京.jpg 890B
  50. 基于MATLAB的车牌识别系统设计/namebook/浙.jpg 787B
  51. 基于MATLAB的车牌识别系统设计/namebook/苏.jpg 824B
  52. 基于MATLAB的车牌识别系统设计/namebook/豫.jpg 918B
  53. 基于MATLAB的车牌识别系统设计/namebook/辽.jpg 13.83KB
  54. 基于MATLAB的车牌识别系统设计/namebook/陕.jpg 867B
  55. 基于MATLAB的车牌识别系统设计/namebook/鲁.jpg 858B
  56. 基于MATLAB的车牌识别系统设计/测试图片/
  57. 基于MATLAB的车牌识别系统设计/测试图片/京h.jpg 30.97KB
  58. 基于MATLAB的车牌识别系统设计/车牌图像.jpg 2.14KB
0评论
提交 加载更多评论
其他资源 ad3-2.2.1-cp27-cp27m-win32.whl.zip
【ad3-2.2.1-cp27-cp27m-win32.whl.zip】此文件适用于python2.7,win32系统,请仔细核对版本 内含文件: 1. 如何安装whl文件.png【算是图文教程,一看就懂】 2. ad3-2.2.1-cp27-cp27m-win32.whl【安装需要用到的文件】 AD3 是一个用于求解大规模图形模型的软件包,特别是用于求解马尔可夫随机场(Markov Random Fields,MRFs)和条件随机场(Conditional Random Fields,CRFs)模型的推断问题。AD3 以其高效的算法和可扩展性而闻名,它被广泛应用于机器学习、自然语言处理、计算机视觉等领域。 AD3 主要用于解决以下问题: 1. 最大后验概率推断(MAP Inference):给定一个概率图模型,AD3 可以高效地找到最有可能的状态序列或配置,这在许多任务中都是非常重要的,比如分词、语义角色标注、语义分割等。 2. 边缘概率推断(Marginal Inference):通过 AD3,可以有效地计算给定观测条件下每个变量的边缘概率。 3. 参数估计:AD3 也可以结合
ad3-2.2.1-cp27-cp27m-win-amd64.whl.zip
【ad3-2.2.1-cp27-cp27m-win_amd64.whl.zip】此文件适用于python2.7,win_amd64系统,请仔细核对版本 内含文件: 1. 如何安装whl文件.png【算是图文教程,一看就懂】 2. ad3-2.2.1-cp27-cp27m-win_amd64.whl【安装需要用到的文件】 AD3 是一个用于求解大规模图形模型的软件包,特别是用于求解马尔可夫随机场(Markov Random Fields,MRFs)和条件随机场(Conditional Random Fields,CRFs)模型的推断问题。AD3 以其高效的算法和可扩展性而闻名,它被广泛应用于机器学习、自然语言处理、计算机视觉等领域。 AD3 主要用于解决以下问题: 1. 最大后验概率推断(MAP Inference):给定一个概率图模型,AD3 可以高效地找到最有可能的状态序列或配置,这在许多任务中都是非常重要的,比如分词、语义角色标注、语义分割等。 2. 边缘概率推断(Marginal Inference):通过 AD3,可以有效地计算给定观测条件下每个变量的边缘概率。 3. 参数
MATLAB车牌识别设计
使用MATLAB的车牌识别,步骤如下: 1. 导入图像:使用MATLAB的imread函数导入车牌图像。 2. 图像预处理:对导入的图像进行预处理,包括灰度化、二值化、图像增强等操作,以便于后续的车牌定位和字符识别。 3. 车牌定位:使用图像处理技术,如边缘检测、形态学操作等,找到图像中的车牌区域。 4. 字符分割:将车牌区域中的字符进行分割,可以使用投影法、连通区域分析等方法。 5. 字符识别:对分割得到的字符进行识别,可以使用模板匹配、神经网络等方法。 6. 输出结果:将识别结果输出到命令窗口或保存为文本文件,以便查看识别结果。 需要注意的是,车牌识别是一个复杂的问题,涉及到图像处理、模式识别等多个领域的知识。在使用MATLAB进行车牌识别时,需要熟悉MATLAB的图像处理函数和工具箱,并了解相应的算法原理。同时,由于不同地区的车牌形式和颜色有所不同,需要根据具体情况进行相应的调整和优化。
MATLAB车牌识别系统设计实现.zip
在MATLAB中进行车牌识别,本设计是使用以下步骤: 1. 加载图像:使用imread函数将车牌图像加载到MATLAB中。 2. 预处理:对图像进行预处理,包括灰度化、二值化、去噪等操作。可以使用rgb2gray函数将图像转换为灰度图像,然后使用imbinarize函数进行二值化。 3. 车牌定位:使用图像处理技术,例如边缘检测、形态学操作等,定位出车牌的位置。 4. 字符分割:将车牌中的字符分割出来,可以使用连通区域分析、投影法等方法进行字符分割。 5. 字符识别:对分割出的每个字符进行识别,可以使用模式识别算法,例如基于特征的方法、神经网络方法等。 6. 输出识别结果:将识别出的字符输出为文本或者显示在图像上。 以上步骤是一个基本的车牌识别流程,具体的实现可以根据需要和实际情况进行调整和优化。
ad3-2.2.1-cp34-cp34m-win-amd64.whl.zip
【ad3-2.2.1-cp34-cp34m-win_amd64.whl.zip】此文件适用于python3.4,win_amd64系统,请仔细核对版本 内含文件: 1. 如何安装whl文件.png【算是图文教程,一看就懂】 2. ad3-2.2.1-cp34-cp34m-win_amd64.whl【安装需要用到的文件】 AD3 是一个用于求解大规模图形模型的软件包,特别是用于求解马尔可夫随机场(Markov Random Fields,MRFs)和条件随机场(Conditional Random Fields,CRFs)模型的推断问题。AD3 以其高效的算法和可扩展性而闻名,它被广泛应用于机器学习、自然语言处理、计算机视觉等领域。 AD3 主要用于解决以下问题: 1. 最大后验概率推断(MAP Inference):给定一个概率图模型,AD3 可以高效地找到最有可能的状态序列或配置,这在许多任务中都是非常重要的,比如分词、语义角色标注、语义分割等。 2. 边缘概率推断(Marginal Inference):通过 AD3,可以有效地计算给定观测条件下每个变量的边缘概率。 3. 参数
ad3-2.2.1-cp34-cp34m-win32.whl.zip
【ad3-2.2.1-cp34-cp34m-win32.whl.zip】此文件适用于python3.4,win32系统,请仔细核对版本 内含文件: 1. 如何安装whl文件.png【算是图文教程,一看就懂】 2. ad3-2.2.1-cp34-cp34m-win32.whl【安装需要用到的文件】 AD3 是一个用于求解大规模图形模型的软件包,特别是用于求解马尔可夫随机场(Markov Random Fields,MRFs)和条件随机场(Conditional Random Fields,CRFs)模型的推断问题。AD3 以其高效的算法和可扩展性而闻名,它被广泛应用于机器学习、自然语言处理、计算机视觉等领域。 AD3 主要用于解决以下问题: 1. 最大后验概率推断(MAP Inference):给定一个概率图模型,AD3 可以高效地找到最有可能的状态序列或配置,这在许多任务中都是非常重要的,比如分词、语义角色标注、语义分割等。 2. 边缘概率推断(Marginal Inference):通过 AD3,可以有效地计算给定观测条件下每个变量的边缘概率。 3. 参数估计:AD3 也可以结合
爱普生打印机清零软件维护维修必备
1、爱普生打印机废墨垫清零软件直接在Epson Stylus打印机墨盒中使用CSIC。   2、冻结内部墨水计数器。   3、就算空墨盒也重置内部墨水计数器。   4、为所有爱普生喷墨打印机分别清洁彩色与黑色头,强大的清洁模式。   5、爱普生打印机废墨垫清零软件支持热插拔墨盒。   6、重置保护计数器(就算它已经满了)。   7、爱普生打印机废墨垫清零软件支持60多种不同的Epson打印机这允许很多具有高打印需要的人节省一些钱(程序适用于黑色与彩色墨盒)。
ad3-2.2.1-cp35-cp35m-win-amd64.whl.zip
【ad3-2.2.1-cp35-cp35m-win_amd64.whl.zip】此文件适用于python3.5,win_amd64系统,请仔细核对版本 内含文件: 1. 如何安装whl文件.png【算是图文教程,一看就懂】 2. ad3-2.2.1-cp35-cp35m-win_amd64.whl【安装需要用到的文件】 AD3 是一个用于求解大规模图形模型的软件包,特别是用于求解马尔可夫随机场(Markov Random Fields,MRFs)和条件随机场(Conditional Random Fields,CRFs)模型的推断问题。AD3 以其高效的算法和可扩展性而闻名,它被广泛应用于机器学习、自然语言处理、计算机视觉等领域。 AD3 主要用于解决以下问题: 1. 最大后验概率推断(MAP Inference):给定一个概率图模型,AD3 可以高效地找到最有可能的状态序列或配置,这在许多任务中都是非常重要的,比如分词、语义角色标注、语义分割等。 2. 边缘概率推断(Marginal Inference):通过 AD3,可以有效地计算给定观测条件下每个变量的边缘概率。 3. 参数