Matlab在图像处理与目标识别方面的应用

合集下载

Matlab中的人工智能算法实践

Matlab中的人工智能算法实践

Matlab中的人工智能算法实践近年来,人工智能的快速发展为各行各业带来了巨大的机遇与挑战。

在这个快节奏的时代中,计算机技术不再是单纯的计算能力的体现,更加强调数据处理和智能决策的能力。

而Matlab作为一种强大的科学计算软件,自然也可以用于实践人工智能算法。

一、数据处理与分析在人工智能算法的实践中,数据处理与分析是非常重要的环节。

Matlab提供了灵活的接口与强大的数据处理功能,可以轻松地读取、处理和存储各种类型的数据。

例如,在图像处理中,可以利用Matlab提供的函数快速地读取图像文件,进行图像增强、滤波等处理。

同时,Matlab还提供了丰富的统计分析工具,可以帮助用户对数据进行相关性分析、回归分析等。

二、机器学习算法机器学习是人工智能的核心内容之一,而Matlab中提供了许多经典的机器学习算法,如支持向量机、朴素贝叶斯、决策树等。

这些算法在Matlab中被实现为函数,用户可以直接调用这些函数进行机器学习实验。

同时,Matlab还提供了工具箱,如统计学工具箱、优化工具箱等,可以帮助用户进行更加复杂的机器学习任务。

三、深度学习算法深度学习是近年来发展最为迅猛的人工智能分支之一。

Matlab中也提供了用于实践深度学习算法的工具箱,如神经网络工具箱、深度学习工具箱等。

这些工具箱提供了完整的深度学习框架,用户可以用它们来构建、训练和评估深度神经网络模型。

不仅如此,Matlab还提供了大量示例代码和预训练的模型,为用户提供了学习和实践深度学习的便利。

四、自然语言处理与情感分析自然语言处理是人工智能领域的热门研究方向之一。

在Matlab中,可以利用文本分析工具箱进行自然语言处理和情感分析。

文本分析工具箱提供了词袋模型、主题模型等常用的文本处理方法,可以用于文本分类、情感分析等任务。

而在进行情感分析时,Matlab还提供了情感分析工具箱,可以帮助用户识别文本的情感倾向。

五、图像识别与目标检测图像识别和目标检测是计算机视觉领域的重要研究方向。

目标检测 matlab 实例

目标检测 matlab 实例

目标检测是计算机视觉领域中的一个重要研究方向,目标检测旨在从图像或视瓶中检测出特定的目标物体,并在图像中进行定位,辨别出目标的种类和数量。

在现实生活中,目标检测技术广泛应用于人脸识别、车牌识别、智能监控、智能交通等领域。

在本文中,我们将介绍如何使用 Matlab 来实现目标检测,并给出一个实际的编程示例。

1. 准备工作在使用 Matlab 进行目标检测之前,我们首先需要准备好相关的软件和数据。

在这里,我们将使用 Matlab 自带的 Computer Vision Toolbox 来实现目标检测。

我们也需要一些图像数据作为检测的输入。

对于初学者来说,可以先从全球信息站下载一些开放的标注好的数据集,比如 VOC 数据集或者 COCO 数据集,作为我们的训练和测试数据。

2. 数据预处理在进行目标检测之前,我们需要对我们的数据进行一些预处理工作,比如数据的标注、数据的增强等。

数据标注工作可以通过各种标注工具来完成,比如 LabelImg、LabelMe 等。

数据增强则可以通过一些图像处理的方法来增加数据的多样性,比如镜像翻转、旋转、裁剪等。

3. 模型选择在目标检测中,常用的模型包括 Faster R-CNN、YOLO、SSD 等。

在Matlab 中,我们可以直接调用 Computer Vision Toolbox 中的相关函数来选择和使用这些模型。

