Untitled
unknown
plain_text
3 years ago
1.5 kB
7
Indexable
encoder:
numRows=100;
numCols=100;
current_lastNZ=zeros(numRows,numCols);
lastNZ_bitstream=char(zeros(1,6e4));
outputBitStream=string(1,numRows*numCols);
for i=1:size(zigzagOrd,3)
for j=1:size(zigzagOrd,4)
current_block=zigzagOrd(:,:,i,j);
current_lastNZ_tmp=find(current_block,1,'last');
current_lastNZ(i,j)=1;
if !(isempty(current_lastNZ_tmp))
current_lastNZ(i,j)=current_lastNZ_tmp;
end
idx=sub2ind([100 100],[i],[j]);
bitsOfLastNZ=dec2bin(current_lastNZ(i,j)-1,6);
lastNZ_bitstream(1+6*(idx-1):6*idx)=bitsOfLastNZ;
current_output_bitStream=golomb_enc(current_block(1:current_lastNZ(i,j)));
outputBitStream(idx)=current_output_bitStream;
end
end
outputBitStream=[outputBitStream bitsOfLastNZ];
Decoder:
lastNZ_string_bitstream=outputBitStream(end);
lastNZ_bitstream=convertStringsToChars(lastNZ_string_bitstream);
outputBitStream=outputBitStream(1:end-1);
zigzagOrd=zeros(1,64,100,100);
for i=1:numRows*numCols
idxBegin=1;
current_block=zeros(1,64);
[row, col]= in2sub([100 100],i);
output_bitStream=lastNZ_bitstream(1+6*(i-1):6*i);
current_lastNZ=bin2dec(output_bitStream);
for symb=1:current_lastNZ+1
current_output_bitStream=char(outputBitStream(i));
[current_symbol, idxBegin]=golomb_dec(current_output_bitStream,idxBegin);
current_block(symbol)=current_symbol;
end
zigzagOrd(:,:,row,col)=current_block;
end
Editor is loading...