精华内容
下载资源
问答
  • MATLAB 灰度匹配算法

    2018-04-09 15:12:56
    MATLAB 灰度匹配算法 MATLAB 灰度匹配 图像处理 机器视觉
  • 用matlab仿真的基于灰度匹配算法的图像拼接,代码简单,适合初学者学习
  • 提高图像灰度匹配算法的匹配性能,分析了常用的图像相似度比较方法,从实际应用出发,提出了 一种简化的归一化积相关度量方法。针对景像匹配末制导,设计了先粗后精的匹配控制策略,实现了归一化积相 关图像匹配算法...
  • 灰度模板匹配算法

    千次阅读 2016-04-13 10:55:49
    基于灰度的图像匹配算法包括:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。 下面介绍其中一种绝对...

    1、介绍

    基于灰度的图像匹配算法包括:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。

    下面介绍其中一种绝对误差和算法(SAD)。

    2、绝对误差和算法

    绝对误差和算法(Sum of Absolute Differences,简称SAD算法)。

    S(x,y)是大小为mxn的搜索图像,T(x,y)MxN的模板图像,分别下图(a)(b)所示,我们的目的是:在(a)中找到与(b)匹配的区域(红框所示)。





    3、算法思路

    在搜索图S中,取以(i,j)为左上角,MxN大小的子图,计算其与模板图相似度;在所有能够取到的子图中,找到与模板图最相似的子图作为最终结果。SAD算法的相似性测度公式如下。显然,绝对差D(i,j)越小,表明越相似,故只需找到最小的D(i,j)即可确定子图位置。


    1<=i<=m-M+1,1<=j<=n-N+1

    4、算法评价

    优点:

    ①思路简单,容易理解(子图与模板图对应位置上,灰度值之差的绝对值总和,实质:是计算的是子图与模板图的L1距离)。

    ②运算过程简单,匹配精度高。

    缺点:

    ①运算量偏大。

    ②对噪声非常敏感。

    5、matlab 代码

    %%
    %绝对误差和算法(SAD)
    clear all;
    close all;
    %%
    src=imread('lena.bmp');
    [a b d]=size(src);
    if d==3
        src=rgb2gray(src);
    end
    mask=imread('lena_mask.png');
    [m n d]=size(mask);
    if d==3
        mask=rgb2gray(mask);
    end
    %%
    N=n;%模板尺寸,默认模板为正方形
    M=a;%待搜索图像尺寸,默认搜索图像为正方形
    %%
    dst=zeros(M-N,M-N);
    for i=1:M-N         %行
        for j=1:M-N
            temp=src(i:i+N-1,j:j+N-1);
            dst(i,j)=dst(i,j)+sum(sum(abs(temp-mask)));
        end
    end
    abs_min=min(min(dst));
    [x,y]=find(dst==abs_min);
    figure;
    imshow(mask);title('模板');
    figure;
    imshow(src);
    hold on;
    rectangle('position',[x,y,N-1,N-1],'edgecolor','r');
    hold off;title('搜索图');



    展开全文
  • 基于灰度的模板匹配算法

    千次阅读 2020-03-16 16:44:58
    基于灰度的图像匹配算法有:平均绝对差算法(MAD)、绝对误差和算法(SAD),误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。其基本思想是将模板在待匹配的...

    一.理论部分

    基于灰度的图像匹配算法有:平均绝对差算法(MAD)、绝对误差和算法(SAD),误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。其基本思想是将模板在待匹配的图中滑动,每滑动一步,使用一个指标衡量相似性,然后选取相似性最大的位置作为最佳匹配。

    1.1 MAD(平均绝对差算法)

    MAD,是Leese在1971年提出的一种匹配算法。该算法具有较高的匹配精度和较少的计算量。将模板在搜索图中滑动,计算每一步的相似性,(计算对应位置像素差值的绝对值平均,L1距离的平均值)。
    相似性度量公式为:
    在这里插入图片描述

    代码实现:

    	Mat templ = imread("pic/gray/Template1.jpg", IMREAD_GRAYSCALE)
    展开全文
  • 基于灰度的图像快速匹配算法 作者 黄旭华
  • 可用于视频图像相邻帧全局运动量的快速检测,此程序只能解决存在平移运动的情况
  • 算法可以通过规定一个一个可控制的直方图,对输入的灰度图像进行直方图匹配
  • 灰度图像匹配的快速算法,图像处理算法研究 学位论文
  • matlab实现灰度相关匹配跟踪算法

    热门讨论 2010-01-28 17:43:28
    跟踪前,对图像进行预处理,对灰度图像灰度进行线性分段拉伸,增强每段的灰度差。跟踪灰度相关匹配算法,进行时实验,可以很好的跟踪目标。
  • 结合无人机图像的特点,开发了一种基于局部灰度匹配的图像拼接算法。根据无人机的飞行数据,对无人机图像进行预处理,缩小了特征点的搜索范围。
  • 但计算量大、时间长等特点,将基于MPI(Message Passing Interface)的集群并行处理引入到图像灰度匹配中,对待匹配图像采用数据分割处理,而将传统的图像灰度匹配算法进行并行化改进,结合并行处理对图像灰度匹配...
  • 一种基于图像灰度的快速匹配算法

    热门讨论 2009-10-13 23:57:58
    摘 要: 在图像模板匹配问题中,基于像素灰度值的相关算法尽管已经十分普遍,并得到广泛的应用,但目前此类算法都还存在有时间复杂度高、对图像亮度与尺寸变化敏感等缺点.为了克服这些缺点,提出一种新的基于图像灰度值的...
  • 本文将介绍一种新的算法,叫做局部灰度值编码算法,它通过对灰度值编码来进行粗匹配,再用相位相关法进行精匹配

    简介:

            在上一篇文章: 基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法中,介绍了几种典型的模板匹配算法,但此类算法都存在时间复杂度高,对图像尺寸敏感等问题,即便是SSDA这样的优化算法复杂度也是很高的。

            本文将介绍一种新的算法,叫做局部灰度值编码算法,它通过对灰度值编码来进行粗匹配,再用相位相关法进行精匹配

    算法介绍

    粗匹配

            与上一篇文章的假设相似,这里搜索图S尺寸为MxM,模板T的尺寸NxN,模板TS上滑动搜索,滑动的上、下步长都为N(一个模板尺寸),也就把S分成了若干个T尺寸的子图。如果M不是N的整数倍,那么也不用管S图中的最底部和最右部剩余的几行几列。下面举一个例子来进行阐述。

            搜索图S是一个512x512lena图像即M=512,模板图T是其中的一个部分,大小为64x64,即N=64。正好将S划分成8x8个相邻且不重合的子图(也称限制块),每个子图(限制块)的尺寸与模板大小一样。接下来我们将要分别对模板和各个限制块进行编码(这就是为什么叫做局部灰度编码),再判断模板与哪个限制块相似度最高,以初步确定模板的位置,这就是粗匹配。

    局部灰度编码

           编码是通过定义KxK大小的R块来进行(这里分块有点多,画画图就一目了然了)。以对模板T编码为例,此处取R块的大小8x8,即K=8。此时就将T划分成了HxHR块,此处H=8,求每个R块内部的像素和。

    说明:R块的尺寸根据情况而定,也可以是....,9x9,10x10...,如果N不是K的整数倍,处理同上。总之分的R块越小对图像的描述就越精确,同样计算量也越大。


    以某个R块为中心及其8-邻域R块,如下图所示。以相邻的2x2R块当做一个D块(如:D1=R1 U R2 U R4 U R5)。

            实际上,只有划斜线的阴影部分才能编码,图像外围一圈的R块都不能。接下来对每个D块进行编码。以D1为例,S(R1)表示R1块内部所有像素之和,对D1块所包含的4R块的S(R)进行排序(升序、降序都行,选定一种)。例如取顺时针方向规定R1-R2-R5-R4的顺序为1-2-3-4。但以S(R)进行排序的话,共有24种排列组合方法(如下图左表),转化成二进制表示(如下图右表)。假如S(R)的排序结果为3-1-4-2,那么这个D块的特征编码就为01101。(左、右表及方向,都可以自己定义


           以此类推,4D块就有45bit二进制编码,将它们做位拼接串起来,形成一个20位的二进制编码,这个20位的编码就当做中心R块R5)的特征编码。【实际上,只有划斜线的阴影部分才能编码,图像外围一圈的R块都不能。】

    特征描述符

            综上所述,一个可以划分成HxHR块的模板,有20bit的二进制描述符,把这个20bit的特征转化成一个十进制数,那么同理就有个十进制数,将其行列排列成一个一维向量,这就是模板图的特征向量了。上述中,模板图就有(8-2)x(8-2)=36维特征向量。

            同理,对每一个子图(限制块)进行同样的编码操作,提取每个子图(限制块)的特征向量,将模板特征与子图特征逐一比较,求相似度最高的子图,这就完成了粗匹配。

    ——————————————————————————————分割线————————————————————————————————

    精匹配

            由于粗匹配的子图选取时按照一定的步长进行的,通过粗匹配找到相似度最高的子图,与模板有重合的部分但并不是完全重叠的,会存在一定的偏差。这就需要进一步确定这个偏差。下面利用相位相关法进行精匹配。

    相位相关法

            根据二维傅里叶变换的性质:空域上的平移等价于频域相位的平移。两幅图的平移矢量可以通过他们的互功率谱的相位直接计算。假设额图像的平移关系为:

    相应的二维傅里叶变换关系应为:


    定义它们的归一化互功率谱为:


    其中:表示的复数共轭。

            对上述归一化互功率谱等式左右两边进行二维傅里叶逆变换,右边逆变换可得到在空间位置(x0,y0)处形成的一个脉冲函数。所以我们只需要左边式子进行逆变换,再寻找脉冲位置(即峰值),峰值的位置(x0,y0)就是偏移矢量。

    精匹配实现

    MATLAB代码

    %//***************************************** 
    %//Copyright (c) 2015 Jingshuang Hu 
     
    %//@filename:demo.cpp 
    %//@datetime:2015.08.20 
    %//@author:HJS 
    %//@e-mail:eleftheria@163.com 
    %//@blog:http://blog.csdn.net/hujingshuang 
    %//*****************************************
    %%
    %//相位相关法
    clear all;
    close all;
    %%
    img=rgb2gray(imread('lena.jpg'));%//载入图像
    dl=64;%//模板大小64x64
    x0=200;y0=200;%//起点
    dx0=20;dy0=30;%//偏移量(不超过模板尺寸)
    f1=img(x0:x0+dl-1,y0:y0+dl-1);%//截取一个图当做模板
    f2=img(x0+dx0:x0+dx0+dl-1,y0+dy0:y0+dy0+dl-1);%//截取一个图当做粗匹配找到的子图
    [m n]=size(f1);%//m行n列
    F1=fft2(f1,m,n);%//傅里叶变换
    F2=fft2(f2,m,n);
    %//FC1=conj(F1);%//共轭
    FC2=conj(F2);%//共轭
    delta=abs(ifft2((F1.*FC2)./abs(F1.*FC2)));
    figure;surf(1:dl,1:dl,delta);shading interp;
    max_delat=max(max(delta));
    [dx dy]=find(delta==max_delat);
    dx=dx-1;dy=dy-1;

    相位相关峰值图


    输出结果:


              可以看到,这跟代码中设定的偏移量是一致的,说明我们得到了正确的计算结果。此时,我们在粗匹配的子图位置基础上平移(dx,dy),再取模板NxN的子图,这个子图就是最终的匹配结果。

              素材及代码下载:http://download.csdn.net/detail/hujingshuang/9029593

    ——————————————————————————————分割线————————————————————————————————

    参考文献:

    1、李强,张钹. 一种基于图像灰度的快速匹配算法[J],软件学报, 2006,17(2), 216-222.

    2、冯宇平,赵文仓. 基于局部灰度值编码的图像匹配[J], 青岛科技大学学报(自然科学版),2011,32(4),435-440.

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------补刀--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

            今天正好是农历七月初七,空间,微信好多人都在秀玫瑰、秀恩爱;别人浪漫相约,我在实验室敲代码;别人花前月下,我在实验室敲代码。所以走远点,不要问我爱你有多深,我要敲代码。【生活照】


    展开全文
  • 针对目前图像匹配算法中存在的匹配精度不高和匹配速度慢的缺点,对基于灰度相关的2类匹配算法——最小误差法和相关系数法进行了改进。最小误差法采用新的ML距离法,提出动态调整阈值的方法,既保证了匹配精度,又...
  • 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。

    简介:

           本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性检测算法(SSDA)、hadamard变换算法(SATD)。下面依次对其进行讲解。

    MAD算法

    介绍

            平均绝对差算法(Mean Absolute Differences,简称MAD算法),它是Leese1971年提出的一种匹配算法。是模式识别中常用方法,该算法的思想简单,具有较高的匹配精度,广泛用于图像匹配。

    S(x,y)是大小为mxn的搜索图像,T(x,y)MxN的模板图像,分别如下图(a)(b)所示,我们的目的是:在(a)中找到与(b)匹配的区域(黄框所示)。

    算法思路

            在搜索图S中,以(i,j)为左上角,取MxN大小的子图,计算其与模板的相似度;遍历整个搜索图,在所有能够取到的子图中,找到与模板图最相似的子图作为最终匹配结果。

            MAD算法的相似性测度公式如下。显然,平均绝对差D(i,j)越小,表明越相似,故只需找到最小的D(i,j)即可确定能匹配的子图位置:


    其中:

    算法评价:

    优点:

    思路简单,容易理解(子图与模板图对应位置上,灰度值之差的绝对值总和,再求平均,实质:是计算的是子图与模板图的L1距离的平均值)。

    运算过程简单,匹配精度高。

    缺点:

    运算量偏大。

    对噪声非常敏感。

    ——————————————————————————————————————————————————————————————————————————————

    SAD算法

    介绍

            绝对误差和算法(Sum of Absolute Differences,简称SAD算法)。实际上,SAD算法与MAD算法思想几乎是完全一致,只是其相似度测量公式有一点改动(计算的是子图与模板图的L1距离),这里不再赘述。


    算法实现

    由于文章所介绍的几个算法非常相似,所以本文仅列出SAD算法的代码,其余算法的实现类似。看别人代码都相对费力,想自己敲也很简单。

    MATLAB代码

    %%
    %绝对误差和算法(SAD)
    clear all;
    close all;
    %%
    src=imread('lena.jpg');
    [a b d]=size(src);
    if d==3
        src=rgb2gray(src);
    end
    mask=imread('lena_mask.jpg');
    [m n d]=size(mask);
    if d==3
        mask=rgb2gray(mask);
    end
    %%
    N=n;%模板尺寸,默认模板为正方形
    M=a;%代搜索图像尺寸,默认搜索图像为正方形
    %%
    dst=zeros(M-N,M-N);
    for i=1:M-N         %子图选取,每次滑动一个像素
        for j=1:M-N
            temp=src(i:i+N-1,j:j+N-1);%当前子图
            dst(i,j)=dst(i,j)+sum(sum(abs(temp-mask)));
        end
    end
    abs_min=min(min(dst));
    [x,y]=find(dst==abs_min);
    figure;
    imshow(mask);title('模板');
    figure;
    imshow(src);
    hold on;
    rectangle('position',[y,x,N-1,N-1],'edgecolor','r');
    hold off;title('搜索图');

    输出结果

    ——————————————————————————————————————————————————————————————————————————————

    SSD算法

            误差平方和算法(Sum of Squared Differences,简称SSD算法),也叫差方和算法。实际上,SSD算法与SAD算法如出一辙,只是其相似度测量公式有一点改动(计算的是子图与模板图的L2距离)。这里不再赘述。


    ——————————————————————————————————————————————————————————————————————————————

    MSD算法

            平均误差平方和算法(Mean Square Differences,简称MSD算法),也称均方差算法。实际上,MSD之余SSD,等同于MAD之余SAD(计算的是子图与模板图的L2距离的平均值),故此处不再赘述。



    ————————————————————————————————————————————————————————————————————————————————

    NCC算法

            归一化积相关算法(Normalized Cross Correlation,简称NCC算法),与上面算法相似,依然是利用子图与模板图的灰度,通过归一化的相关性度量公式来计算二者之间的匹配程度。


    其中,分别表示(i,j)处子图、模板的平均灰度值。

    ————————————————————————————————————————————————————————————————————————

    SSDA算法

            序贯相似性检测算法(Sequential Similiarity Detection Algorithm,简称SSDA算法),它是由BarneaSliverman1972年,在文章《A class of algorithms for fast digital image registration》中提出的一种匹配算法,是对传统模板匹配算法的改进,比MAD算法快几十到几百倍。

    与上述算法假设相同:S(x,y)mxn的搜索图,T(x,y)MxN的模板图,是搜索图中的一个子图(左上角起始位置为(i,j))。

    显然:

    SSDA算法描述如下:

    定义绝对误差:


    其中,带有上划线的分别表示子图、模板的均值:

     


    实际上,绝对误差就是子图与模板图各自去掉其均值后,对应位置之差的绝对值。

    设定阈值Th

    在模板图中随机选取不重复的像素点,计算与当前子图的绝对误差,将误差累加,当误差累加值超过了Th时,记下累加次数H,所有子图的累加次数H用一个表R(i,j)来表示。SSDA检测定义为:


    下图给出了A、B、C三点的误差累计增长曲线,其中A、B两点偏离模板,误差增长得快;C点增长缓慢,说明很可能是匹配点(图中Tk相当于上述的Th,即阈值;I(i,j)相当于上述R(i,j),即累加次数)。


    在计算过程中,随机点的累加误差和超过了阈值(记录累加次数H)后,则放弃当前子图转而对下一个子图进行计算。遍历完所有子图后,选取最大R值所对应的(i,j)子图作为匹配图像【若R存在多个最大值(一般不存在),则取累加误差最小的作为匹配图像】。

            由于随机点累加值超过阈值Th后便结束当前子图的计算,所以不需要计算子图所有像素,大大提高了算法速度;为进一步提高速度,可以先进行粗配准,即:隔行、隔离的选取子图,用上述算法进行粗糙的定位,然后再对定位到的子图,用同样的方法求其8个邻域子图的最大R值作为最终配准图像。这样可以有效的减少子图个数,减少计算量,提高计算速度。

    ——————————————————————————————————————————————————————————————————————

    SATD算法

           hadamard变换算法(Sum of Absolute Transformed Difference,简称SATD算法),它是经hadamard变换再对绝对值求和算法。hadamard变换等价于把原图像Q矩阵左右分别乘以一个hadamard变换矩阵H。其中,hardamard变换矩阵H的元素都是1-1,是一个正交矩阵,可以由MATLAB中的hadamard(n)函数生成,n代表n阶方阵。

          SATD算法就是将模板与子图做差后得到的矩阵Q,再对矩阵Q求其hadamard变换(左右同时乘以H,即HQH),对变换都得矩阵求其元素的绝对值之和即SATD值,作为相似度的判别依据。对所有子图都进行如上的变换后,找到SATD值最小的子图,便是最佳匹配。

    MATLAB实现:

    %//*****************************************   
    %//Copyright (c) 2015 Jingshuang Hu   
       
    %//@filename:demo.m   
    %//@datetime:2015.08.20   
    %//@author:HJS   
    %//@e-mail:eleftheria@163.com   
    %//@blog:http://blog.csdn.net/hujingshuang   
    %//*****************************************  
    %% 
    %//SATD模板匹配算法-哈达姆变换(hadamard)
    clear all;
    close all;
    %%
    src=double(rgb2gray(imread('lena.jpg')));%//长宽相等的
    mask=double(rgb2gray(imread('lena_mask.jpg')));%//长宽相等的
    M=size(src,1);%//搜索图大小
    N=size(mask,1);%//模板大小
    %%
    hdm_matrix=hadamard(N);%//hadamard变换矩阵
    hdm=zeros(M-N,M-N);%//保存SATD值
    for i=1:M-N
        for j=1:M-N
            temp=(src(i:i+N-1,j:j+N-1)-mask)/256;
            sw=(hdm_matrix*temp*hdm_matrix)/256;
            hdm(i,j)=sum(sum(abs(sw)));
        end
    end
    min_hdm=min(min(hdm));
    [x y]=find(hdm==min_hdm);
    figure;imshow(uint8(mask));
    title('模板');
    figure;imshow(uint8(src));hold on;
    rectangle('position',[y,x,N-1,N-1],'edgecolor','r');
    title('搜索结果');hold off;
    %//完

    输出结果:



    —————————————————————————————————————————————————————————————————————

    OK,介绍完毕,以上便是几种常见的基于灰度的模板匹配算法。

    参考文献:

    1、D.I BARNEA, H.F SILVERMAN, A class of algorithms for fast digital image registration[J], IEEE TRANSACTIONS ON COMPUTERS,1972.

    2、赵启, 图像匹配算法研究[D], 2013.

    3、丁慧珍, 抗任意角度旋转灰度匹配方法研究[D], 2006.

    4、陈皓, 马彩文等, 基于灰度统计的快速模板匹配算法[J], 光子学报, 2009.

    5、杨小冈等, 基于相似度比较的图像灰度匹配算法研究[J], 系统工程与电子技术, 2005.

    展开全文
  • 本质上, 基于光度测量学不变性原理的区域匹配算法, 常以邻域窗的灰度为匹配基元, 以相关程度作为判别依据, 可以得到较稠密的视差图.从灰度相关性和非参数变换思想两个方面进行分类. 灰度相关性算法的研究主要.
  • 目录 摘要 . I Abstract . III 插图索引 . V 附表索引 . VII 第 1章绪论 . 1 1.1研究背景和意义 . 1 1.2研究现状 . 2 1.3图像匹配算法的分类 .
  •  本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。下面依次对其...
  • 图像匹配算法

    千次阅读 2018-12-02 14:46:02
    图像匹配算法分为3类:基于灰度匹配算法、基于特征的匹配算法、基于关系的匹配算法 (1)基于灰度的模板匹配算法:模板匹配(Blocking Matching)是根据已知模板图像到另一幅图像中寻找与模板图像相似的子图像。...
  • %********************************************************...%所用图像灰度级均为256 %参考《基于颜色空间和纹理特征的图像检索》 %function : T=Texture(Image) %Image : 输入图像数据 %T : 返回八维纹理特征行向量
  •  本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性检测算法(SSDA)、hadamard...
  • 图像匹配之归一化积相关灰度匹配

    千次阅读 2015-09-11 20:28:36
    图像匹配之最简单的归一化积相关灰度匹配,我的代码
  • 10.MIL中灰度匹配(Pattern)

    千次阅读 2014-03-31 11:57:19
    灰度匹配主要原理是一对一的像素比对,算法实现是计算两个图像的相关,容易理解,实现容易,但是计算量太大且鲁棒性较差。相对于几何匹配,灰度匹配应用的越来越少,但是在一些比较友好的环境中使用灰度匹配也能得到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,493
精华内容 7,797
关键字:

灰度匹配算法