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

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

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

Website :http://www.linjian.cn/ E-mail :[email protected] QQ :71424

一、染色体识别与统计

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

要识别其中的染色体并统计其数目,我们采用Matlab 平台提供的一些图像处理函数。基本方法如下:

1、读取待处理的图像,将其转化为灰度图像,然后反白处理。

2、对图像进行中值滤波去除噪音。经试验,如果采用3×3的卷积因子,噪音不能较好地去除,染色体附近毛糙严重。而5×5和7×7的卷积因子能取得较好的效果。图示滤噪前后的效果对比。

3、将图像转化为二值图像。经试验,采用门限值为0.3附近时没有染色体断开和粘

在此步骤,如果使用graythresh 函数自动寻找门限,得到的图像染色体断开的比较

两种方法相比,前者对染色体面积的计算比较准确,后者对不同图像的适应性较强。下面的步骤将基于前一种方法。

4、去除图像中面积过小的,可以肯定不是染色体的杂点。这些杂点一部分是滤噪没有滤去的染色体附近的小毛糙,一部分是图像边缘亮度差异产生的。

5、标记连通的区域,以便统计染色体数量与面积。

6、用颜色标记每一个染色体,以便直观显示。此时染色体的断开与粘连问题已基本被解决。最终效果如下图。

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

46

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

* 参考文献:

1、Correcting Nonuniform Illumination, Matlab 7.0 Demos, The MathWorks.

二、汽车牌照定位与字符识别

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

要定位汽车牌照并识别其中的字符,我们采用Matlab 平台提供的一些图像处理函数, 以傅立叶变换通过字符模板与待处理的图像匹配为核心思想。基本方法如下:

1、读取待处理的图像,将其转化为二值图像。经试验,采用门限值为0.2附近时车牌字符最为清楚,杂点最少(如下左图)。

2、去除图像中面积过小的,可以肯定不是车牌的区域。

3、

4、此时车牌所在白色连通域已清晰可见,但在黑色区域以外,是一个更大的白色连56、找出所有连通域中最可能是车牌的那一个。判断的标准是:测得该车牌的长宽比

2

约为4.5:1,其面积和周长存在关系:(4.5×L ×L)/(2×(4.5+1) ×L) ≈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

plot(centroid(1),centroid(2),'ko');

% 提取该连通域所对应在二值图像中的矩形区域 goalboundary = boundary; s = min(goalboundary, [], 1); e = max(goalboundary, [], 1);

区域。下边是由它确定的二值图像中的车牌区域:

7、将车牌图像反白处理,并扩充为256×256的方阵(如下左图),以便下面傅立叶

变换中矩阵旋转运算的进行。

8、从文件读取一个字符模板(以“P 取得到)

。对图像计算傅立叶描述子,用预先定义好的决策函数对描述子进行计算。变换9

,显示亮度大于该门限的点,也就是与模板的匹配程度最高的位置(如下右图)。

对照左右两图,可以说明字符“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.

三、基于BP 神经网络识别字符的简单实验

汽车牌照定位与字符识别是目标自动识别的一个典型问题。车牌由有限的字母和数字组成,采用固定的印刷字体和排列顺序。在车牌自动识别系统中,因自然因素或采样因素使得原本规则的印刷体字符产生畸变,给字符识别来了很大困难。BP 神经网络算法是把一组样本输入输出问题转化为一个非线性优化问题,并通过梯度算法利用迭代运算求解权值的一种学习方法。采用BP 网络进行分类,并附加线性感知器来实现单字符的有效识别,算法简便,识别率高,可适用于多种高噪声环境中的印刷体字符识别。

下面的实验引自《神经网络模型及其MATLAB 仿真程序设计》一书P94~98,简单起见,只对含有单独数字的图片样本进行识别,不涉及从照片中定位车牌,分割字符等前期处理。我在保持基本算法思想不变的前提下,对原书程序及其叙述做了一定的修改。Matlab 源程序略。

一、BP 神经网络结构分析:

按照BP 神经网络设计方法选用两层BP 网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid 函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline ,隐层节点数为256+1+a (a =1~10) ,取25。

二、神经网络仿真程序设计:

1、构造训练样本集,并构成训练所需的输入矢量和目标矢量:准备10组,每组10个(0~9)数字bmp 图片作为训练样本。其中1组为清晰的,这里使用Microsoft Visual C#编程生成。另9组是在清晰样本的基础上,用Matlab 添加'salt & pepper' 、'gaussian' 等噪音制作成的(下图示以“5”为例)。这些图片经过一定的预处理,取出其最大有效区域,归一为16×16的二值图像,作为输入矢量。

