我正在尝试使用高斯滤波器对模糊图像进行去模糊,但在MATLAB中使用倒谱分析。到目前为止,我尝试使用“cceps”,但是有一个问题:
Error using -
Matrix dimensions must agree.
Error in cceps>rcunwrap (line 149)
y(:) = y(:)' - pi*nd*(0:(n-1))/nh;
Error in cceps (line 80)
[ah,nd] = rcunwrap(angle(h));
我的图片是512x512双倍。我只在倒谱分析中看到了阵列的用法。我正在尝试“cceps(y)-cceps(h)”(y:模糊图像,h:高斯滤波器)然后“icceps”以获得去模糊(原始)图像。
有没有办法使用cceps和icceps图像?
我也试过应用cceps算法;
Y=fftshift(fft2(y)); % Compute Fourier transform
CY=fftshift(ifft2(log(abs(Y)))); % Compute blurred image cepstrum
H=fftshift(fft2(h));
CH=fftshift(ifft2(log(abs(H)))); % Compute filter cepstrum
CX=CY-CH;
在这一行之后,我不知道如何采取逆倒谱。展开也存在一些问题,但我想不出任何办法。
答案 0 :(得分:0)
cceps
仅适用于1D序列。您可以使用2D DFT-> ABS(或能量) - > LOG() - > 2D IDFT程序来获得倒谱。我想你可能需要在逆fft之前进行fftshift:
CY=ifft2(fftshift(log(abs(Y))));
CH=ifft2(fftshift(log(abs(H))));
同样,unwrap
也是Matlab中的一维函数。 2D解包有一些代码:Goldstein's branch cut method,Costantini的2D unwrapping method基于网络编程。