第一范文网 - 专业文章范例文档资料分享平台

图像拼接中的匹配策略研究

来源:用户分享 时间:2025/11/14 6:58:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

对数极坐标变换的关键点就是将存在旋转和尺度关系的图像通过对数极坐标变换变为该坐标系下的平移关系。其中极坐标用来解决旋转问题,对数变换用来解决尺度关系问题。

设I1(x,y)和I2(x,y)为具有平移、旋转和尺度关系的两幅图像。

I1(x,y)?I2[s(xcos?0?ycos?0)??x,s(?sin?0?ycos?0)??y]

其中:s 为尺度因子;?0 为旋转角;?x,?y为平移量。

?(u,v)和I?(u,v)满足 其傅里叶变换I12?(u,v)?e?j2?(u?x?v?y)s?2{I?[s?1(ucos??vsin?),s?1(?usin??vcos?)]} I120000对上式两边取模得

?(u,v)|?s?2|I?[s?1(?ucos??vsin?),s?1(?usin??vcos?)]| |I120000?(u,v)|和|I?(u,v)|仅存在旋转角其中:s?2是一个比例因子,忽略它的影响;|I12?(u,v)|和|I?(u,v)|分别?0和尺度关系s?1的差别。为了进一步分离变量?0和s对|I12作极坐标变换(u,v)?(r,?)可得

M1(r,?)?s?2M2(r/s,???0)

令??logr,??logs,则有 M1(?,?)?s?2M2(???,???0)

利用相位相关法可以检测出图像的旋转和尺度关系。以I1(x,y)为参考,将

I2(x,y)根据检测出的旋转和尺度关系进行逆变换后得到I2(x,y)。I2(x,y)与I1(x,y)利用相位相关法检测出图像的平移关系。根据得到的平移、旋转和尺度关

系,建立两幅待拼接图像之间的变换模型,进而可以完成图像的拼接。

借助对数极坐标变换和相位相关法能有效解决平移、旋转和尺度缩放问题,但是要求待配准的图像间有较高的重合度。

11

第四章 对数极坐标变换图像配准旋转实例研究

4.1 实例设计[7]

在MATLAB7.0环境下,读入原图I1和待配准图像I2,其中图像均为灰度图像,I2是I1的一部分,因此I1与I2间有较高的重合度。取I1和I2的傅里叶变换矩阵,为了使得出的数据与频率对应,所以分别用ffshift转换。根据对数极坐标下的旋转不变性,再对上述结果变换到对数极坐标F1和F2;然后找到相关相位及其峰值,根据峰值相位,计算出旋转角度,旋转后的图像为R1和R2;接着根据R1_F2 和 F1 的相关相位和R2_F2 和 F1 的相关相位哪一个更接近原图像来决定用 +180 还是 -180 来翻转待配准图像。

在此过程中,函数:

function H = hipass_filter(ht,wd) 用来实现高通滤波器对频域信号做过滤;

function [r,g,b] = transformImage(A, Ar, Ac, Nrho, Ntheta, Method, Center, Shape)

用来实现对数极坐标变换。

以上是具体实现设想,程序实现如下:、

function RegnisterFourierMellin()

% 读入图像

I1 = imread('src.bmp');

I2 = imread('register.bmp');

% 取图像的傅里叶变换矩阵,并使所得数据与频率相对应 SizeX = size(I1, 1); SizeY = size(I1, 2);

FA = fftshift(fft2(I1));

FB = fftshift(fft2(I2));

12

% 用高通滤波器对频域信号做处理

IA = hipass_filter(size(I1, 1),size(I1,2)).*abs(FA); IB = hipass_filter(size(I2, 1),size(I2,2)).*abs(FB);

% 高通滤波器处理过的信号变换到对数极坐标

L1 = transformImage(IA, SizeX, SizeY, SizeX, SizeY, 'nearest', size(IA) / 2, 'valid');

L2 = transformImage(IB, SizeX, SizeY, SizeX, SizeY, 'nearest', size(IB) / 2, 'valid');

% 对对数极坐标进行fft THETA_F1 = fft2(L1); THETA_F2 = fft2(L2);

% 计算相关相位

a1 = angle(THETA_F1); a2 = angle(THETA_F2);

THETA_CROSS = exp(i * (a1 - a2));

THETA_PHASE = real(ifft2(THETA_CROSS));

% 找到相关相位的峰值

THETA_SORTED = sort(THETA_PHASE(:));

SI = length(THETA_SORTED):-1:(length(THETA_SORTED)); [THETA_X, THETA_Y] = find(THETA_PHASE == THETA_SORTED(SI));

% 计算旋转角度

DPP = 360 / size(THETA_PHASE, 2); Theta = DPP * (THETA_Y - 1);

13

disp(Theta);

% 用theta 和 theta + 180旋转图像I2

R1 = imrotate(I2, -Theta, 'nearest', 'crop'); R2 = imrotate(I2,-(Theta + 180), 'nearest', 'crop');

imwrite(R1,'rotated_1.bmp');

imwrite(R2,'rotated_2.bmp');

% 取 R1 的 fft

R1_F2 = fftshift(fft2(R1));

% 计算 R1_F2 和 F1的相关相位 a1 = angle(FA); a2 = angle(R1_F2);

R1_F2_CROSS = exp(i * (a1 - a2));

R1_F2_PHASE = real(ifft2(R1_F2_CROSS));

% 取 R2 的 fft

R2_F2 = fftshift(fft2(R2));

% 计算 R2_F2 和 F1 的相关相位 a1 = angle(FA); a2 = angle(R2_F2);

R2_F2_CROSS = exp(i * (a1 - a2)); R2_F2_PHASE = real(ifft2(R2_F2_CROSS));

% 根据R1_F2 和 F1 的相关相位和R2_F2 和 F1 的相关相位哪一个更接近原图像来决定用 +180 还是 -180 来翻转待配准图像

14

搜索更多关于: 图像拼接中的匹配策略研究 的文档
图像拼接中的匹配策略研究.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c66rv11foha8mpoj7oh29_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top