RGB顏色空間
關於RGB顏色空間,相信做圖像處理的人基本都比較熟悉,還是說一下R、G、B三個分量,每個分量各占8位即一個字節,三個分量總共是3個字節,即24bit,三個分量可以組合出不同的顏色,即2^24 種。
所以可以表示出的顏色數遠遠超過了俺們人類可以識別的范圍。每個RGB分量其實都是表示成亮度,當三個相同時,就退化成我們所說的灰度圖了,如三個分量都是0,此時就是黑色,三個分量都是255(8位可以表示的最大值),此時就是白色,下面一張圖可以更形象的描述:
YUV顏色空間
YUV三個分量Y表示(亮度), U 、V代表色度;
關於YUV的解釋看下面一篇文章中的分析,本人不再贅述:
代碼如下:
% BY SCOTT
% RGB2YUV
% Y = 0.299R + 0.587G + 0.114B
% U = -0.147R - 0.289G + 0.436B
% V = 0.615R - 0.515G - 0.100B
%
% YUV2RGB
% R = Y + 1.14V
% G = Y - 0.39U - 0.58V
% B = Y + 2.03U
clear all;
clc;
RGB = imread('test.jpg');
imshow(RGB);
RGB = mat2gray(RGB);
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
x = size(RGB,1);
y = size(RGB,2);
% RGB2YUV
Y = 0.299*R + 0.587*G + 0.114*B;
U = -0.147*R- 0.289*G + 0.436*B;
V = 0.615*R - 0.515*G - 0.100*B;
YUV = cat(3, Y, U, V);
figure; imshow(YUV);
% YUV2RGB
RGB1 = zeros(size(RGB));
RGB1(:,:,1) = Y + 1.14 * V;
RGB1(:,:,2) = Y - 0.39 * U - 0.58 * V;
RGB1(:,:,3) = Y + 2.03 * U;
figure; imshow(RGB1)
% After YUV to RGB, The Image should same with original image.
運行結果分別如下所示:
轉換前RGB空間
轉換后YUV空間
還原成RGB