Distorted image after DCT compression

조회 수: 3 (최근 30일)
Siyomnqoba
Siyomnqoba 2015년 10월 19일
편집: Siyomnqoba 2015년 10월 19일
After the image goes through the compression scheme (which does not include an entropy encoder) I get the following blurred image:
I think it has something to do with the way my code inserts an end of block (eob) symbol.
eob = 500;
r = zeros(numel(y) + size(y,2),1);
count = 0;
for j = 1:xb
i = find(max(y(:,j)));
if isempty(i)
i = 0;
end
p = count + 1;
q = p + i;
r(p:q) = [y(1:i,j);eob];
count = count + i + 1;
end
r((count + 1):end) = [];
What this code does is that,after the each 8x8 block of coefficients has gone through the DCT and quantization stages it was converted to a column and then a end of block symbol is inserted after 64 entries to indicate that we've reached the end of each block.
the following block of code, which i suspect is what's causing the problem, comes before the blocks go through the de-quantization and inverse DCT stages.
if true
% code
end
eob = 500;
z = zeros(64,xb);
k = 1;
for j = 1:xb
for i = 1:64
if k <8192
if x(k) == eob
k = k+1;
break;
else
z(i,j) = x(k);
k = k+1;
end
end
end
end
z = z(rev,:);
x = col2im(z, [8 8], [xm xn], 'distinct');
fun = @(block_struct) (block_struct.data .* m);
y = blockproc(x, [8,8], fun);
t = Cintra(dctmtx(8));
dct = @(block_struct) t' * block_struct.data * t ;
y = blockproc(y, [8,8], dct);
x = uint8(double(y) + 128);
It basically takes the long stream of coefficients removes the end of block symbols,rearrange the stream into 64 columns and then reverses the the zig-zag order done previously.Is there anything fundamentally wrong in the code above that I am currently missing? Please note that the code is designed for images that 512x512 pixels
It basically takes the long stream of coefficients removes the end of block symbols,rearrange the stream into 64 columns and then reverses the the zig-zag order done previously.Is there anything fundamentally wrong in the code above that I am currently missing? Please note that the code is designed for images that 512x512 pixels

답변 (0개)

카테고리

Help CenterFile Exchange에서 Image Segmentation and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by