danyanger
2009-06-09, 13:32
I = uint8(rand(5) * 255); %模拟一幅图像
Ift = fftshift(fft2(I));
l1 = abs(Ift); %获取幅值
r1 = angle(Ift); %获取相位值
l1(1, 1) = l1(2, 3); %对幅值进行修改
l1(3, 4) = l1(1, 4); %对幅值进行修改
l2 = l1 .* cos(r1); %重构幅值
r2 = l1 .* sin(r1); %重构相位值
I2ft = complex(l2, r2);
I2 = ifft2(ifftshift(I2ft))
上面是本人的一段测试代码,想测试对fft的幅值进行修改后进行ifft所得的结果,我希望I2也应该是一幅图像,但发现I2是复数,不知是我的方法有错误,还是原本就是这样的结果,请各位不吝赐教。
Ift = fftshift(fft2(I));
l1 = abs(Ift); %获取幅值
r1 = angle(Ift); %获取相位值
l1(1, 1) = l1(2, 3); %对幅值进行修改
l1(3, 4) = l1(1, 4); %对幅值进行修改
l2 = l1 .* cos(r1); %重构幅值
r2 = l1 .* sin(r1); %重构相位值
I2ft = complex(l2, r2);
I2 = ifft2(ifftshift(I2ft))
上面是本人的一段测试代码,想测试对fft的幅值进行修改后进行ifft所得的结果,我希望I2也应该是一幅图像,但发现I2是复数,不知是我的方法有错误,还是原本就是这样的结果,请各位不吝赐教。