ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:141.44KB ,
资源ID:15310482      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15310482.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像匹配.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数字图像匹配.docx

1、数字图像匹配 数字图像匹配一.需求分析题目: 数字图像匹配问题描述: 所谓图像匹配,就是指图像之间的比较、得到不同图像之间的相似度。基于数字图像,编写对两副数字图像进行匹配的算法及演示程序。基本要求: (1).进行匹配的两幅图像为JPG格式或BMP格式。(2).能够进行对两幅数字图像的匹配。(3).采用交互式程序对图像进行匹配。提高要求:能够对数字进行简单处理,例如放大,缩小,翻转,灰度处理,图象二值化。开发环境:MATLAB 7.1 GUI:MATLAB 7.1自带的GUI界面编辑器基本功能:通过分析题目的基本要求,我将此软件的基本功能主要分为2大模块:一个是数字图像处理模块,另一个是数字图

2、像匹配模块。在数字图像处理模块中,用户可以对数字图像进行简单的处理,可以对图像进行放大,缩小,翻转,灰度处理。在数字图像匹配模块中,用户可以对两张图像进行匹配并显示匹配结果。性能、接口:输入/输出形式:此软件以MATLAB7.1 GUI编辑器开发出的界面作为载体对相映的图像行相应的操作,所以输入输出形式主要是通过MATLAB7.1 GUI编辑器开发出的界面来实现的。输入形式:输入任何一幅JPG格式或BMP格式的数字图像。输出形式:将经过相应操作处理后的图片显示出来。测试数据要求: 任何一幅JPG格式或BMP格式的数字图像。 二算法设计1.概念解释:数字图像:数字图像是由被称做像素的小块区域组成

3、的二维像素矩阵。一般把图像分成3种形式:单色图像,灰度图像和彩色图像。像素:表示图像颜色的最小单位灰度图像:灰度图是指只含亮度信息,不含色彩信息的图像,就像平时看到的黑白照片:亮度由暗到明,变化是连续的。灰度图的每个像素的亮度用一个数值来表示,通常数值范围在0255之间,即可用一个字节来表示,0表示黑,255表示白,而其他表示灰度。点阵图:显示器的屏幕由可以发光的像素点组成. 并且从几何位置看, 所用这些像素点构成一个矩形的阵列.利用计算机控制各像素点按我们指定的要求发光,就构成了我们需要的图形.这种方式构成的图形我们可称之为点阵图形.点阵图形的坐标系统:各像素点有一个坐标唯一指定了它的位置.

4、如果点阵图形的大小是NM, 那么它的点阵共有M行N 列, 每个像素点的位置就由它所在的行和列的位置所唯一确定. 这个行和列的位置就给出了点阵图形的坐标系统. 按照前面的顺序, 第m行, 第n列的像素点顺序数就是m+(n-1)N.反之, 顺序数为s的像素点在第s Mod N行, 第Int(s/N ) + 1列, 这里的s Mod N是s除以N后的余数, Int( s/N ) 是s/N的整数部分.需要注意的是第m行, 第n列的像素点的坐标可能不是(m; n), 而是(m-1; n-1). 这是因为有时为了在计算机中处理的方便, 像素点的行列的排序不是从1, 而是从0开始的. 我们常用的显示器的像素

5、坐标就是如此.2数字图像匹配算法设计: 在此软件中我采用了两种图像匹配算法:基于灰度的模板匹配算法基于灰度的快速匹配算法。由于各种各样的原因如(成象条件的差异)图象预处理,引入的误差等,参与图象匹配的模板与潜在的匹配子图象间通常存在着程度不同的不一致,因此根据模板在一幅陌生图象中检测出潜在的匹配对象并得出它在图象中的位置是一件复杂的工作。基于灰度的摸版匹配算法模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与该模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。 模板匹配常用的一种测度为模手术台与源图像对应区域的误差平方和。设f(x,y)为MN的源图像

6、,t(j,k)为JK(JM,KN)的模板图像,则误差平方和测度定义为:由上式展开可得:令 DS(x,y)称为源图像中与模板对应区域的能量,它与像素位置(x,y)有关,但随像素位置(x,y)的变化,DS(x,y)变化缓慢。DST(x,y)模板与源图像对应区域的互相关,它随像素位置(x,y)的变化而变化,当模板t(j,k)和源图像中对应区域相匹配时取最大值。DT(x,y)称为模板的能量,它与图像像素位置(x,y)无关,只用一次计算便可。显然,计算误差平方和测度可以减少计算量。基于上述分析,若设DS(x,y)也为常数,则用DST(x,y)便可进行图像匹配,当DST(x,y)取最大值时,便可认为模板与

7、图像是匹配的。但假设DS(x,y)为常数会产生误差,严重时将无法下确匹配,因此可用归一化互相关作为误差平方和测度,其定义为:下图给出了模板匹配的示意图,其中假设源图像f(x,y)和模板图像t(k,l)的原点都在左上角。对任何一个f(x,y)中的(x,y),根据上式都可以算得一个R(x,y).当x和y变化时,t(j,k)在源图像区域中移动并得出R(x,y)所有值。R(x,y)的最大值指出了与t(j,k)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。基于灰度的快速匹配算法1 局部灰度特征的编码与计算 首先将整幅图像划分为kk尺寸且互不重叠的方块,k可根据问

8、题任意选择,称该方块为R-块.如果图像的边长不是k的整数倍,则将最底部与最右边剩余的几行、几列裁剪掉(下文将说明这并不影响最终的匹配结果).对边长为H的图像,共可得到 H2/k2 个R-块.对于R-块Ri,S(Ri)表示Ri所包含像素的灰度值之和. 定义1. R-块(如图1中的R5所示)与其周围8个相邻的R-块(如图1中的R1,R2,R3,R4,R6,R7,R8,R9所示)组成R-块的邻域.将R-块的邻域分为4个部分,分别为D1,D2,D3,D4(如图1所示),称为R-块的D-邻域.R-块R5分别属于4个D-邻域,即D1=R1R2R4R5;D2=R4R5R7R8;D3=R5R6R8R9;D4=

9、R2R3R5R6. 对于每个D-邻域中的4个R-块,可规定一个顺序(如图2中所取的逆时针序).对Dj所包含的4个R-块的像素灰度值之和S(Rj1),S(Rj2),S(Rj3),S(Rj4)做排序,显然共有4!=24种可能,每种排序结果可以用5位的二进制编码来表示,记作P(Dj)00000,00001,10111. 图1 图2将R-块Ri所在的4个D-块的P(Dj)做位串拼接,得到F(Ri)=P(D1)P(D2)P(D3)P(D4),即 F(Ri)=(P(D1)15)+(P(D2)10)+(P(D3)5)+P(D4). 其中,P(Dj)为Ri所在的邻域Dj的二进编码,0.9%规定值为0.9 %下

10、面用plot函数在原图的坐标系上画出匹配区域 plot(j:j+pipei_width,i,r); plot(j:j+pipei_width,i+pipei_height,r); plot(j,i:i+pipei_height,r); plot(j+pipei_width,i:i+pipei_height,r); end endend(2) 基于灰度的快速模板匹配算法dec2bin函数功能:十进制数转换成二进制数格式:A=dec2bin(B,位数)说明:B为十进制数,A为转换后的二进制序列,位数为A的二进制位数。举例:A=dec2bin(13,5)%将13转换为5位的二进制运行结果:A =01

11、101bin2dec函数功能:二进制数转换成十进制数格式:A=bin2dec(B)说明:B为二进制序列,A为转换后的十进制数。举例:C=bin2dec(0101101)%将二进制为0101101的序列转化为十进制运行结果:C = 45getOrder函数功能:根据输入的四项参数的大小顺序,返回一个5位二进制的编码格式:shunxu=getOrder(temp_shunxu_1,temp_shunxu_2,temp_shunxu_3,temp_shunxu_4)举例:T=getOrder(32,13,56,42)运行结果:T= 10000gettezheng函数功能:根据特征块的左上角坐标得出该

12、特征块的特征值,特征值的定义详见基于灰度的快速匹配算法中的定义2。格式:tezheng=gettezheng(i,j,I,k)说明:i,j为特征块左上角的横坐标与衷纵坐标,I为图像矩阵,k为最佳分块标准值min函数功能:求向量中的最小值格式:A=min(B)说明:B为一个向量,A中保存的是B中的最小值举例:A=min(12 32 45 66 2 3)运算结果:A= 2max函数功能:求向量中的最大值格式:A=max(B)说明:B为一个向量,A中保存的是B中的最大值举例:A=max(12 32 45 66 2 3)运算结果:A= 66sum函数功能:求向量中和格式:A=sumB)说明:B为一个向

13、量,A中保存的是B中的和举例:A=sum(12 32 45 66 2 3)运算结果:A= 160testpipei_2函数实现细节::读取原图像(搜索图)和匹配图像(模板图)yuantu=imread(E:P1010813.jpg);%读取原图像pipeitu=imread(afterCut.jpg);%读取匹配图像:将原图像和匹配图像灰度化,以便于计算yuantu2gray=rgb2gray(yuantu);%将原图灰度化pipeitu2gray=rgb2gray(pipeitu);%将匹配图灰度化: 获取原图像和匹配图像的尺寸及分块标准值pipei_height,pipei_width=s

14、ize(pipeitu2gray);%获取匹配图象的大小尺寸,其值为高,宽,将匹配图象的长度值赋给pipei_width,将匹配图象的宽度值赋给pipei_lenthyuantu_height,yuantu_width=size(yuantu2gray);%获取原图象的大小尺寸,其值为高,宽,将原图象的长度值赋给pipei_width,将原图象的宽度值赋给pipei_lenthtemp_min=min(pipei_height,pipei_width);%取两个边中最短的一条边k=fix(temp_min/5);%以分成33特征块为基准,得出最佳分块标准值:计算及记录匹配图的9个特征块的信息;

15、显示出原图,并调用hold on命令,以实现以后在原图像上做标记 for t=1:3%去掉外围的一圈 for s=1:3%取顺时针为正方向 temp_pipeitu(t,s)=bin2dec(gettezheng(t,s,pipeitu2gray,k); %将二进制编码值(特征块值)以十进制的形式保存在33的矩阵中的对应位置 end; end; imshow(public_A); hold on;:在原图像上进行扫描,横坐标到原图像的宽度减去匹配图的宽度,纵坐标到原图像高度减去匹配图的高度;对于原图像上扫描到的每个像素点,以此像素点的坐标为准,剪裁(参见imcrop函数说明)出一个大小和匹配图

16、大小一样的矩阵,此像素点为该矩阵的左上角第一个像素;对这个临时矩阵进行特征值提取,并和匹配图的特征值进行比较,如果特征块的匹配数大于一定数(我设定为大于等于8),可认为在以此坐标为左上角第一个像素的临时矩阵和匹配图矩阵是相匹配的;如果在此坐标下是匹配的话,则以此为左上角,将匹配区域标记出来。 r=0; for t=1:3 %去掉外围的一圈 for s=1:3 %取顺时针为正方向 temp_pipeitu_te=temp_pipeitu(t,s); temp_yuantu_te=bin2dec(gettezheng(t,s,temp_picture,k); if temp_pipeitu_te=

17、temp_yuantu_te%如果特征值相同,r就加1 r=r+1; else break; end; end; if r=0 break; end; end; if r=8%下面用plot函数在原图的坐标系上画出匹配区域 plot(j:j+pipei_width,i,r); plot(j:j+pipei_width,i+pipei_height,r); plot(j,i:i+pipei_height,r); plot(j+pipei_width,i:i+pipei_height,r); end endend3GUI界面设计: 本程序采用交互式来演示图像匹配过程,GUI采用MATLAB 7.1

18、自带的GUI界面编辑器。主要涉及图像显示,各个功能按钮对显示的图像所进行的操作(如:放大,缩小,旋转和图像匹配),文件对话框(用来读取和保存图像)。1 uigetfile函数功能:打开磁盘内的文件格式:pname,adrname=uigetfile(格式,名称)说明:pname为选择的文件名,adrname为路径;uigetfile通常和if exist(文件名)连用,如果存在文件的话,则把相应的值传给pname和adrname.举例:pname,adrname=uigetfile(*.jpg,*.bmp)运行结果:2 uiputfile功能:保存文件格式:temp_pname,temp_ad

19、rname=uiputfile(strcat(adrname,pname),保存图象);3 axes函数:功能:固定地点,此程序用此函数在固定区域内显示图像举例:axes(handles.axes1);% handles.axes1为界面上加载的一个插件,用来显示图片。界面样式:四数据测试读取了一幅118104的JPG图片显示在显示区域内,如下图所示,模板图像显示的是从显示区域内剪切一块区域(按下剪切按钮可进行剪切)。按下匹配算法1,或匹配算法2后,系统就会自动将模板图像在显示图像中进行匹配,如果找到了匹配地点就会用红色矩形将匹配区域给圈定下来,例如下图就是在显示图像中找到的匹配区域。根据测试结果得:匹配算法1(基于灰度的模板匹配算法)的匹配时间约为26秒左右。匹配算法2(基于灰度的快速匹配算法)的匹配时间约为16秒左右。结论:匹配算法1和匹配算法2的共同缺点是都绝对的依赖坐标系统,费时间较多。在抗噪音能力上,匹配算法1没有抗噪音的能力,匹配算法2在理论上有一定的抗噪音的能力,可是在此程序中没做出来。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2