数字图像处理车牌识别课程设计matlab实现附源代码之欧阳学创编

合集下载

(完整版)基于matlab的车牌识别(含子程序)

(完整版)基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统一、对车辆图像进行预处理1.载入车牌图像:function [d]=main(jpg)[filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'});if(filename == 0), return, endglobal FILENAME %定义全局变量FILENAME = [pathname filename];I=imread(FILENAME);figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:2.将彩图转换为灰度图并绘制直方图:I1=rgb2gray(I);%将彩图转换为灰度图figure(2),subplot(1,2,1),imshow(I1);title('灰度图像');figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示:3. 用roberts算子进行边缘检测:I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测figure(3),imshow(I2);title('roberts 算子边缘检测图像');结果如下:4.图像实施腐蚀操作:se=[1;1;1];I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像');5.平滑图像se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个seI4=imclose(I3,se);% 图像聚类、填充图像figure(5),imshow(I4);title('平滑图像');结果如下所示:6. 删除二值图像的小对象I5=bwareaopen(I4,2000);% 去除聚团灰度值小于2000的部分figure(6),imshow(I5);title('从对象中移除小的对象');结果如下所示:二、车牌定位[y,x,z]=size(I5);%返回I5各维的尺寸,存储在x,y,z中myI=double(I5);%将I5转换成双精度tic %tic表示计时的开始,toc表示计时的结束Blue_y=zeros(y,1);%产生一个y*1的零阵for i=1:yfor j=1:xif(myI(i,j,1)==1)%如果myI(i,j,1)即myI的图像中坐标为(i,j)的点值为1,即该点为车牌背景颜色蓝色 %则Blue_y(i,1)的值加1Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计endendend[temp MaxY]=max(Blue_y);%Y方向车牌区域确定%temp为向量white_y的元素中的最大值,MaxY为该值的索引PY1=MaxY;while ((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%x方向车牌区域确定%%%%%% X方向 %%%%%%%%%Blue_x=zeros(1,x);%进一步确定x方向的车牌区域for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)= Blue_x(1,j)+1; endendendPX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;%对车牌区域的校正PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');%行方向车牌区域确定figure(7),subplot(1,2,2),imshow(dw),title('定位裁剪后的车牌彩色图像');的车牌区域如下所示:三、字符分割及处理1.车牌的进一步处理对分割出的彩色车牌图像进行灰度转换、二值化、均值滤波、腐蚀膨胀以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。

matlab车牌识别课程设计

matlab车牌识别课程设计

matlab车牌识别课程设计一、课程目标知识目标:1. 学生将理解车牌识别技术的原理和实现流程,掌握使用MATLAB进行图像处理的基本方法。

2. 学生将学会运用MATLAB内置函数进行车牌定位、字符分割和识别,并了解相关算法。

3. 学生将掌握利用MATLAB进行车牌识别系统的设计与实现,提高解决实际问题的能力。

技能目标:1. 学生能够运用MATLAB软件进行图像的读取、显示、预处理等操作。

2. 学生能够独立完成车牌的定位、分割和识别,具备一定的编程实践能力。

3. 学生能够通过本课程的学习,将理论知识与实际应用相结合,提高解决复杂问题的能力。

情感态度价值观目标:1. 学生将培养对图像处理技术的兴趣,激发探究精神,提高学习积极性。

2. 学生将形成严谨的科学态度,注重团队协作,善于沟通交流。

3. 学生将认识到车牌识别技术在现实生活中的应用价值,增强社会责任感和创新意识。

本课程针对高年级学生,结合图像处理、模式识别等学科知识,以MATLAB为工具,培养学生的编程实践能力和解决实际问题的能力。

课程目标具体、可衡量,旨在让学生在学习过程中充分了解车牌识别技术的原理和应用,为后续相关领域的学习和研究打下坚实基础。

二、教学内容1. 车牌识别技术原理概述:介绍车牌识别技术的发展背景、系统组成和基本流程,使学生了解整个技术的框架。

2. MATLAB图像处理基础:讲解MATLAB中图像的读取、显示、存储等基本操作,以及图像预处理方法,包括灰度化、二值化、滤波等。

3. 车牌定位:介绍常见的车牌定位算法,如边缘检测、形态学处理等,并运用MATLAB实现车牌定位。

4. 车牌字符分割:讲解车牌字符分割的常用方法,如投影分割、连通域分析等,以及MATLAB实现方法。

5. 车牌字符识别:介绍基于模板匹配、神经网络等算法的字符识别方法,并运用MATLAB实现车牌字符的识别。

6. 车牌识别系统设计与实现:结合前面所学内容,设计并实现一个简单的车牌识别系统,包括模块划分、算法选择和程序编写。

matlab车牌识别程序代码

matlab车牌识别程序代码

% 车牌识别程序主体clc;close all;clear all;%==========================================================%说明:%%%===========================================================% ==============测定算法执行的时间,开始计时=================tic %%%%%记录程序运行时间%=====================读入图片================================[fn,pn,fi]=uigetfile('*.jpg','选择图片');I=imread([pn fn]);figure;imshow(I);title('原始图像');%显示原始图像chepailujing=[pn fn]I_bai=I;[PY2,PY1,PX2,PX1]=caitu_fenge(I);% I=rgb2hsv(I);% [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色%================分割车牌区域=================================%===============车牌区域根据面积二次修正======================[PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1);%==============更新图片=============================Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu%==============考虑用腐蚀解决蓝色车问题=============bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像%==============这里要根据图像的倾斜度进展选择这里选择的图片.jpgbw=rgb2gray(bw);figure,imshow(bw);title('灰度图像');%================倾斜校正======================qingxiejiao=rando_bianhuan(bw)bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转%==============================================bw=im2bw(bw,graythresh(bw));%figure,imshow(bw);bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw);bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');bw=bwmorph(bw,'open',5);%figure,imshow(bw);title('闭合运算');bw = bwareaopen(bw, threshold);figure,imshow(bw);title('擦除');%==================参加进度条================================% h=waitbar(0,'程序运行中,请稍等......')% for i=1:10000% waitbar(i/5000,h)% end% close(h);%wavplay(wavread('程序运行中.wav'),22000);%==========================================================bw=~bw;figure,imshow(bw);title('擦除反色');%=============对图像进一步裁剪,保证边框贴近字体===========bw=touying(bw);figure;imshow(bw);title('Y方向处理');bw=~bw;bw = bwareaopen(bw, threshold);bw=~bw;%figure,imshow(bw);title('二次擦除');[y,x]=size(bw);%对长宽重新赋值%=================文字分割=================================fenge=shuzifenge(bw,qingxiejiao)[m,k]=size(fenge);%=================显示分割图像结果=========================figure;for s=1:2:k-1subplot(1,k/2,(s+1)/2);imshow(bw( 1:y,fenge(s):fenge(s+1)));end%================ 给七图片定位===============桂AV6388han_zi =bw( 1:y,fenge(1):fenge(2));zi_mu =bw( 1:y,fenge(3):fenge(4));zm_sz_1 =bw( 1:y,fenge(5):fenge(6));zm_sz_2 =bw( 1:y,fenge(7):fenge(8));shuzi_1 =bw( 1:y,fenge(9):fenge(10));shuzi_2 =bw( 1:y,fenge(11):fenge(12));shuzi_3 =bw( 1:y,fenge(13):fenge(14));%==========================识别====================================%======================把修正数据读入============================== xiuzhenghanzi = imresize(han_zi, [110 55],'bilinear');xiuzhengzimu = imresize(zi_mu, [110 55],'bilinear');xiuzhengzm_sz_1= imresize(zm_sz_1,[110 55],'bilinear');xiuzhengzm_sz_2 = imresize(zm_sz_2,[110 55],'bilinear');xiuzhengshuzi_1 = imresize(shuzi_1,[110 55],'bilinear');xiuzhengshuzi_2 = imresize(shuzi_2,[110 55],'bilinear');xiuzhengshuzi_3 = imresize(shuzi_3,[110 55],'bilinear');%============ 把0-9 , A-Z以与省份简称的数据存储方便访问==================== hanzishengfen=duquhanzi(imread('cpgui.bmp'),imread('cpguizhou.bmp'),imread('cpj ing.bmp'),imread('cpsu.bmp'),imread('cpyue.bmp'));%因数字和字母比例不同。

matlab车牌识别课程设计报告

matlab车牌识别课程设计报告

Matlab程序设计任务书目录一.课程设计目的 (3)二.设计原理 (3)三.详细设计步骤 (3)四. 设计结果及分析 (18)五. 总结 (19)六. 设计体会 (20)七. 参考文献 (21)一、课程设计目的车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。

通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。

二、设计原理:牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。

其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。

某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。

一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。

当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。

牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。

三、详细设计步骤:v1.0 可编辑可修改1. 提出总体设计方案:牌照号码、颜色识别为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。

(1)牌照定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。

首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。

流程图:(2)牌照字符分割 :导入原始图像图像预处理增强效果图像边缘提取车牌定位 对图像开闭运算完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。

基于MATLAB的图像处理的课程设计(车牌识别系统)(word文档良心出品)

基于MATLAB的图像处理的课程设计(车牌识别系统)(word文档良心出品)

目录一、课程设计目的 (3)二、课程设计要求 (3)三、课程设计的内容 (3)四、题目分析 (3)五、总体设计 (4)六、具体设计 (5)1、文件 (5)1.1、打开 (5)1.2、保存 (5)1.3、退出 (5)2、编辑 (5)6.2.1、灰度 (5)6.2.2、亮度 (6)6.2.3、截图 (7)6.2.4、缩放 (7)3、旋转 (9)6.3.1、上下翻转 (9)6.3.2、左右翻转 (9)6.3.3任意角度翻转 (9)6.4、噪声 (10)6.5、滤波 (10)6.6、直方图统计 (11)6.7、频谱分析 (12)6.7.1、频谱图 (12)6.7.2、通过高通滤波器........................... .. (12)6.7.3、通过低通滤波器...................................... . (13)6.8、灰度图像处理................................................ . . (14)6.8.1、二值图像……………………………………………….. .146.8.2、创建索引图像............................................. (14)6.9、颜色模型转换...................................... .. (14)6.10、操作界面设计 (15)七、程序调试及结果分析 (15)八、心得体会 (16)九、参考文献 (17)十、附录 (18)基于MATLAB的图像处理的课程设计摘要:数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。

MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。

它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。

matlab车牌识别课程设计

matlab车牌识别课程设计

matlab车牌识别课程设计一、教学目标本课程的教学目标是使学生掌握Matlab车牌识别的基本原理和方法,具备运用Matlab进行车牌识别项目开发的能力。

具体分解为以下三个维度:1.知识目标:•理解车牌识别的基本概念和流程。

•掌握Matlab的基本语法和操作。

•学习并应用图像处理和机器学习算法进行车牌识别。

2.技能目标:•能够使用Matlab进行基本的编程和数据分析。

•掌握车牌检测、分割和识别的技术。

•具备解决实际车牌识别问题的能力。

3.情感态度价值观目标:•培养学生的创新意识和团队合作精神。

•增强学生对智能交通系统的认识和关注。

•提高学生对编程和的兴趣和热情。

二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.Matlab基础:介绍Matlab的基本语法、数据类型和编程环境,使学生能够熟练使用Matlab进行编程和数据分析。

2.图像处理基础:讲解图像处理的基本概念和常用算法,包括图像滤波、边缘检测、形态学处理等,为学生进行车牌识别提供必要的理论支持。

3.车牌检测与分割:学习并应用车牌检测和分割的算法,包括边缘检测、轮廓提取、区域增长等,使学生能够准确地定位和提取车牌区域。

4.车牌识别算法:介绍并实现车牌识别的算法,包括字符分割、特征提取、分类器设计等,培养学生运用机器学习算法解决实际问题的能力。

5.项目实践:通过实际车牌识别项目的开发,使学生将所学知识和技能应用于实践,提高学生的综合运用能力和创新思维。

三、教学方法为了达到课程目标,将采用以下教学方法:1.讲授法:通过讲解和演示,传授Matlab基础知识和图像处理算法,帮助学生建立系统的理论框架。

2.案例分析法:分析并讨论实际车牌识别案例,引导学生运用所学知识解决实际问题,提高学生的综合运用能力。

3.实验法:通过实验操作,让学生动手实践车牌检测和识别的算法,培养学生的实际操作能力和创新思维。

4.小组讨论法:学生进行小组讨论和合作,促进学生之间的交流和团队合作精神,提高学生的沟通能力和团队协作能力。

MATLAB车牌识别系统课程设计

MATLAB车牌识别系统课程设计

MATLAB车牌识别系统课程设计一、课程目标知识目标:1. 学生能理解MATLAB编程环境,掌握基本的数据类型、运算符和流程控制语句。

2. 学生能掌握车牌图像的预处理方法,包括图像灰度化、二值化、滤波去噪等。

3. 学生能理解并实现车牌定位和分割的算法,提取车牌字符。

4. 学生能掌握车牌字符识别的方法,如模板匹配、神经网络等。

技能目标:1. 学生能够运用MATLAB编写程序,对车牌图像进行处理和分析。

2. 学生能够独立设计并实现一个简单的车牌识别系统。

3. 学生能够通过实践操作,提高问题解决能力和团队协作能力。

情感态度价值观目标:1. 学生培养对图像处理和模式识别领域的兴趣,激发学习热情。

2. 学生通过实践,认识到编程在解决实际问题中的重要性,增强自信心。

3. 学生在团队协作中,学会尊重他人,培养良好的沟通能力和合作精神。

课程性质:本课程为选修课,旨在让学生在实际项目中运用所学的编程知识,提高解决实际问题的能力。

学生特点:学生为高中年级,已具备一定的编程基础,对新鲜事物充满好奇心,但实践经验不足。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生通过自主学习和团队协作,完成课程目标。

将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容1. MATLAB编程基础- 数据类型与运算符- 程序流程控制- 函数与脚本- 图像处理基本操作2. 车牌图像预处理- 图像读取与显示- 灰度化与二值化- 滤波去噪- 边缘检测与轮廓提取3. 车牌定位与分割- 车牌区域提取- 车牌字符分割- 车牌倾斜校正4. 车牌字符识别- 模板匹配法- 神经网络法- 支持向量机法5. 车牌识别系统实现- 系统框架设计- 模块化编程实现- 系统测试与优化教学内容依据课程目标,结合教材章节进行安排。

在教学过程中,注重理论与实践相结合,引导学生逐步掌握MATLAB编程及图像处理方法。

教学内容分为五个部分,每部分对应相应的知识点,确保学生能够系统地学习车牌识别系统的设计原理和实现方法。

基于Matlab的车牌识别系统设计课程设计论文

基于Matlab的车牌识别系统设计课程设计论文

课程设计(数字信号处理)题目:基于matlab的车牌识别系统设计目录1 绪论 (2)1.1 车牌号识别研究背景 (2)1.2 车牌号识别技术研究现状和趋势 (3)1.3 车牌识别研究内容 (4)2 车牌识别系统设计原理概述 (5)3 车牌识别系统程序设计 (7)3.1 图像读取及车牌区域提取 (7)3.2 字符切割 (14)3.3字符识别 (17)4 仿真结果及分析 (19)4.1 车牌定位及图像读取及其图像处理 (19)4.2 车牌字符分割及其图像处理 (20)4.3 车牌字符识别及其图像处理 (21)5 结论 (21)6 个人心得 (25)附录:程序清单 (25)1 绪论1.1 车牌号识别研究背景随着我国公路交通事业的发展,车辆的数量正在迅速增长,在给出行提供方便的同时,车辆管理上存在的问题日益突出,人工管理的方式已经不能满足实际的需要。

微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。

作为信息来源的自动检测、图像识别技术越来越受到人们的重视。

近年来计算机的飞速发展和数字图像技术的日趋成熟,为传统的交通管理带来巨大转变,先进的计算机处理技术,不但可以将人力从繁琐的人工观察、监测中解放出来,而且能够大大提高其精确度,汽车牌照自动识别系统就是在这样的背景与目的下进行开发的。

汽车牌照等相关信息的自动采集和管理对于交通车辆管理、园区车辆管理、停车场管理、交警稽查等方面有着十分重要的意义,成为信息处理技术的一项重要研究课题。

车牌识别的难点:1)由于车牌图像多在室外采集,会受到光照条件、天气条件的影响,会出现图像模糊,对比度低,目标区域过小,色彩失真等影响,并且会伴随复杂的背景图像,这些都会影响车牌定位及识别。

