您的位置:首页 > 编程语言 > MATLAB

Riesz变换MATLAB代码

2016-03-04 14:23 441 查看
function [orientation, phase, amplitude] = riesz(image)

[imHeight, imWidth] = size(image);

%approx riesz, from Riesz Pyramids for Fast Phase-Based VideoMagnification

dxkernel = zeros(size(image));
dxkernel(1, 2)=-0.5;
dxkernel(1,imWidth) = 0.5;

dykernel = zeros(size(image));
dykernel(2, 1) = -0.5;
dykernel(imHeight, 1) = 0.5;

R1 = ifft2(fft2(image) .* fft2(dxkernel));
R2 = ifft2(fft2(image) .* fft2(dykernel));

orientation = zeros(imHeight, imWidth);
phase = zeros(imHeight, imWidth);

orientation = (atan2(-R2, R1));

phase = ((unwrap(atan2(sqrt(R1.^2 + R2.^2) , image))));

amplitude = sqrt(image.^2 + R1.^2 + R2.^2);

end   

参考文献
The Riesz transform and simultaneousrepresentations of phase, energy and orientation in spatialvision
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: