我想去模糊图像。图片为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=850
是N
的最佳值。我已经证实这一点。但只是为了进行健全性检查,我尝试改变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;
答案 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;
这很有效。