2)每次采集时目标所处位置不会一样,采集视角会有很大变化,并且由于车牌挂的不正,都将导致车牌出现扭曲。

3)牌照多样性。

其他国家的汽车牌照格式,如尺寸大小,牌照上字符的排列等,通常只有一种。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于matlab的车牌识别系统一、二、目的与要求目的:利用matlab实现车牌识别系统,熟悉matlab应用软件的基础知识,了解了基本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深对理论知识的掌握,并把所学的知识系统、高效的贯穿到实践中来,避免理论与实践的脱离,巩固理论课上知识的同时,加强实践能力的提高,理论联系实践,提高自身的动手能力。

同时不断的调试程序也提高了自己独立编程水平,并在实践中不断完善理论基础,有助于自身综合能力的提高。

要求:1.理解各种图像处理方法确切意义。

2.独立进行方案的制定,系统结构设计要合理。

3.在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。

如果使用matlab来进行开发,要理解每个函数的具体意义和适用范围,在写课设报告时,必须要将主要函数的功能和参数做详细的说明。

4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。

二、设计的内容学习MATLAB程序设计,利用MATLAB函数功能,设计和实现通过设计一个车牌识别系统。

车牌识别系统的基本工作原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后将其逐个与创建的字符模板中的字符进行匹配,匹配成功则输出,最终匹配结束则输出则为车牌号码的数字。