比如使用vision.CascadeObjectDetector 类来实现基于 Haar 特征的目标检测器,或者通过调用 fasterRCNNObjectDetector 函数来实现 Faster R-CNN 模型的检测器。

4. 模型训练训练一个目标检测模型需要大量的数据和计算资源。

在 Matlab 中,我们可以使用 tr本人nCascadeObjectDetector 函数来对 Haar 特征检测器进行训练,或者使用 tr本人nFasterRCNNObjectDetector 函数来对 Faster R-CNN 模型进行训练。

matlab数字图像处理实验报告

matlab数字图像处理实验报告

《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。

二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。

从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。

其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。

此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。

频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。

常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。

假定原图像为f(x,y),经傅立叶变换为F(u,v)。

频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。

四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 1962.给定函数的累积直方图。

matlab匹配滤波

matlab匹配滤波

MATLAB匹配滤波一、介绍匹配滤波是一种常用的信号处理技术,广泛应用于图像处理、通信系统等领域。

MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具箱和函数,用于实现匹配滤波算法。

本文将详细介绍MATLAB中的匹配滤波算法的原理、实现方法以及一些实际应用。

二、匹配滤波原理匹配滤波是一种基于模板匹配的信号处理技术,通过与预先定义好的模板进行比较来检测信号中的目标。

其原理可以简要概括如下:1.定义模板:首先,需要定义一个模板,用来表示待检测目标的特征。

模板可以是一个图像、一个二进制序列或者一个滤波器等。

2.相关运算:将待检测信号与模板进行相关运算,计算它们之间的相似度。

这一步骤可以通过卷积运算或者自相关运算来实现。

3.提取结果:根据相关运算的结果,可以提取出目标在原始信号中的位置信息,以及信号中与目标相关的其他特性。

三、MATLAB中的匹配滤波函数MATLAB提供了多个函数和工具箱,用于实现匹配滤波算法。

下面介绍几个常用的函数:1. conv2conv2函数可以进行二维卷积运算,用于将图像与模板进行相关运算。

其使用方式如下:result = conv2(image, template);2. normxcorr2normxcorr2函数可以进行二维归一化互相关运算,用于计算图像与模板之间的相似度。

其使用方式如下:result = normxcorr2(template, image);3. imfilterimfilter函数可以应用一维或二维滤波器对图像进行滤波操作,也可用于匹配滤波。

其使用方式如下:result = imfilter(image, template);4. filter2filter2函数可以进行二维卷积运算,用于将图像与滤波器进行相关运算。

其使用方式如下:result = filter2(template, image);四、MATLAB匹配滤波的实际应用匹配滤波算法在图像处理、目标识别等领域有着广泛的应用。

Matlab图像处理工具箱使用简介

Matlab图像处理工具箱使用简介

三天三夜72小时:(2015.9.11~13)读懂题目-》查找文献资料-》选择题目-》重查找文献资料-》精读其中几篇-》查找资料的资料。

(资料查找+现学现用)要想竞赛获奖,所写论文中需要亮点和特色。

参考资料:《Matlab图像处理与应用》高成主编,2007.04 校超星数字图书馆可阅读。

Matlab图像处理工具箱使用简介基本概念:数字图像指的是一个被采样和量化后的二维函数,采用等距离矩形网格采样,对幅度进行等间量化而成。

至此,一幅数字图像是一个被量化的采样数值的二维矩阵。

将一幅二维的图像通过有限个离散点来表示就成为了数字图像,其中的每个点称为图像元素,即像素。

数字图像处理图像处理:图像输入→图像增强/复原/编码等→图像输出图像识别:图像输入→图像预处理→图像分割→特征提取→图像分类→识别结果输出图像理解:图像输入→图像预处理→图像描述→图像分析和理解→图像解释图像处理算法被认作数学建模十大算法之一。

学、信息论、控制论、物理学、心理学和生理学等学科的一门综合性边缘科学。

随着计算机科学的迅猛发展,以及与近代发展的新理论如小波分析、马尔柯夫随机场、分形学、数学形态学、人工智能和人工神经网络等的结合,计算机图像处理与分析近年来获得了长足的进展,呈现出强大的生命力。

已在科学研究、工农业生产、军事技术、医疗卫生、教育等许多领域得到广泛应用,产生了巨大的经济和社会效益,对推动社会发展,改善人们生活水平都起到了重要的作用。

计算机图像处理的应用领域计算机图像处理和计算机、多媒体、智能机器人、专家系统等技术的发展紧密相关。

近年来计算机识别、理解图像的技术发展很快,也就是图像处理的目的除了直接供人观看(如医学图像是为医生观看作诊断)外,还进一步发展了与计算机视觉有关的应用,如邮件自动分检,车辆自动驾驶等。

下面罗列—些典型应用实例,而实际应用更广。

1.在生物医学中的应用主要包括显微图像处理;DNA显示分析;红、白血球分析计数;虫卵及组织切片的分析;癌细胞识别;染色体分析;心血管数字减影及其他减影技术;内脏大小形状及异常检测;微循环的分析判断;心脏活动的动态分析;热像、红外像分析;x光照片增强、冻结及伪彩色增强;超声图像成像、冻结、增强及伪彩色处理;CT、MRI、γ射线照相机、正电子和质子CT的应用;专家2.遥感航天中的应用军事侦察、定位、导航、指挥等应用;多光谱卫星图像分析,地形、地图、国土普查;地质、矿藏勘探;森林资源探查、分类、防火;水利资源探查,洪水泛滥监测;海洋、渔业方面如温度、渔群的监测、预报;农业方面如谷物估产、病虫害调查;自然灾害、环境污染的监测,气象、天气预报图的合成分折预报;天文、太空星体的探测及分析;交通、空中管理、铁路选线等。

Matlab中的模糊图像处理和图像模糊恢复技术

Matlab中的模糊图像处理和图像模糊恢复技术

Matlab中的模糊图像处理和图像模糊恢复技术随着数字图像的广泛应用和发展,图像模糊成为一个重要的问题。

由于摄像器材或传输媒介等方面的限制,图像的清晰度可能受到一定程度的影响,导致图像模糊。

在实际应用中,图像的模糊问题会给图像解析、目标跟踪、计算机视觉等许多领域带来困扰。

为了改善模糊图像的质量,并解决图像模糊问题,Matlab提供了一系列的模糊图像处理和图像模糊恢复技术。

一、图像模糊的产生原因图像模糊一般是由光学系统的缺陷、运动物体、相机抖动等因素引起的。

光学系统的缺陷包括镜头的失真、散射、衍射等;运动物体指的是图像中的物体在拍摄过程中出现运动造成模糊;相机抖动是由于相机本身的不稳定性或者手持摄影造成的。

二、模糊图像处理的方法1.滤波方法滤波方法是最基本也是最常用的图像模糊处理方法。

在Matlab中,可以使用各种滤波器对图像进行处理,例如平滑滤波、高斯滤波、中值滤波等。

这些滤波器可以消除图像中的高频噪声,同时也会导致图像的模糊。

2.图像退化模型图像退化模型是描述图像模糊过程的数学模型。

常见的图像退化模型有运动模糊模型、模糊核模型等。

通过了解图像退化模型的特性,可以更准确地恢复图像的清晰度。

在Matlab中,可以根据图像退化模型进行图像恢复的研究和实现。

3.频域方法频域方法是一种基于图像频谱的模糊图像处理方法。

通过对图像进行傅里叶变换,可以将图像从空间域转换到频率域,然后在频率域进行处理,最后再进行逆傅里叶变换得到恢复后的图像。

在Matlab中,可以利用fft2函数进行傅里叶变换和逆傅里叶变换,实现频域方法对图像的处理。

三、图像模糊恢复技术1.盲去卷积算法盲去卷积算法是一种不需要知道图像退化模型的图像恢复方法。

通过对模糊图像进行去卷积处理,可以尽可能地恢复图像的清晰度。

在Matlab中,可以使用盲去卷积相关的函数和工具箱实现图像模糊恢复。

2.基于深度学习的图像超分辨率重建技术深度学习技术如今在计算机视觉领域取得了巨大的成功。

matlab国内外研究现状

matlab国内外研究现状Matlab是一种强大的数值计算软件,被广泛应用于科学研究和工程领域。

本文将介绍国内外对于Matlab的研究现状。

国内研究方面,近年来Matlab在各个学科领域的应用越来越广泛。

在工程领域,Matlab被用于信号处理、图像处理、控制系统设计等方面的研究。

例如,在信号处理方面,研究人员利用Matlab进行信号去噪、频谱分析等工作,为通信系统的设计和优化提供了有力支持。

在图像处理方面,Matlab可以进行图像增强、边缘检测、目标识别等操作,为计算机视觉和模式识别的研究提供了基础。

在科学研究方面,Matlab也发挥着重要作用。

例如,在物理学领域,研究人员可以利用Matlab进行数值模拟和数据分析,帮助解决复杂的物理问题。

在生物医学领域,研究人员可以利用Matlab进行基因序列分析、蛋白质结构预测等工作,为疾病诊断和治疗提供支持。

此外,Matlab还被广泛应用于经济学、金融学、社会学等社会科学的研究中,帮助研究人员进行数据处理和建模分析。

国外方面,Matlab的研究也非常活跃。

在计算机科学领域,Matlab被广泛应用于算法设计、机器学习、人工智能等方面的研究。

例如,在机器学习领域,研究人员利用Matlab进行数据预处理、特征提取、模型训练等操作,为机器学习算法的研究和应用提供了平台。

同时,在信号处理和图像处理方面,国外研究人员也利用Matlab进行了许多重要的研究工作,例如基于深度学习的图像识别和目标检测算法的设计。

Matlab在教育领域也发挥着重要作用。

许多大学和研究机构使用Matlab作为教学工具,帮助学生学习和理解各种科学和工程问题。

Matlab提供了丰富的工具箱和函数库,使得学生可以方便地进行数值计算、数据可视化和模拟实验等操作。

Matlab在国内外的研究中发挥着重要作用,并且得到了广泛的应用和认可。

无论是在工程领域、科学研究还是教育领域,Matlab都为研究人员提供了强大的工具和平台,帮助他们解决复杂的问题。

基于MATLAB的数字图像处理的设计与实现

基于MATLAB的数字图像处理的设计与实现摘要数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。

数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。

目的:改善医学图像质量,使图像得到增强。

方法:利用Matlab工具箱函数,采用灰度直方图均衡化和高通滤波的方法对一幅X线图像进行增强处理。

结果:用直方图均衡化的算法,将原始图像密集的灰度分布变得比较稀疏,处理后的图像视觉效果得以改善。

高通滤波对于局部细节增强显著,高通滤波后使不易观察到的细节变得清晰。

结论:使用Matlab工具箱大大简化了编程工作,为医学图像处理提供了一种技术平台。

经过直方图均衡化和高通滤波处理后的医学图像,视觉效果得到改善。

关键词:MATLAB;直方图均衡化;高通滤波;图像增强AbstractDigital image processing is an emerging technology, with the development of computer hardware, real—time digital image processing has become possible due to digital image processing algorithms to appear,making it faster and faster processing speed,better for people services .Digital image processing is used by some algorithms computer graphics image pro cessing technology. Objective:To improve the quality of medical image by enhancing the details。

MATLAB图像处理技术在农业病虫害识别中的应用分析

MATLAB图像处理技术在农业病虫害识别中的应用分析作者:梁晓彤徐践来源:《南方农业·下旬》2017年第07期摘要目前,图像处理技术的应用与研究都有了很大进展,其应用也已经渗透到农业生产的各个领域。