2、构造BP 神经网络,并根据训练样本集形成的输入矢量和目标矢量,对BP 网络进行训练。训练的误差性能曲线如图:

10

2

Performance is 0.000989527, Goal is 0.001

10

1

T r a i n i n g -B l u e G o a l -B l a c k

10

10

10

10

10

50100

150300 Epochs

200250300

3、对BP 神经网络进行仿真。用不同的方法生成测试样本图像,存于另外的bmp 文

为提高识别率,可以增加训练样本,或通过增加字体的特征向量等途径来解决。由于涉及较多的理论,这里不再深入讨论。

* 参考文献:

1、周开利等, 《神经网络模型及其MATLAB 仿真程序设计》, 清华大学出版社, 2005. 2、张兴会等, 基于神经网络的车牌照自动识别系统, 仪器仪表学报, 第22卷第3期增刊, 2001.

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

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

Website :http://www.linjian.cn/ E-mail :[email protected] QQ :71424

一、染色体识别与统计

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

要识别其中的染色体并统计其数目,我们采用Matlab 平台提供的一些图像处理函数。基本方法如下:

1、读取待处理的图像,将其转化为灰度图像,然后反白处理。

2、对图像进行中值滤波去除噪音。经试验,如果采用3×3的卷积因子,噪音不能较好地去除,染色体附近毛糙严重。而5×5和7×7的卷积因子能取得较好的效果。图示滤噪前后的效果对比。

3、将图像转化为二值图像。经试验,采用门限值为0.3附近时没有染色体断开和粘

在此步骤,如果使用graythresh 函数自动寻找门限,得到的图像染色体断开的比较

两种方法相比,前者对染色体面积的计算比较准确,后者对不同图像的适应性较强。下面的步骤将基于前一种方法。

4、去除图像中面积过小的,可以肯定不是染色体的杂点。这些杂点一部分是滤噪没有滤去的染色体附近的小毛糙,一部分是图像边缘亮度差异产生的。

5、标记连通的区域,以便统计染色体数量与面积。

6、用颜色标记每一个染色体,以便直观显示。此时染色体的断开与粘连问题已基本被解决。最终效果如下图。

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

46

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

* 参考文献:

1、Correcting Nonuniform Illumination, Matlab 7.0 Demos, The MathWorks.

二、汽车牌照定位与字符识别

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

要定位汽车牌照并识别其中的字符,我们采用Matlab 平台提供的一些图像处理函数, 以傅立叶变换通过字符模板与待处理的图像匹配为核心思想。基本方法如下:

1、读取待处理的图像,将其转化为二值图像。经试验,采用门限值为0.2附近时车牌字符最为清楚,杂点最少(如下左图)。

2、去除图像中面积过小的,可以肯定不是车牌的区域。

3、

4、此时车牌所在白色连通域已清晰可见,但在黑色区域以外,是一个更大的白色连56、找出所有连通域中最可能是车牌的那一个。判断的标准是:测得该车牌的长宽比

2

约为4.5:1,其面积和周长存在关系:(4.5×L ×L)/(2×(4.5+1) ×L) ≈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

plot(centroid(1),centroid(2),'ko');

% 提取该连通域所对应在二值图像中的矩形区域 goalboundary = boundary; s = min(goalboundary, [], 1); e = max(goalboundary, [], 1);

区域。下边是由它确定的二值图像中的车牌区域:

7、将车牌图像反白处理,并扩充为256×256的方阵(如下左图),以便下面傅立叶

变换中矩阵旋转运算的进行。

8、从文件读取一个字符模板(以“P 取得到)

。对图像计算傅立叶描述子,用预先定义好的决策函数对描述子进行计算。变换9

,显示亮度大于该门限的点,也就是与模板的匹配程度最高的位置(如下右图)。

对照左右两图,可以说明字符“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.

三、基于BP 神经网络识别字符的简单实验

汽车牌照定位与字符识别是目标自动识别的一个典型问题。车牌由有限的字母和数字组成,采用固定的印刷字体和排列顺序。在车牌自动识别系统中,因自然因素或采样因素使得原本规则的印刷体字符产生畸变,给字符识别来了很大困难。BP 神经网络算法是把一组样本输入输出问题转化为一个非线性优化问题,并通过梯度算法利用迭代运算求解权值的一种学习方法。采用BP 网络进行分类,并附加线性感知器来实现单字符的有效识别,算法简便,识别率高,可适用于多种高噪声环境中的印刷体字符识别。

下面的实验引自《神经网络模型及其MATLAB 仿真程序设计》一书P94~98,简单起见,只对含有单独数字的图片样本进行识别,不涉及从照片中定位车牌,分割字符等前期处理。我在保持基本算法思想不变的前提下,对原书程序及其叙述做了一定的修改。Matlab 源程序略。

一、BP 神经网络结构分析:

按照BP 神经网络设计方法选用两层BP 网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid 函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline ,隐层节点数为256+1+a (a =1~10) ,取25。

二、神经网络仿真程序设计:

1、构造训练样本集,并构成训练所需的输入矢量和目标矢量:准备10组,每组10个(0~9)数字bmp 图片作为训练样本。其中1组为清晰的,这里使用Microsoft Visual C#编程生成。另9组是在清晰样本的基础上,用Matlab 添加'salt & pepper' 、'gaussian' 等噪音制作成的(下图示以“5”为例)。这些图片经过一定的预处理,取出其最大有效区域,归一为16×16的二值图像,作为输入矢量。

2、构造BP 神经网络,并根据训练样本集形成的输入矢量和目标矢量,对BP 网络进行训练。训练的误差性能曲线如图:

10

2

Performance is 0.000989527, Goal is 0.001

10

1

T r a i n i n g -B l u e G o a l -B l a c k

10

10

10

10

10

50100

150300 Epochs

200250300

3、对BP 神经网络进行仿真。用不同的方法生成测试样本图像,存于另外的bmp 文

为提高识别率,可以增加训练样本,或通过增加字体的特征向量等途径来解决。由于涉及较多的理论,这里不再深入讨论。

* 参考文献:

1、周开利等, 《神经网络模型及其MATLAB 仿真程序设计》, 清华大学出版社, 2005. 2、张兴会等, 基于神经网络的车牌照自动识别系统, 仪器仪表学报, 第22卷第3期增刊, 2001.


相关文章

  • 毕业论文-基于MATLAB的数字图像处理
  • 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术.数字 ...查看


  • 基于matlab的图像边缘检测算法研究
  • 本科毕业设计(论文) 检测算法研究 学 院:信息工程学院 专 业:自动化 学 号: 学生姓名: 指导教师: 二○一 年 五月 二十三日 题 目:基于matlab 的图像边缘 基于matlab 的图像边缘检测算法研究 摘要 图像的边缘检测技术 ...查看


  • 基于matlab的人脸识别技术
  • 基于matlab的人脸识别技术 论文 摘要:随着计算机技术的飞速发展,人脸识别技术逐渐发展壮大起来,并应用到众多领域. 人脸识别是指在人脸检测的基础上针对输入的人脸图像,通过特征提取与特征匹配,找出与人脸库中匹配的人脸图像,从而达到识别效果 ...查看


  • 数字图像处理技术从基础到实战
  • 数字图像处理技术从基础到实战 本课程包含图像处理的基础知识以及案例应用,通过视频教程+在线交流的形式展现,力求为读者提供最便捷.直接的技术支持,解决学员在图像处理相关研发过程中遇到的最具体.实际的技术难点,争取与广大学员分享研发过程中所涉及 ...查看


  • 二维人脸识别实验报告
  • 实 验 报 告 课程名称 人工智能 实验名称 班 级 学 号 姓 名 成 绩 指导教师 实验日期 一.实验目的 (1)通过本次人脸识别实验,进一步加深图像处理和基本算法的掌握,能利用已有的算法和程序去找出和识别人脸. (2)通过本次人脸识别 ...查看


  • 边缘检测算子及其在裂缝图像中的应用
  • 2010年第6期(总第248期) Number6in2010(TotaINo.248) 混 凝 Concrete 土 理论研究 1T瑾ORETICALRESEARCH doi:10.3969/j.issn.1002・3550.2010.06 ...查看


  • 基于Matlab的人脸识别课程设计
  • 摘要 人脸识别因其在安全验证系统.信用卡验证.医学.档案管理.视频会议.人机交互.系统公安(罪犯识别等) 等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点. 本文提出了基于24位彩色图像对人脸进行识别的方法,介绍的主 ...查看


  • 基于matlab语音信号处理设计毕业论文
  • Matlab 语音信号处理 摘要 语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一.通过语音传递信息是人类最重要.最有效.最常用和最方便的交换信息形式. Ma ...查看


  • 车牌检测识别实验报告
  • <数字图像处理>课程设计报告 学院 专业 电子信息科学与技术 班级 XXXXXXXXXXXX 学生姓名学号 车牌检测识别 关键词:车牌定位,字符分割,字符识别 绪论: 随着我国的公路交通事业发展迅速,人工管理方式已经不能满着实际 ...查看


热门内容