车牌识别系统的基本工作原理图如图1所下所示:符识别可以分为字符分割和单个字符识别两个模块。

为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。

但由于是采用智能手机在开放的户外环境拍照,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。

牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。

由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。

因此,需要将拍出的车牌进行处理,在这个过程中,我采用画图工具,将汽车图像的车牌部分进行裁剪,并将车牌的蓝色部分过亮的地方颜色加深,还将车牌中的一个白色的原点抹去,另外还将车牌上的铆钉使用车牌的蓝色背景覆盖,这样分割出的字符更加准确。

车牌识别的最终目的就是对车牌上的文字进行识别。

主要应用的为模板匹配方法。

因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB及以上。

系统可以运行于Windows7、Windows2000或者Windows XP操作系统下,程序调试时使用matlabR2011a。

四、各个功能模块的主要实现程序(一)首先介绍代码中主要的函数功能及用法:1.Imerode功能:对图像实现腐蚀操作,即膨胀操作的反操作。

用法:IM2 = imerode(IM,SE)IM2 = imerode(IM,NHOOD)IM2 = imerode(IM,SE,PACKOPT,M)IM2 = imerode(...,PADOPT)IM2 = imerode(IM,SE) 腐蚀灰度,二值,压缩二值图像IM,返回IM2。

参数SE为由strel函数返回的结构元素或者结构元素对象组。

