相位相关Phase Correlation

Phase Correlation(相位相关) 是一种利用 傅里叶变换相位信息 来计算 两幅图像平移位移 的方法。

它在很多领域非常重要:

  • 图像配准

  • 运动估计

  • 晶圆 Overlay 检测

  • 视频稳定

  • 工业视觉定位

它的一个很强的特点是:

对光照变化不敏感

可以做到 亚像素精度

计算速度快(FFT)

一、Phase Correlation 解决什么问题

假设两幅图像:f(x,y) 和 g(x,y)

其中第二张是第一张的平移:

目标是求:

也就是图像移动了多少像素

二、核心思想

关键理论来自 傅里叶平移定理(Fourier Shift Theorem)

如果

则其傅里叶变换满足:

可以看到:

  • 幅度不变

  • 相位变化

所以:

图像平移只影响 相位

这就是 Phase Correlation 的核心思想

三、数学推导

1 两幅图像傅里叶变换

由于平移关系:

2 计算互功率谱

定义:

其中:

是复共轭。

3 代入公式

4 归一化

傅里叶相位 是啥,如何位移

https://blog.csdn.net/weixin_39354845/article/details/159078714?sharetype=blogdetail&sharerId=159078714&sharerefer=PC&sharesource=weixin_39354845&spm=1011.2480.3001.8118

四、反傅里叶变换

对 R(u,v)、做反傅里叶变换:

五、直观理解

Phase Correlation 的流程:

cpp 复制代码
图像1
   ↓ FFT
F(u,v)

图像2
   ↓ FFT
G(u,v)

F × G*
   ↓
互功率谱

归一化
   ↓
只剩相位

IFFT
   ↓
一个峰值

峰值位置 = 位移
cpp 复制代码
clc
clear

% 读取图像
img = im2double(imread('cameraman.tif'));

% 平移图像
dx = 20;
dy = 15;

img2 = circshift(img,[dy dx]);

% FFT
F = fft2(img);
G = fft2(img2);

% 互功率谱
R = F .* conj(G);
R = R ./ abs(R);

% 反傅里叶
r = ifft2(R);

% 找峰值
[maxv,idx] = max(r(:));
[peakY,peakX] = ind2sub(size(r),idx);

% 位移
shiftX = peakX - size(img,2);
shiftY = peakY - size(img,1);

disp([shiftX shiftY])

六、OpenCV 和Halcon 实现

OpenCV

cpp 复制代码
cv::phaseCorrelate(img1,img2);

Point2d(dx,dy)已经是 亚像素精度



#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat img1 = imread("image1.png", IMREAD_GRAYSCALE);
    Mat img2 = imread("image2.png", IMREAD_GRAYSCALE);

    img1.convertTo(img1, CV_32F);
    img2.convertTo(img2, CV_32F);

    // Hanning window
    Mat hann;
    createHanningWindow(hann, img1.size(), CV_32F);

    Point2d shift = phaseCorrelate(img1, img2, hann);

    std::cout << "dx = " << shift.x << std::endl;
    std::cout << "dy = " << shift.y << std::endl;
}

内部算法实现

cpp 复制代码
1 FFT
2 互功率谱
3 相位归一化
4 IFFT
5 峰值搜索
6 二次曲线拟合

OpenCV工业优化

工业项目通常加几个步骤:

1 ROI匹配

减少FFT尺寸:

Mat roi1 = img1(Rect(100,100,256,256));

Mat roi2 = img2(Rect(100,100,256,256));


2 高通滤波

去除低频光照影响:

Mat highpass = img - GaussianBlur(img, Size(21,21), 5);


3 金字塔

大位移情况:

pyramid level3

pyramid level2

pyramid level1

逐级计算。

HALCON工业实现

cpp 复制代码
read_image (Image1, 'img1.png')
read_image (Image2, 'img2.png')

phase_correlation_fft (Image1, Image2, RowShift, ColumnShift, Peak)

HALCON内部流程:

cpp 复制代码
FFT(Image1)
FFT(Image2)

↓
共轭乘积

↓
互功率谱

↓
归一化

↓
IFFT

↓
寻找最大峰

↓
亚像素拟合

HALCON优化(工业视觉常用)

1 金字塔匹配

HALCON:

pyramid

先粗匹配:

level3

再精匹配:

level0

2 ROI

工业检测只对 pattern:

reduce_domain

减少计算。


3 亚像素拟合

HALCON默认:

parabolic fitting

或:

gaussian fitting

七、Phase Correlation 优缺点

优点

  • 对光照不敏感

  • 抗噪声

  • FFT速度快

  • 亚像素精度

缺点

  • 只能处理 平移

  • 旋转需要 log-polar 方法

  • 对大遮挡敏感

八、面试常问问题

为什么 Phase Correlation 抗光照变化?

为什么能做到亚像素?

因为:

IFFT峰值是连续函数

可以:

二次曲线拟合

工业视觉里 Phase Correlation 最强的一版

Log-Polar Phase Correlation

它不仅可以求:

平移

还能求:

旋转

缩放

https://blog.csdn.net/weixin_39354845/article/details/159055238?sharetype=blogdetail&sharerId=159055238&sharerefer=PC&sharesource=weixin_39354845&spm=1011.2480.3001.8118

相关推荐
小雨下雨的雨10 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道12 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟12 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love12 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇12 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明12 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc12 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技12 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本12 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent12 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt