MATLAB을 사용하여 JPEG 압축을 구현하려고합니다. 음, 심볼의 확률 (허프만 코딩)이 계산 된 지점에서 일부 음수 값을 볼 수 있습니다. 나는 이것이 정확하지 않다라고 확신한다! !! 누군가가 도움이나 지시를 내릴 수 있다면 정말 감사 할 것입니다. 여러분 모두에게 미리 감사드립니다. MATLAB R2012b를 사용합니다. 교환JPEG 압축의 이상한 결과
clc;
clear all;
a = imread('test.png');
b = rgb2gray(a);
b = imresize(b, [256 256]);
b = double(b);
final = zeros(256, 256);
mask = [1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
1 1 1 1 1 0 0 0
1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0];
qv1 = [ 16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99];
t = dctmtx(8);
DCT2D = @(block_struct) t*block_struct.data*t';
msk = @(block_struct) mask.*block_struct.data;
for row = 1:8:256
for column = 1:8:256
x = (b(row:row+7, column:column+7));
xf = blockproc(x, [8 8], DCT2D);
xf1 = blockproc(xf, [8 8], msk);
xf1 = round(xf1./qv1).*qv1;
final(row:row+7, column:column+7) = xf1;
end
end
[symbols,p] = hist(final,unique(final));
bar(p, symbols);
p = p/sum(p); %NEGATIVE VALUES????
답변으로 문제가 해결 되었습니까? 아니면 도움이 되었습니까? – chappjc