IM2 = imerode(IM,NHOOD)腐蚀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。

IM2 = imerode(...,PADOPT)指出输出图像的大小(是否与输入图像大小一致)。

2.imdilate功能:对图像实现膨胀操作。

用法:IM2 = imdilate(IM,SE)IM2 = imdilate(IM,NHOOD)IM2 = imdilate(IM,SE,PACKOPT)IM2 = imdilate(...,PADOPT)IM2 = imdilate(IM,SE) 膨胀灰度,二值,压缩二值图像IM,返回IM2。

参数SE为由strel函数返回的结构元素或者结构元素对象组。

IM2 = imdilate(IM,NHOOD)膨胀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。

IM2 = imdilate(IM,SE,PACKOPT)定义IM是否是一个压缩的二值图像。

IM2 = imdilate(...,PADOPT)指出输出图像的大小。

3.strel功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。

用法:SE = strel(shape,parameters) 创建由指定形状shape对应的结构元素。

其中shape的种类有‘arbitrary','pair','diamond','periodicline','disk','rectangle''line','square','octagon 参数parameters一般控制SE的大小。

4.edgeBW = edge(I) 采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0。

BW = edge(I,'sobel') 自动选择阈值用Sobel算子进行边缘检测。

BW = edge(I,'sobel',thresh) 根据所指定的敏感度阈值thresh,用Sobel算子进行边缘检测,它忽略了所有小于阈值的边缘。