在农业生产中,病虫害一直是困扰农作物生长的基本问题。

因此研究农作物病虫草害的自动检测与识别,开发智能化控制系统,准确地获取植物受害的病因、病种及受害程度是保证农业生产可持续发展的重要环节。

借助MATLAB工具针对农业病虫害的图像进行识别和处理,研究基于图像处理技术的农业病虫害识别算法。

通过图像处理技术实现昆虫种类自动识别,弥补了传统的给予文字描述的昆虫识别及昆虫学家人工识别方法的不足,能够给用户提供更为实时、准确的昆虫识别结果。

关键词 MATLAB;图像处理技术;农业病虫害;图像识别中图分类号:TP391.4 文献标志码:B DOI:10.19415/ki.1673-890x.2017.21.0651 研究背景及意义我国自古就是农业大国,农业始终是支撑国民经济建设与发展的最重要的产品。

在农业生产中,病虫害一直是影响农作物生长的重要问题。

病虫害是引起作物减产低产的重要原因之一,及时发现并控制害虫数量,对确保作物的生长具有重要作用。

在长期以来的防治害虫实践中,人们一直在探索并研究着各种防治的方法,经过不断的改进和发展,逐步形成了目前普遍采用的5类基本防治方法,即植物检疫、农业防治、生物防治、化学防治和物理机械防治。

这5类防治方法各具优点,但同时也存在着一定的局限性。

如通常这些传统的防治方法都需要投入较大的人力、物力、财力,且易受到地域、季节等限制,还会对人畜,环境产生较大的副作用。

由于不能准确地监测出植物病害,所以农业生产者盲目地施用大量的农药和化肥来防治病虫害的不断发生,这样不仅浪费了财力、物力和人力,而且没有起到很好的防治作用,影响了农产品的品质和产量,也破坏了生态环境。

所以,及时,准确地监测害虫的信息,确定出害虫的位置,种类和分布情况等,是首先要解决的问题。

基于matlab的课程设计题目

基于matlab的课程设计题目题目:基于matlab的图像处理与分析设计内容:1. 图像读取与显示:使用matlab读取图像文件,并将其显示在matlab界面上。

2. 图像处理:对读取的图像进行处理,包括图像的灰度化、二值化、滤波、边缘检测等操作。

3. 图像分析:对处理后的图像进行分析,包括图像的特征提取、目标检测、图像识别等操作。

4. 图像保存:将处理后的图像保存为新的图像文件。

5. 界面设计:设计一个简单的matlab界面,包括图像读取、处理、分析和保存等功能按钮,方便用户进行操作。

设计步骤:1. 首先,使用matlab的imread函数读取图像文件,并使用imshow函数将其显示在matlab界面上。

2. 对读取的图像进行处理,包括图像的灰度化、二值化、滤波、边缘检测等操作。

可以使用matlab的im2gray函数将图像转换为灰度图像,使用im2bw函数将灰度图像转换为二值图像,使用imfilter函数进行滤波操作,使用edge函数进行边缘检测操作。

3. 对处理后的图像进行分析,包括图像的特征提取、目标检测、图像识别等操作。

可以使用matlab的regionprops函数提取图像的特征,使用imfindcircles函数进行圆形目标检测,使用imread函数读取训练好的图像库进行图像识别。

4. 将处理后的图像保存为新的图像文件。

可以使用matlab的imwrite函数将处理后的图像保存为新的图像文件。

5. 最后,设计一个简单的matlab界面,包括图像读取、处理、分析和保存等功能按钮,方便用户进行操作。

可以使用matlab的GUI设计工具进行界面设计。

设计要求:1. 界面简洁明了,操作方便。

2. 图像处理和分析的算法要求准确可靠。

3. 代码规范,注释清晰,易于理解。

4. 提供详细的使用说明文档。

