Untitled
unknown
plain_text
2 years ago
1.5 kB
4
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...