当thresh为空时,自动选择阈值。

BW = edge(I,'sobel',thresh,direction) 根据所指定的敏感度阈值thresh,在所指定的方向direction上,用Sobel 算子进行边缘检测。

Direction可取的字符串值为horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。

[BW,thresh] = edge(I,'sobel',...) 返回阈值BW = edge(I,'prewitt') 自动选择阈值用prewitt算子进行边缘检测。

BW = edge(I,'prewitt',thresh) 根据所指定的敏感度阈值thresh,用prewitt算子进行边缘检测,它忽略了所有小于阈值的边缘。

当thresh为空时,自动选择阈值。

BW = edge(I,'prewitt',thresh,direction) 根据所指定的敏感度阈值thresh,在所指定的方向direction上,用prewitt算子进行边缘检测。

Direction可取的字符串值为horizontal(水平方向)、vertical(垂直方向)或both(两个方向)默认方向为both。

BW = edge(I,'roberts') 自动选择阈值用roberts算子进行边缘检测。

BW = edge(I,'roberts',thresh) 根据所指定的敏感度阈值thresh,用Roberts算子进行边缘检测,它忽略了所有小于阈值的边缘。

当thresh为空时,自动选择阈值。

5.Imclose功能:对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。

用法:IM2 = imclose(IM,SE)IM2 = imclose(IM,NHOOD)用法和imopen相同。

