You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何计算两张相似图像的x、y轴像素偏移量

Matlab计算两幅图像像素偏移量的方法

针对仅存在平移偏差的相似图像,最常用的方案是基于归一化二维互相关计算偏移,精度高、抗光照干扰能力强,适配你提供的这类图像场景。

操作步骤

  • 第一步:读取并预处理图像
% 读取参考图像和偏移图像
img_ref = imread('1diPk.png'); % 居中的参考图像
img_offset = imread('mFSD3.png'); % 存在偏移的待计算图像
% 彩色图像统一转灰度图再计算,灰度图可跳过该步骤
if size(img_ref,3) == 3
    img_ref_gray = rgb2gray(img_ref);
    img_offset_gray = rgb2gray(img_offset);
end
  • 第二步:计算互相关并推导偏移量
    互相关结果的峰值位置对应两幅图像的最佳匹配位置,直接通过峰值坐标换算即可得到xy方向的偏移值,调用Matlab内置normxcorr2函数即可实现计算:
% 计算归一化二维互相关结果
c = normxcorr2(img_offset_gray, img_ref_gray);
% 定位互相关结果的峰值坐标
[~, imax] = max(abs(c(:)));
[ypeak, xpeak] = ind2sub(size(c), imax(1));
% 换算实际偏移量
offset_y = ypeak - size(img_offset_gray, 1);
offset_x = xpeak - size(img_offset_gray, 2);

输出参数说明:

  • offset_x为x轴方向偏移量,正值代表偏移图像相对参考图像向右偏移,负值代表向左偏移
  • offset_y为y轴方向偏移量,正值代表偏移图像相对参考图像向下偏移,负值代表向上偏移
  • 第三步:结果验证(可选)
    可以用计算得到的偏移量对偏移图像做平移,和参考图像对比验证对齐效果:
% 按计算得到的偏移量平移偏移图像
img_corrected = imtranslate(img_offset, [offset_x, offset_y]);
% 展示对齐前后的对比效果
figure;
subplot(1,3,1); imshow(img_ref); title('参考图像');
subplot(1,3,2); imshow(img_offset); title('原始偏移图像');
subplot(1,3,3); imshow(img_corrected); title('对齐后图像');

注意事项

上述方法仅适用于两幅图像仅存在平移偏差的场景,如果图像同时存在旋转、缩放等其他变换,需要先提取SIFT/ORB等特征点做匹配,再求解单应性矩阵分解得到偏移参数。

参考图像

居中参考图像
偏移待计算图像

内容的提问来源于stack exchange,提问作者Nir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:45:08