包含了Hybrid Image代码以及数据集,通过自带的滤波以及自己实现的滤波函数得到图像高频,低频信息,接着进行图像融合。而且使用了对象对齐操作,使得不同尺寸的图像,图像中的不同大小的目标的融合成为了可能。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)