6.imopen功能:对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。

用法:IM2 = imopen(IM,SE)IM2 = imopen(IM,NHOOD)IM2 = imopen(IM,SE)用结构元素SE实现灰度图像或二值图像的IM的形态开运算。

SE可以是单个结构元素对象或者结构元素对象数组。

IM2 = imopen(IM,NHOOD)用结构元素strel(NHOOD)执行开运算。

7.bwareaopen功能:删除小面积对象格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW中面积小于P的对象,默认情况下conn 使用8邻域。

8.tic和toc函数这两个函数一般配合使用,tic表示计时的开始,toc表示计时的结束。

格式如:tic任意表达式toct=toc9.fspecial功能:用于建立预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,para)其中type指定算子的类型,para指定相应的参数;type的类型有:1、'average'averaging filter为均值滤波,参数为hsize代表模板尺寸,默认值为【3,3】。

'disk'circular averaging filter为圆形区域均值滤波,参数为radius代表区域半径,默认值为5.'gaussian'Gaussian lowpass filter为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准值,单位为像素,默认值为0.5.'prewitt'Prewitt horizontal edge-emphasizing filter用于边缘增强,大小为【3 3】,无参数'sobel'Sobel horizontal edge-emphasizing filter用于边缘提取,无参数9. filter2J = filter2(h,I);使用指定的滤波器h对I进行滤波,结果保存在J中10.bwarea函数功能:计算二值图像中对象的总面积。

调用格式:total = bwarea(BW)估算二值图像BW中对象的总面积。

返回的total是一个标量,它的值大致地反映了和图像中on像素的个数。

由于对于不同像素类型,度量标准不同,因此结果可能并不十分精确。

BW可以是数值类型(整型、浮点型)或者逻辑类型。

相关文档
最新文档