5. 可以自行选择图像进行处理和分析,也可以使用提供的测试图像进行测试。

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

- 1 - Matlab在图像处理与 目标识别方面的应用实验

作者:林健(北京理工大学计算机科学技术学院) 指导教师:尚斐(北京理工大学医学图像实验室)

Website:http://www.linjian.cn/ E-mail:yumenlj@126.com QQ:71424 - 2 -

一、染色体识别与统计 待处理的图像如下所示。图像有明显的噪音,部分染色体有断开和粘连的情况。

要识别其中的染色体并统计其数目,我们采用Matlab平台提供的一些图像处理函数。基本方法如下: 1、读取待处理的图像,将其转化为灰度图像,然后反白处理。 I = imread('chrimage.bmp'); I2 = rgb2gray(I); s = size(I2); I4 = 255*ones(s(1), s(2), 'uint8'); I5 = imsubtract(I4,I2); 2、对图像进行中值滤波去除噪音。经试验,如果采用3×3的卷积因子,噪音不能较好地去除,染色体附近毛糙严重。而5×5和7×7的卷积因子能取得较好的效果。图示滤噪前后的效果对比。 I3 = medfilt2(I5,[5 5]);

3、将图像转化为二值图像。经试验,采用门限值为0.3附近时没有染色体断开和粘连(如下左图),便于后期统计。 I3 = imadjust(I3); bw = im2bw(I3, 0.3); - 3 -

在此步骤,如果使用graythresh函数自动寻找门限,得到的图像染色体断开的比较多(如下中图),此时可以将白色区域膨胀,使断开的的染色体连接(如下右图)。 level = graythresh(I3); bw = im2bw(I3,level); se = strel('disk',5); bw = imclose(bw,se);

两种方法相比,前者对染色体面积的计算比较准确,后者对不同图像的适应性较强。下面的步骤将基于前一种方法。 4、去除图像中面积过小的,可以肯定不是染色体的杂点。这些杂点一部分是滤噪没有滤去的染色体附近的小毛糙,一部分是图像边缘亮度差异产生的。 bw = bwareaopen(bw, 10); 5、标记连通的区域,以便统计染色体数量与面积。 [labeled,numObjects] = bwlabel(bw,4); 6、用颜色标记每一个染色体,以便直观显示。此时染色体的断开与粘连问题已基本被解决。最终效果如下图。 RGB_label=label2rgb(labeled,@spring,'c','shuffle');

7、统计被标记的染色体区域的面积分布,显示染色体总数。统计总数为46,与人工数出数目的相同。 - 4 -

chrdata = regionprops(labeled,'basic') allchrs = [chrdata.Area]; num = size(allchrs) nbins = 20; figure,hist(allchrs,nbins); title(num(2))

010020030040050060070000.511.522.533.544.5546

至此,染色体识别与统计完成。此方法采用Matlab已有的函数,简单且快捷。但缺点是此程序是专为这一幅待处理图像写的,诸如门限、滤噪方法的特定性强。同时没有经过大量同类待处理图像的测试,系统通用性不强。不过作为实验,了解提取与分析目标图像中的有效信息的基本方法,是足够的。

* 参考文献: 1、Correcting Nonuniform Illumination, Matlab 7.0 Demos, The MathWorks. - 5 -

二、汽车牌照定位与字符识别 待处理的图像如下所示。图像整体比较清晰干净,车牌方向端正,字体清楚,与周围颜色的反差较大。

要定位汽车牌照并识别其中的字符,我们采用Matlab平台提供的一些图像处理函数,以傅立叶变换通过字符模板与待处理的图像匹配为核心思想。基本方法如下: 1、读取待处理的图像,将其转化为二值图像。经试验,采用门限值为0.2附近时车牌字符最为清楚,杂点最少(如下左图)。 I = imread('car.jpg'); I2 = rgb2gray(I); I4 = im2bw(I2, 0.2); 2、去除图像中面积过小的,可以肯定不是车牌的区域。 bw = bwareaopen(I4, 500); 3、为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(如下右图)。 se = strel('disk',15); bw = imclose(bw,se); - 6 -

