Ich möchte ein Bild unscharf machen. Das Bild ist 1100x1100
und die Colormap ist 256x3
. Um ein Bild zu verwischen, würde man eine Matrixmultiplikation gemäß der folgenden Gleichung durchführen: Y = XH ', wobei X das Originalbild ist. Um das Bild unscharf zu machen, würde man X = Y/H 'machen. Daher habe ich den folgenden Code ausgeführt.Entblocken eines Bildes durch Matrixoperationen in MATLAB
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);
Allerdings, wenn ich diesen Code ausführen, bekomme ich nur eine Heatmap und nicht das Originalbild. Wo gehe ich falsch? Mache ich Mathe in MATLAB falsch? N=850
ist der optimale Wert für N
. Das habe ich bestätigt. Aber nur für die Gesundheitsprüfung, habe ich versucht, N
zu ändern und hatte nicht viel Glück.
Ich habe auch den folgenden Code ausprobiert. Aber es hat nur die Heat Map in Schwarz-Weiß umgewandelt und hatte keinen großen Einfluss.
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;
Nur für den Fall, haben Sie bemerkt, dass die "Bildverarbeitung Toolbox" einige eingebaute Deblurring-Funktion enthalten? – obchardon