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
原文地址:http://blog.csdn.net/scottly1/article/details/42192699