4、此时车牌所在白色连通域已清晰可见,但在黑色区域以外,是一个更大的白色连通域,将车牌所在连通域包围了。有必要将其填充。 bw = imfill(bw,[1 1]); 5、查找连通域边界。同时保留此图形,以备后面在它上面做标记。 [B,L] = bwboundaries(bw,4); imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2) end 6、找出所有连通域中最可能是车牌的那一个。判断的标准是:测得该车牌的长宽比约为4.5:1,其面积和周长存在关系:(4.5×L×L)/(2×(4.5+1)×L)2≈1/27,以此为特征,取metric=27*area/perimeter^2作为连通域的匹配度,它越接近1,说明对应的连通域越有可能是4.5:1的矩形。 % 找到每个连通域的质心 stats = regionprops(L,'Area','Centroid'); % 循环历遍每个连通域的边界 for k = 1:length(B) % 获取一条边界上的所有点 boundary = B{k}; % 计算边界周长 delta_sq = diff(boundary).^2; perimeter = sum(sqrt(sum(delta_sq,2))); % 获取边界所围面积 area = stats(k).Area; % 计算匹配度 metric = 27*area/perimeter^2; % 要显示的匹配度字串 metric_string = sprintf('%2.2f',metric); % 标记出匹配度接近1的连通域 if metric >= 0.9 && metric <= 1.1 centroid = stats(k).Centroid; plot(centroid(1),centroid(2),'ko'); % 提取该连通域所对应在二值图像中的矩形区域 goalboundary = boundary; s = min(goalboundary, [], 1); e = max(goalboundary, [], 1); goal = imcrop(I4,[s(2) s(1) e(2)-s(2) e(1)-s(1)]); - 7 -

end % 显示匹配度字串 text(boundary(1,2)-35,boundary(1,1)+13,... metric_string,'Color','g',... 'FontSize',14,'FontWeight','bold'); end 图示为找到的各个连通区域,中部被标记“○”的矩形匹配度为0.99,是最可能的区域。下边是由它确定的二值图像中的车牌区域:

7、将车牌图像反白处理,并扩充为256×256的方阵(如下左图),以便下面傅立叶变换中矩阵旋转运算的进行。 goal = ~goal; goal(256,256) = 0; figure; imshow(goal);

8、从文件读取一个字符模板(以“P”为例,模板图像直接从上述二值图像中截取得到)。对图像计算傅立叶描述子,用预先定义好的决策函数对描述子进行计算。变换后的图像中,亮度的高低指示相应区域与模板的匹配程度(如下中图)。 w = imread('P.bmp'); w = ~w; C=real(ifft2(fft2(goal).*fft2(rot90(w,2),256,256))); 9、通过检查C的最大值,试验确定一个合适的门限(这里240比较合适),显示亮度大于该门限的点,也就是与模板的匹配程度最高的位置(如下右图)。 thresh = 240; figure; imshow(C > thresh); - 8 -

对照左右两图,可以说明字符“P”被识别和定位了。同样的方法,可以识别和定位其它字符。 这种方法总体上比较容易理解,Matlab的函数隐藏了傅立叶变换等复杂的计算。缺点:在定位车牌方面,程序专门按本题给定图像的特点设计,没有普适性。字符识别方面,仅能识别与给定模板基本一致的字符。车牌大小、角度、光线、完整性、清晰度发生变化后,就无法识别了。同时对于“8”与“B”这样相似的字符,识别时常常混淆。

* 参考文献: 1、Applications of the Fourier Transform, Matlab 7.0 Help Documents, The MathWorks. 2、Identifying Round Objects, Matlab 7.0 Demos, The MathWorks.

相关文档
最新文档