资源简介

包含了Hybrid Image代码以及数据集,通过自带的滤波以及自己实现的滤波函数得到图像高频,低频信息,接着进行图像融合。而且使用了对象对齐操作,使得不同尺寸的图像,图像中的不同大小的目标的融合成为了可能。

资源截图

代码片段和文件信息

function [im1 im2] = Align_Images(im1 im2)
%根据用户对图像选取的关键点,进行居中、缩放、旋转
%以保证关键点对齐

% 获得输入图像的高、宽
[h1 w1 b1] = size(im1);
[h2 w2 b2] = size(im2);


%调用ginput()让用户选择im1需要对齐的关键点
figure(‘Name‘‘Image 1‘) hold off imagesc(im1) axis image colormap gray
[x1 y1] = ginput(2);
cx1 = mean(x1); cy1 = mean(y1);

%调用ginput()让用户选择im2需要对齐的关键点
figure(‘Name‘‘Image 2‘) hold off imagesc(im2) axis image colormap gray
[x2 y2] = ginput(2);
cx2 = mean(x2); cy2 = mean(y2);


%以填充图像的方式,让im1的关键点居中
tx = round((w1/2-cx1)*2);
if tx > 0
    im1 = padarray(im1 [0 tx] ‘pre‘);
else
    im1 = padarray(im1 [0 -tx] ‘post‘);
end

ty = round((h1/2-cy1)*2);
if ty > 0
    im1 = padarray(im1 [ty 0] ‘pre‘);
else
    im1 = padarray(im1 [-ty 0] ‘post‘);
end  

%以填充图像的方式,让im2的关键点居中
tx = round((w2/2-cx2)*2) ;
if tx > 0
    im2 = padarray(im2 [0 tx] ‘pre‘);
else
    im2 = padarray(im2 [0 -tx] ‘post‘);
end
ty = round((h2/2-cy2)*2);
if ty > 0
    im2 = padarray(im2 [ty 0] ‘pre‘);
else
    im2 = padarray(im2 [-ty 0] ‘post‘);
end


%分别计算图像关键点的欧式距离,并以此距离比例进行图像的缩放
len1 = sqrt((y1(2)-y1(1)).^2+(x1(2)-x1(1)).^2);
len2 = sqrt((y2(2)-y2(1)).^2+(x2(2)-x2(1)).^2);
dscale = len2 ./ len1;
if dscale < 1
    im1 = imresize(im1 dscale ‘bilinear‘); 
else
    im2 = imresize(im2 1./dscale ‘bilinear‘);
end

%计算出图像关键点的弧度差值,并以此进行旋转
theta1 = atan2(-(y1(2)-y1(1)) x1(2)-x1(1)); 
theta2 = atan2(-(y2(2)-y2(1)) x2(2)-x2(1));
dtheta = theta2-theta1;
im1 = imrotate(im1 dtheta*180/pi ‘bilinear‘); 

%获得经过上述操作后,图像的高、宽
[h1 w1 b1] = size(im1);
[h2 w2 b2] = size(im2);

%裁剪两图像中宽度较大的图像并保持关键点居中(左右两边同时裁剪)
minw = min(w1 w2);
brd = (max(w1 w2)-minw)/2;
if minw == w1 
    im2 = im2(: (ceil(brd)+1):end-floor(brd) :);
else
    im1 = im1(: (ceil(brd)+1):end-floor(brd) :);  
end

%裁剪两图像中高度较大的图像并保持关键点居中(上下两边同时裁剪)
minh = min(h1 h2);
brd = (max(h1 h2)-minh)/2;
if minh == h1  
    im2 = im2((ceil(brd)+1):end-floor(brd) : :);
    ty = ty-ceil(brd);
else
    im1 = im1((ceil(brd)+1):end-floor(brd) : :);
    ty = ty+ceil(brd);    
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2341  2019-10-22 18:03  HI\Align_Images.m
     目录           0  2019-10-22 17:10  HI\data\
     文件       12574  2019-10-21 18:40  HI\data\1.jpg
     文件       17858  2019-10-21 18:40  HI\data\2.jpg
     文件      408056  2013-08-31 08:37  HI\data\bicycle.bmp
     文件      373424  2013-08-31 09:07  HI\data\bird.bmp
     文件      444808  2011-09-06 04:07  HI\data\cat.bmp
     文件      444808  2011-09-06 04:08  HI\data\dog.bmp
     文件      179196  2013-08-31 07:52  HI\data\einstein.bmp
     文件      346352  2013-09-01 08:15  HI\data\fish.bmp
     文件      179196  2013-08-31 07:53  HI\data\marilyn.bmp
     文件      408056  2013-08-31 08:38  HI\data\motorcycle.bmp
     文件      373424  2013-08-31 09:07  HI\data\plane.bmp
     文件      346352  2013-09-01 08:15  HI\data\submarine.bmp
     文件         731  2019-10-22 19:10  HI\ImagePyramid.m
     文件         689  2019-10-22 17:06  HI\MyImfilter.m
     文件        1988  2019-10-22 19:11  HI\Start.m
     文件         837  2019-10-22 17:07  HI\SysImfilter.m
     文件        1351  2019-10-22 10:07  HI\test.m
     文件         326  2019-10-26 21:13  readme.txt

评论

共有 条评论