RGB与YUV、YIQ、YCbCr、HSI、CMY的模型互化(基于matlab)

更新时间:2023-10-29 17:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学号 2013-2014学年第二学期

学号

图 像 通 信 课 程 设 计 报

设计题目:图像的各种颜色空间转换

摘 要

所谓三基色原理,是指自然界常见的各种颜色光都可由红、绿、蓝三种色光按照不同比例相配而成。同样,绝大多数颜色也可以分解成红、绿、蓝三种色光。这就是色度学中的最基本的原理。

彩色模型的用途是在某些标准下用通常课接受的方式简化彩色规范。常常涉及到用几种不同的彩色空间表示图形和图像的颜色,以应对不同的场合和应用。因此,在数字图像的生成、存储、处理及显示时,对应不同的彩色空间,需要作不同的处理和转换。现在主要的彩色模型有RGB模型、CMY模型、YUV模型、YIQ模型、YcbCr模型、HSI模型等。本设计主要使用MATLAB编程的方法,实现RGB与其余四种模型之间的互化。即使用不同的色彩模型表示同一图形或图像。通过转换实现色彩模型的变换之后,可以让同一幅图像以各种模式在全球范围内流通,所以本设计具有一定的实际意义。一般的图像原始都为RGB—加色混合色彩模型,它与剩下的几个色彩模型之间存在着函数对应关系,通过矩阵运算改变模型的参数就可以实现不同色彩模型之间的相互转换。例如CMY—减色混合色彩模型,就是利用青色、深红色、黄色这三种彩色按照一定比例来产生想要的

C1R

彩色,CMY是RGB三基色的补色,它与RGB存在如下关系: M = 1 - G ,

Y1B

使用MATLAB编程时,读入三个通道的数值,按照对应关系进行矩阵变换就可以转换成CMY色彩模型。其他色彩模型转换原理与此相似。

关键词:MATLAB,RGB、YUV、YIQ、YCbCr、HSI、色彩模型

一、设计任务、目的和要求

任务:实现RGB模型、CMY模型、YUV模型、YIQ模型、YcbCr模型、HSI模型这几种不同色彩模型之间的相互转换 要求:最终结果用图像显示

二、总体方案设计

系统运行环境:WINDOWS 7操作系统

编程软件平台:MATLAB2012b

编码算法原理:将原图的三基色数值读入,根据不同色彩模型之间的相互关系,通过矩阵运算改变不同的亮度和色度等信息来实现色彩模型的转换,然后将变换后的图像导出

流程图:

开始 获取R、G、B三 通道分量

三、设计实现

结束 将所得图形与原始图形比较 进行反变换得到反变换图形 进行矩阵变换得到图形

1、RGB模型和CMY模型的互化 变换公式: C1R M = 1 - G Y1Bclc;clear;close;

X=imread('1.jpg');%读取原始图形

Image = im2double(X); %归一化处理 subplot(131),imshow(Image),title('原图'); %读取图像的RGB分量 r = Image(:, :, 1); g = Image(:, :, 2); b = Image(:, :, 3);

%进行RGB到CMY的变换 C=1-r; M=1-g; Y=1-b;

CMY = cat(3, C, M, Y);

subplot(132),imshow(CMY),title('RGB转CMY'); %进行CMY到RGB的反变换 r1=1-C; g1=1-M; b1=1-Y;

rgb1 = cat(3, r1, g1, b1);

subplot(133),imshow(rgb1),title('CMY转RGB'); %数值分析反变换后和原图的差别 x=rgb1-Image; disp(x);

2、RGB模型和YUV色彩模型的互化 变换公式:

0.2990.5870.114RY

U =?0.147?0.2890.436 G V0.615?0.515?0.100B

clear all;

close all;

clc;%清除内存空间信息,以便程序运行 img=imread('1.jpg'); %读取原始图形

img=im2double(img);%将图像映射到[0,1]区间;

[m,n,dim]=size(img);%获得原图像长、宽、维数的数据 subplot(131),imshow(img),title('原图'); %%图像的RGB R=img(:,:,1); G=img(:,:,2); B=img(:,:,3);

%%RGB2YUV

Y=zeros(m,n); %亮度 I=zeros(m,n); %彩度 V=zeros(m,n); %浓度 %定义乘法矩阵

matrix=[0.299 0.587 0.114; -0.147 -0.298 0.436; 0.615 -0.515 -0.100];

%用for循环实现图像中每一个点的矩阵变换,即实现模型变换 for i=1:m for j=1:n

tmp=matrix*[R(i,j) G(i,j) B(i,j)]'; Y(i,j)=tmp(1); U(i,j)=tmp(2); V(i,j)=tmp(3); end end

%使Y、U、V分量全部在[0,255]区间内 Y(Y > 255) = 255; Y(Y < 0) = 0; UU > 255) = 255; U (U < 0) = 0; V(V > 255) = 255; V (V < 0) = 0;

YUV = cat(3, Y, U, V);

subplot(132),imshow(YUV),title('YUV');

%%YUV2RGB

matrix=inv(matrix);%使用inv函数,求反变换矩阵 for i=1:m for j=1:n

本文来源:https://www.bwwdw.com/article/xem2.html

Top