Compress image with PCM encoder

For an equation like x(t) = A*sin(2*pi*f*t) the result is code like this:
% Analog signal
f=2; % Maximum freq of the input signal
fs=5*f;
t=0:1/fs:1;
a=2;
x=a*sin(2*pi*f*t);
% Amplitude shifting
x_pos=x+a;
% Quantization
quant=round(x_pos);
% Decimal to binary
encoder=de2bi(quant, 'left-msb');
% Receiver
decoder=bi2de(encoder,'left-msb');
% Shifting the amplitude back
x_out=decoder-a;
My question is, for a given .PGM image, how can I compress it with a PCM encoder following these steps (analog signal- sampler-quantizer-encoder-decoder) and change its bits per pixel?

2 件のコメント

Walter Roberson
Walter Roberson 2020 年 2 月 24 日
The numeric values read in by imread() can already be considered to be quantized. However if you wanted, you could quantize further. For example, you might do
quant = round(TheImage, -1);
which would round uint8 or uint16 values to the nearest 10.
encoder=de2bi(quant, 'left-msb');
For consistency you should be passing in N, the minimum number of digits to use.
Marian-Catalin Pirvulescu
Marian-Catalin Pirvulescu 2020 年 2 月 24 日
Thank you, Walter!
For exemple, if my image is 8 bits per pixel and I want to change it to 5 bits per pixel and keep the .PGM format, how should I write the code?

サインインしてコメントする。

回答 (1 件)

Pujitha Narra
Pujitha Narra 2020 年 2 月 26 日

0 投票

Hi,
This is one of the several submissions in MATLAB File Exchange. Feel free to contact the author of this submission directly for specific questions about the implementation.

回答済み:

2020 年 2 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by