红外与可见光图像配准算法(MATLAB版代码).zip

  • dianer
    了解作者
  • matlab
    开发工具
  • 390KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 123
    下载次数
  • 2018-11-12 12:42
    上传日期
红外和可见光图像配准和融合算法,采用仿射变换
红外与可见光图像配准算法(MATLAB版代码).zip
  • 红外与可见光图像配准算法(MATLAB版代码)
  • image
  • 3.png
    34.5KB
  • qa2.bmp
    121.1KB
  • 4.png
    55.5KB
  • qa1.bmp
    160.9KB
  • 1.png
    48.9KB
  • 2.png
    62.4KB
  • PaintSURF.m
    1.1KB
  • IntegralImage_BoxIntegral.m
    791B
  • FastHessian_getLaplacian.m
    455B
  • FastHessian_getIpoints.m
    2.3KB
  • affine_warp.m
    9.5KB
  • IntegralImage_HaarY.m
    556B
  • OpenSurf.m
    3.7KB
  • FastHessian_isExtremum.m
    1.6KB
  • FastHessian_ResponseLayer.m
    738B
  • SurfDescriptor_GetOrientation.m
    2.9KB
  • FastHessian_interpolateExtremum.m
    2.4KB
  • SurfDescriptor_DecribeInterestPoints.m
    1.5KB
  • FastHessian_getResponse.m
    450B
  • IntegralImage_HaarX.m
    494B
  • FastHessian_buildResponseMap.m
    1.8KB
  • IntegralImage_IntegralImage.m
    796B
  • main.m
    7.4KB
  • FastHessian_BuildDerivative.m
    603B
  • FastHessian_buildResponseLayer.m
    1.7KB
  • SurfDescriptor_GetDescriptor.m
    3.6KB
内容介绍
function Iout=affine_warp(Iin,M,mode) % Affine transformation function (Rotation, Translation, Resize) % This function transforms a volume with a 3x3 transformation matrix % % Iout=affine_warp(Iin,Minv,mode) % % inputs, % Iin: The input image % Minv: The (inverse) 3x3 transformation matrix % mode: If 0: linear interpolation and outside pixels set to nearest pixel % 1: linear interpolation and outside pixels set to zero % (cubic interpolation only support by compiled mex file) % 2: cubic interpolation and outsite pixels set to nearest pixel % 3: cubic interpolation and outside pixels set to zero % % output, % Iout: The transformed image % % example, % % Read image % I=im2double(imread('lenag2.png')) % % Make a transformation matrix % M=make_transformation_matrix([2 3],2,[1.0 1.1]); % % Transform the image % Iout=affine_warp(I,M,0) % % Show the image % figure, imshow(Iout); % % Function is written by D.Kroon University of Twente (February 2009) % Make all x,y indices [x,y]=ndgrid(0:size(Iin,1)-1,0:size(Iin,2)-1); % Calculate center of the image % mean= size(Iin)/2; % Make center of the image coordinates 0,0 %xd=x-mean(1); %yd=y-mean(2); xd=x; yd=y; % Calculate the Transformed coordinates Tlocalx = mean(1) + M(1,1) * xd + M(1,2) *yd + M(1,3) * 1; Tlocaly = mean(2) + M(2,1) * xd + M(2,2) *yd + M(2,3) * 1; switch(mode) case 0 Interpolation='bilinear'; Boundary='replicate'; case 1 Interpolation='bilinear'; Boundary='zero'; case 2 Interpolation='bicubic'; Boundary='replicate'; otherwise Interpolation='bicubic'; Boundary='zero'; end Iout=image_interpolation(Iin,Tlocalx,Tlocaly,Interpolation,Boundary); function Iout = image_interpolation(Iin,Tlocalx,Tlocaly,Interpolation,Boundary,ImageSize) % This function is used to transform an 2D image, in a backwards way with an % transformation image. % % Iout = image_interpolation(Iin,Tlocalx,Tlocaly,Interpolation,Boundary,ImageSize) % % inputs, % Iin : 2D greyscale or color input image % Tlocalx,Tlocaly : (Backwards) Transformation images for all image pixels % Interpolation: % 'nearest' - nearest-neighbor interpolation % 'bilinear' - bilinear interpolation % 'bicubic' - cubic interpolation; the default method % Boundary: % 'zero' - outside input image are implicilty assumed to be zero % 'replicate' - Input array values outside the bounds of the array % are assumed to equal the nearest array border value % (optional) % ImageSize: - Size of output image % outputs, % Iout : The transformed image % % Function is written by D.Kroon University of Twente (September 2010) if(~isa(Iin,'double')), Iin=double(Iin); end if(nargin<6), ImageSize=[size(Iin,1) size(Iin,2)]; end if(ndims(Iin)==2), lo=1; else lo=3; end switch(lower(Interpolation)) case 'nearest' xBas0=round(Tlocalx); yBas0=round(Tlocaly); case 'bilinear' xBas0=floor(Tlocalx); yBas0=floor(Tlocaly); xBas1=xBas0+1; yBas1=yBas0+1; % Linear interpolation constants (percentages) tx=Tlocalx-xBas0; ty=Tlocaly-yBas0; perc0=(1-tx).*(1-ty); perc1=(1-tx).*ty; perc2=tx.*(1-ty); perc3=tx.*ty; case 'bicubic' xBas0=floor(Tlocalx); yBas0=floor(Tlocaly); tx=Tlocalx-xBas0; ty=Tlocaly-yBas0; % Determine the t vectors vec_tx0= 0.5; vec_tx1= 0.5*tx; vec_tx2= 0.5*tx.^2; vec_tx3= 0.5*tx.^3; vec_ty0= 0.5; vec_ty1= 0.5*ty; vec_ty2= 0.5*ty.^2;vec_ty3= 0.5*ty.^3; % t vector multiplied with 4x4 bicubic kernel gives the to q vectors vec_qx0= -1.0*vec_tx1 + 2.0*vec_tx2 - 1.0*vec_tx3; vec_qx1= 2.0*vec_tx0 - 5.0*vec_tx2 + 3.0*vec_tx3; vec_qx2= 1.0*vec_tx1 + 4.0*vec_tx2 - 3.0*vec_tx3; vec_qx3= -1.0*vec_tx2 + 1.0*vec_tx3; vec_qy0= -1.0*vec_ty1 + 2.0*vec_ty2 - 1.0*vec_ty3; vec_qy1= 2.0*vec_ty0 - 5.0*vec_ty2 + 3.0*vec_ty3; vec_qy2= 1.0*vec_ty1 + 4.0*vec_ty2 - 3.0*vec_ty3; vec_qy3= -1.0*vec_ty2 + 1.0*vec_ty3; % Determine 1D neighbour coordinates xn0=xBas0-1; xn1=xBas0; xn2=xBas0+1; xn3=xBas0+2; yn0=yBas0-1; yn1=yBas0; yn2=yBas0+1; yn3=yBas0+2; otherwise error('image_interpolation:inputs','unknown interpolation method'); end % limit indexes to boundaries switch(lower(Interpolation)) case 'nearest' check_xBas0=(xBas0<0)|(xBas0>(size(Iin,1)-1)); check_yBas0=(yBas0<0)|(yBas0>(size(Iin,2)-1)); xBas0=min(max(xBas0,0),size(Iin,1)-1); yBas0=min(max(yBas0,0),size(Iin,2)-1); case 'bilinear' check_xBas0=(xBas0<0)|(xBas0>(size(Iin,1)-1)); check_yBas0=(yBas0<0)|(yBas0>(size(Iin,2)-1)); check_xBas1=(xBas1<0)|(xBas1>(size(Iin,1)-1)); check_yBas1=(yBas1<0)|(yBas1>(size(Iin,2)-1)); xBas0=min(max(xBas0,0),size(Iin,1)-1); yBas0=min(max(yBas0,0),size(Iin,2)-1); xBas1=min(max(xBas1,0),size(Iin,1)-1); yBas1=min(max(yBas1,0),size(Iin,2)-1); case 'bicubic' check_xn0=(xn0<0)|(xn0>(size(Iin,1)-1)); check_xn1=(xn1<0)|(xn1>(size(Iin,1)-1)); check_xn2=(xn2<0)|(xn2>(size(Iin,1)-1)); check_xn3=(xn3<0)|(xn3>(size(Iin,1)-1)); check_yn0=(yn0<0)|(yn0>(size(Iin,2)-1)); check_yn1=(yn1<0)|(yn1>(size(Iin,2)-1)); check_yn2=(yn2<0)|(yn2>(size(Iin,2)-1)); check_yn3=(yn3<0)|(yn3>(size(Iin,2)-1)); xn0=min(max(xn0,0),size(Iin,1)-1); xn1=min(max(xn1,0),size(Iin,1)-1); xn2=min(max(xn2,0),size(Iin,1)-1); xn3=min(max(xn3,0),size(Iin,1)-1); yn0=min(max(yn0,0),size(Iin,2)-1); yn1=min(max(yn1,0),size(Iin,2)-1); yn2=min(max(yn2,0),size(Iin,2)-1); yn3=min(max(yn3,0),size(Iin,2)-1); end Iout=zeros([ImageSize(1:2) lo]); for i=1:lo; % Loop incase of RGB Iin_one=Iin(:,:,i); switch(lower(Interpolation)) case 'nearest' % Get the intensities intensity_xyz0=Iin_one(1+xBas0+yBas0*size(Iin,1)); % Set pixels outside the image switch(lower(Boundary)) case 'zero' intensity_xyz0(check_xBas0|check_yBas0)=0; otherwise end % Combine the weighted neighbour pixel intensities Iout_one=intensity_xyz0; case 'bilinear' % Get the intensities intensity_xyz0=Iin_one(1+xBas0+yBas0*size(Iin,1)); intensity_xyz1=Iin_one(1+xBas0+yBas1*size(Iin,1)); intensity_xyz2=Iin_one(1+xBas1+yBas0*size(Iin,1)); intensity_xyz3=Iin_one(1+xBas1+yBas1*size(Iin,1)); % Set pixels outside the image switch(lower(Boundary)) case 'zero' intensity_xyz0(check_xBas0|check_yBas0)=0; intensity_xyz1(check_xBas0|check_yBas1)=0; intensity_xyz2(check_xBas1|check_yBas0)=0; intensity_xyz3(check_xBas1|check_yBas1)=0; otherwise end % Combine the weighted neighbour pixel intensities Iout_one=intensity_xyz0.*perc0+intensity_xyz1.*perc1+intensity_xyz2.*perc2+intensity_xyz3.*perc3; case 'bicubic' % Get the intensities Iy0x0=Iin_one(1+xn0+yn0*size(Iin,1));Iy0x1=Iin_one(1+xn1+yn0*size(Iin,1)); Iy0x2=Iin_one(1+xn2+yn0*size(Iin,1));Iy0x3=Iin_one(1+xn3+yn0*size(Iin,1)); Iy1x0=Iin_one(1+xn0+yn1*size(Iin,1));Iy1x1=Iin_one(1+xn1+yn1*size(Iin,1)); Iy1x2=Iin_one(1+xn2+yn1*size(Iin,1));
评论
    相关推荐
    • VIFB:可见光红外图像融合基准
      VIFB:可见红外图像融合基准 这是VIFB的官方网页。 VIFB是可见红外图像融合(VIF)领域中的第一个(也是迄今为止唯一的)基准测试,旨在为执行VIF算法的公平,全面的性能比较提供一个平台。 目前,在VIFB中集成了...
    • MATLAB版代码)红外与可见光图像配准算法
      MATLAB版代码)红外与可见光图像配准算法 针对电气设备同一场景的红外与可见光图像间一致特征难以提取和匹配的问题,提出了一种基于斜率一致性的配准方法。...红外 可见光 图像配准 图像融合 MATLAB
    • 红外与可见光图像自适应融合源代码
      针对低可见光图像红外图像的特点,提出一种基于 DT-CWT的自适应图像融合算法.该算法具有好的平移不变性和方向选择性,更适合于人类视觉.先对源图像作双树复小波变换,充分考虑各尺度分解层的系数 特征,对低通子带引入...
    • 基于显着性检测的可见光红外图像两尺度图像融合:一种基于显着性检测和两尺度图像分解的图像融合新方法。...
      手稿下载链接: ... “使用显着性检测的可见光红外图像的双尺度图像融合。” 红外物理技术 76 (2016): 52-64。 从以下位置下载数据集: https : //sites.google.com/view/durgaprasadbavirisetti/home
    • 红外与可见光图像配准算法(MATLAB版代码)
      程序是完全可以运行的,只需运行main.m文件即可,程序不光包括配准还有融合的代码,效果中规中矩,可以用来做对比实验,如果需要融合其他的图像,只需将找到的源图像粘贴到Image文件夹中(注意图像的分辨率应接近...
    • matlab小波变换图像融合程序
      应用小波变换的算法,实现红外图像可见光图像融合
    • 红外可见图像自适应梯度融合matlab代码
      是一段红外可见光的梯度域的图像融合,代码能够将梯度融合不再是简单的梯度,而是自动的根据图像的权重来进行融合
    • 红外与可见光图像自适应融合源代码
      针对低可见光图像红外图像的特点,提出一种基于 DT-CWT的自适应图像融合算法.该算法具有好的平移不变性和方向选择性,更适合于人类视觉.先对源图像作双树复小波变换,充分考虑各尺度分解层的系数 特征,对低通子带引入...
    • codesforimageprocessing.rar
      实现简单图像处理,包括256色转灰度图、Hough变换、Walsh变换、中值滤波、二值化变换、亮度增减、傅立叶变换、反色、取对数、取指数、图像平移、图像旋转、图像细化、图像缩放、图像镜像、均值滤波、对比度拉伸、拉普拉斯锐化(边缘检测)、方块编码、梯度锐化、灰度均衡、直方图均衡、离散余弦变换、维纳滤波处理、逆滤波处理、阈值变换、高斯平滑。