通过 MATLAB 中的矩阵运算对图像进行去模糊

Deblurring an image through matrix operations in MATLAB

我想对图像进行去模糊处理。图像是 1100x1100,颜色图是 256x3。要模糊图像,可以根据以下等式执行矩阵乘法:Y = XH',其中 X 是原始图像。要对图像进行去模糊处理,可以使用 X = Y/H'。因此,我 运行 下面的代码。

L = 1100; 
N = 850;
c = [ones(1,N)/N zeros(1,L-N)];
r = [1/N zeros(1,L-1)];
H = toeplitz(c,r);
pic1 = pic/H'; //pic is defined as the original image: 1100 x 1100
image(dePic);

但是,当我 运行 这段代码时,我只得到了一张热图,而不是原始图像。我哪里错了?我在 MATLAB 中做错了数学吗? N=850N 的最优值。这个我已经确认了。但只是为了完整性检查,我尝试更改 N 但运气不佳。

我也试过下面的代码。但是只是把热图转成了黑白,并没有太大的影响。

L = 1100;
N = 850;
c = [ones(1,N)/N zeros(1,L-N)];
r = [1/N zeros(1,L-1)];
H = toeplitz(c,r);
pic1 = pic/H';
colormap(map); //map is 256x3
image(dePic);
axis image;

我是个彻头彻尾的傻瓜。当我调用 image() 时,我传递了错误的参数。 这是更新后的代码,效果很好。

L = 1100;
N = 850;
c = [ones(1,N) zeros(1,L-N)];
r = [1 zeros(1,L-1)];
H = toeplitz(c,r);
H = H/N;
pic1 = pic*inv(H');
colormap(map);
image(pic1);
axis image;

这有效。