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

时间:2017-02-14 06:13:56

标签: image matlab matrix matlab-figure blur

我想去模糊图像。图片为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;

1 个答案:

答案 0 :(得分:1)

我是个傻瓜。当我打电话给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;

这很有效。