Revision as of 21:36, 29 November 2015 by Wang1368 (Talk | contribs)


Implementation of Color Quantization

A slecture by ECE student Yitong Wang

Partly based on the ECE438 Fall 2015 lecture material of Boutin.



1. Introduction (Implementation of Max Quantization)

Quantization is an operation to compress a signal by reducing a range of values to a single value. Color quantization is a process to reduce the number of colors in an image in order to reduce the size. This slecture will describe the color quantization using kmean function in matlab.



2. Background

  • The brightness of a photo at each pixel is typically distributed among integers from 0 to 255. However, since some images are desired to limit the number of colors, the brightness value has to be rounded off to fit the size of the image.
  • During the procedure of quantization, there must be some loss of data. To avoid high error percentage and remain quality as good as possible, using kmean function is a good choice.
  • Max quantizier

3. Theory

  • [ind,color] = kmean(input,k) function performs k-means clustering to partition the observations of the n-by-m data matrix input into k clusters, and returns an n-by-1 vector which represent the index of the values of colors after operation. The operation uses the squared Euclidean distance measure.
  • To start the operation, the image have to be reshaped into a X-3 matrix that contains R,G and B as we used in lab 5. Where X is the number of pixels in each row.

%Seperate the image matrix into R G and B

R = rgb(:,:,1);

G = rgb(:,:,2);

B = rgb(:,:,3);

%reform a image matrix in size-3 matrix

img(:,1) = R(:);

img(:,2) = G(:);

img(:,3) = B(:);

  • Operate the kmean function to get the quantize reference value

[ind,Color] = kmean(double(imag),N)

%Where N is the number of colors you want to keep in image

  • Map the image into the closest reference value

imgQ = pdist2(img,Color) %Pairwise distance between original image and quantized reference

[minQ,indmin] = min(imgQ,[],2);%Target the location of the closest distance.

New = C(indmin,:) % map the image to the closest reference value

  • reform the image

s = size(rgb);

s1 = s(1);

s2 = s(2);% record the size of original image

i(:,:,1)=reshape(New(:,1),s1,s2);

i(:,:,2)=reshape(New(:,2),s1,s2);

i(:,:,3)=reshape(New(:,3),s1,s2);%reshape the vector into m-n-p matrix as the original image

i = uint8(i);%convert to uint8 type

image(i);%print


file:///home/shay/b/wang1368/lab9b/minip.jpg



4. Conclusion

T


5. References

  • Purdue University: ECE438 - Digital Signal Processing with Applications1ECE438 - Laboratory 10:Image Processing (Week 2)October 6, 2010
  • [1] Mireille Boutin, "ECE438 Digital Signal Processing with Applications," Purdue University August 26,2009.
  • [ONLINE] Available at: https://en.wikipedia.org/wiki/Color_quantization [Accessed 29 November 2015].


Questions and comments

If you have any questions, comments, etc. please post them here.


Back to 2015 Fall ECE 438 Boutin


Alumni Liaison

Have a piece of advice for Purdue students? Share it through Rhea!

Alumni Liaison