计算复数的相位

问题描述:

我有一个图像表示为复数矩阵,矩阵的大小为m×m计算复数的相位

哪一个是计算图像相位的正确方法?

  1. angle/atan2

    Img_phase = angle(img); 
    

    Img_phase = atan2 (imag(img),real(img)); 
    

    或两者都是正确的吗?

  2. 在计算相位之前是否需要执行傅里叶变换?

    img_fft = fftshift (fft2 (img)); 
    

    然后

    Img_phase = angle(img_fft); 
    

    Img_phase = atan2 (imag(img_fft),real(img_fft)); 
    
  3. 如果我有一个以上的图像,还需要计算相位之前以归一化图像(由一个最大值除以) ?

For example these images which represent the outputs of a simulation。更多的信息可以在this link

我已经输出到matlab(作为复数矩阵)进行更多的处理。首先我要计算我之前提到的阶段。

+0

可能出现[图像的阶段意味着什么?]的重复(https://stackoverflow.com/questions/9644708/what-does-phase图像手段) – Wolfie

+0

图像的相位*没有意义。 –

+0

@Wolfie提供的链接不回答我的问题。 – Shdotcom

angle VS atan2

atan2(imag(img),real(img))angle(img)之间的区别是很清楚的:是没有的。检查的angle源代码:

function p = angle(h) 

p = atan2(imag(h), real(h)); 

所以,你做任何你想要的,但angle可能比较容易理解。

我必须采取傅里叶变换吗?

这取决于图像的含义和你想要的。

我应该规范化图像吗?

没关系。该角度不取决于实际比例因子,即:

angle(1+3i) == angle(5*(1+3i)) 
+0

谢谢你的回答,你是什么意思**“取决于图像的含义”?**你能举个例子吗? – Shdotcom

+1

@Shdotcom提供示例的责任在你肩上,你对此有何应用? – Wolfie

+0

@Shdotcom我不知道你的应用程序,通常我不会使用想像的图像。也许虚构的图像已经是另一个真实图像的傅里叶变换?所以,这意味着,我不知道,没有更多的信息,可能没有人知道它。 – m7913d