Hybrid_Image实验代码以及数据集


包含了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  HIAlign_Images.m
     目录           0  2019-10-22 17:10  HIdata
     文件       12574  2019-10-21 18:40  HIdata1.jpg
     文件       17858  2019-10-21 18:40  HIdata2.jpg
     文件      408056  2013-08-31 08:37  HIdataicycle.bmp
     文件      373424  2013-08-31 09:07  HIdataird.bmp
     文件      444808  2011-09-06 04:07  HIdatacat.bmp
     文件      444808  2011-09-06 04:08  HIdatadog.bmp
     文件      179196  2013-08-31 07:52  HIdataeinstein.bmp
     文件      346352  2013-09-01 08:15  HIdatafish.bmp
     文件      179196  2013-08-31 07:53  HIdatamarilyn.bmp
     文件      408056  2013-08-31 08:38  HIdatamotorcycle.bmp
     文件      373424  2013-08-31 09:07  HIdataplane.bmp
     文件      346352  2013-09-01 08:15  HIdatasubmarine.bmp
     文件         731  2019-10-22 19:10  HIImagePyramid.m
     文件         689  2019-10-22 17:06  HIMyImfilter.m
     文件        1988  2019-10-22 19:11  HIStart.m
     文件         837  2019-10-22 17:07  HISysImfilter.m
     文件        1351  2019-10-22 10:07  HI est.m
     文件         326  2019-10-26 21:13  readme.txt

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)