Line 43: | Line 43: | ||
img(:,3) = B(:); | img(:,3) = B(:); | ||
− | *Operate the kmean function to get the | + | *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 | ||
---- | ---- |
Revision as of 21:22, 29 November 2015
A slecture by ECE student Yitong Wang
Partly based on the ECE438 Fall 2015 lecture material of Boutin.
Contents
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
4. Conclusion (Replace by appropriate section title)
Text of fourth section goes here.
5. References
- Reference 1
- reference 2
Questions and comments
If you have any questions, comments, etc. please post them here.
Back to 2015 Fall ECE 438 Boutin