Note that there are some explanatory texts on larger screens.

plurals
  1. POMatlab Huffman Encoding in matrix
    primarykey
    data
    text
    <p>I am trying to encode a matrix that i have (after calculating frame differences) with Huffman code but i am having difficulties completing it</p> <p>The matrix i wish to encode with huffman is called "amp"</p> <p>Something that i found is this:</p> <pre><code>function y = mat2huff(x) %MAT2HUFF Huffman encodes a matrix. % Y = MAT2HUFF(X) Huffman encodes matrix X using symbol % probabilities in unit-width histogram bins between X's minimum % and maximum values. The encoded data is returned as a structure % Y: % Y.code The Huffman-encoded values of X, stored in % a uint16 vector. The other fields of Y contain % additional decoding information, including: % Y.min The minimum value of X plus 32768 % Y.size The size of X % Y.hist The histogram of X % % If X is logical, uint8, uint16, uint32, int8, int16, or double, % with integer values, it can be input directly to MAT2HUFF. The % minimum value of X must be representable as an int16. % % If X is double with non-integer values---for example, an image % with values between 0 and 1---first scale X to an appropriate % integer range before the call. For example, use Y = % MAT2HUFF(255*X) for 256 gray level encoding. % % NOTE: The number of Huffman code words is round(max(X(:))) - % round(min(X(:))) + 1. You may need to scale input X to generate % codes of reasonable length. The maximum row or column dimension % of X is 65535. % % See also HUFF2MAT. % Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, &amp; S. L. Eddins % Digital Image Processing Using MATLAB, Prentice-Hall, 2004 % $Revision: 1.5 $ $Date: 2003/11/21 15:21:12 $ if ndims(x) ~= 2 | ~isreal(x) | (~isnumeric(x) &amp; ~islogical(x)) error('X must be a 2-D real numeric or logical matrix.'); end % Store the size of input x. y.size = uint32(size(x)); % Find the range of x values and store its minimum value biased % by +32768 as a UINT16. x = round(double(x)); xmin = min(x(:)); xmax = max(x(:)); pmin = double(int16(xmin)); pmin = uint16(pmin + 32768); y.min = pmin; % Compute the input histogram between xmin and xmax with unit % width bins, scale to UINT16, and store. x = x(:)'; h = histc(x, xmin:xmax); if max(h) &gt; 65535 h = 65535 * h / max(h); end h = uint16(h); y.hist = h; % Code the input matrix and store the result. map = huffman(double(h)); % Make Huffman code map hx = map(x(:) - xmin + 1); % Map image hx = char(hx)'; % Convert to char array hx = hx(:)'; hx(hx == ' ') = []; % Remove blanks ysize = ceil(length(hx) / 16); % Compute encoded size hx16 = repmat('0', 1, ysize * 16); % Pre-allocate modulo-16 vector hx16(1:length(hx)) = hx; % Make hx modulo-16 in length hx16 = reshape(hx16, 16, ysize); % Reshape to 16-character words hx16 = hx16' - '0'; % Convert binary string to decimal twos = pow2(15:-1:0); y.code = uint16(sum(hx16 .* twos(ones(ysize, 1), :), 2))'; ... </code></pre> <p>But in the above code how do i declare to use my matrix called "amp"?</p> <p>Thanks in advance</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload