常见色彩模型的相互转换(基于MATLAB)

合集下载

黑白照片转化为彩色matlab代码

黑白照片转化为彩色matlab代码

黑白照片转化为彩色matlab代码黑白照片转化为彩色是一项有趣且具有挑战性的任务。

在这个过程中,我们需要使用一些图像处理技术来还原照片的原始色彩。

本文将介绍一种基于Matlab的简单方法来实现这个目标。

我们需要加载待处理的黑白照片。

在Matlab中,可以使用imread 函数来读取图像文件。

例如,我们可以使用以下代码加载名为"bw_image.jpg"的黑白照片:```matlabbw_image = imread('bw_image.jpg');```接下来,我们将使用一些图像处理技术来将黑白照片转化为彩色。

一种常用的方法是通过颜色空间转换来实现。

在Matlab中,我们可以使用rgb2gray函数将彩色图像转换为灰度图像,然后使用gray2rgb函数将灰度图像转换回彩色图像。

以下是实现这个过程的代码:```matlabgray_image = rgb2gray(bw_image);color_image = gray2rgb(gray_image);```这样,我们就可以获得了一张彩色的图像。

然而,这种方法只是简单地将灰度信息复制到了RGB通道,效果可能并不理想。

为了改善结果,我们可以尝试其他更复杂的图像处理技术,例如图像增强或色彩补偿算法。

这些算法可以根据图像的内容和特征来调整颜色分布,以使图像看起来更加自然和生动。

除了使用内置的图像处理函数,我们还可以自定义一些算法来实现黑白照片转化为彩色。

例如,我们可以根据图像的纹理和结构信息来估计缺失的颜色信息。

这种方法需要一些先验知识和图像分析技术,但可以获得更好的结果。

黑白照片转化为彩色是一个有趣且具有挑战性的任务。

在Matlab中,我们可以使用一些内置的图像处理函数来实现这个目标,也可以尝试自定义算法来改进结果。

无论采用何种方法,我们都可以通过将灰暗的过去变为绚丽多彩的现在,使照片更加生动和有趣。

利用MATLAB进行系统模型之间的相互转换

利用MATLAB进行系统模型之间的相互转换
利用 MATLAB 进行系统模型之间的相互转换
本节将讨论系统模型由传递函数变换为状态方程,反之亦
然。现讨论如何由传递函数变换为状态方程。
将闭环传递函数写为
Y (s) U (s)
=
含s的分子多项式 含s的分母多项式
=
num den
当有了这一传递函数表达式后,使用如下 MATLAB 命令:
[A, B, C, D] = tf2ss (num, den)
J=[-2+j*4 0 0;0 -2-j*4 0;0 0 -10]; JJ=poly(J) JJ=
1 14 60 200 aa1=JJ(2);aa2=JJ(3);aa3=JJ(4); %*****State feedback gain matrix K can be given by ***** K=[aa3-a3 aa2-a2 aa1-a1]*(inv(P)) K=
%*****Enter matrices A and B*****
A=[0 1 0;0 0 1;-1 -5 -6]; B=[0;0;1];
%***** Define the controllability matrix Q*****
Q=[B A*B A^2*B];
%*****Check the rank of matrix Q*****
JA=poly(A)
JA=
1.0000 6.0000 5.0000 1.0000
a1=JA(2);a2=JA(3);a3=JA(4);
%*****Define matrices W and P as follows***** W=[a2 a1 1;a1 1 0;1 0 0]; P=Q*W;
%*****Obtain the desired chracteristic polynomial by defining %the following matrix J and entering statement poly(J)*****

matlab ciexyz与cielab变换

matlab ciexyz与cielab变换

matlab ciexyz与cielab变换题目:Matlab中的CIEXYZ与CIELAB变换引言:计算机视觉和图像处理是当今数字化世界广泛应用的领域,而颜色是其中至关重要的因素之一。

为了使计算机能够正确处理和表示颜色信息,需要进行颜色空间的转换。

在Matlab中,CIEXYZ与CIELAB是两种常用的颜色空间,本文将以此为主题,详细介绍CIEXYZ与CIELAB的原理和在Matlab中的应用。

一、CIEXYZ颜色空间的原理及应用CIEXYZ(又称CIE 1931 XYZ色彩空间)是一种基于人类对光的感知的标准颜色空间。

其基本原理是将颜色分解为红、绿、蓝三个分量的线性组合。

其中,X代表红光,Y代表绿光,Z代表蓝光,在一定条件下,可以通过测量得到光的三刺激值。

在Matlab中,可以使用`xyz2rgb`和`rgb2xyz`函数实现CIEXYZ与RGB 的互相转换。

其中,`xyz2rgb`函数将CIEXYZ色彩空间转换为RGB色彩空间,而`rgb2xyz`函数则将RGB色彩空间转换为CIEXYZ色彩空间。

二、CIELAB颜色空间的原理及应用CIELAB(即CIE L*a*b*)颜色空间是一种与人类对光的感知较为一致的颜色空间。

与CIEXYZ颜色空间相比,CIELAB使用了更复杂的计算公式,同时考虑了色度和亮度两个维度。

在CIELAB颜色空间中,L*表示亮度轴,并且取值范围为0-100。

而a*和b*则表示色度坐标,其中a*代表颜色的红绿分量,而b*代表颜色的黄蓝分量。

在Matlab中,可以使用`lab2rgb`和`rgb2lab`函数实现CIELAB与RGB 的互相转换。

其中,`lab2rgb`函数将CIELAB色彩空间转换为RGB色彩空间,而`rgb2lab`函数则将RGB色彩空间转换为CIELAB色彩空间。

三、CIEXYZ与CIELAB的转换关系CIEXYZ与CIELAB之间存在一定的转换关系,可以通过`xyz2lab`和`lab2xyz`函数在Matlab中进行转换。

利用MATLAB进行系统模型之间的相互转换

利用MATLAB进行系统模型之间的相互转换

J=[-2+j*4 0 0;0 -2-j*4 0;0 0 -10]; JJ=poly(J) JJ=
1 14 60 200 aa1=JJ(2);aa2=JJ(3);aa3=JJ(4); %*****State feedback gain matrix K can be given by ***** K=[aa3-a3 aa2-a2 aa1-a1]*(inv(P)) K=
%*****Enter matrices A and B*****
A=[0 1 0;0 0 1;-1 -5 -6]; B=[0;0;1];
%***** Define the controllability matrix Q*****
Q=[B A*B A^2*B];
%*****Check the rank of matrix Q*****
利用 MATLAB 求解极点配置问题
用 MATLAB 易于求解极点配置问题。现在我们来 求解系统方程为
x& = Ax + Bu
式中
⎡0 1 0 ⎤
⎡0⎤
A = ⎢⎢0 0 1 ⎥⎥,B = ⎢⎢0⎥⎥
⎢⎣− 1 −5 −6⎥⎦
⎣⎢1 ⎥⎦
采用状态反馈控制u = −Kx ,希望系统的闭环极
点为 s =μi(i=1,2,3),其中
s3
+ 14s2
s +
56s
+ 160
(1.22)
对该系统,有多个(无穷多个)可能的状态空间表达式, 其中一种可能的状态空间表达式为:
⎡ x&1 ⎤ ⎡0 1
⎢ ⎢
x& 2
⎥ ⎥
=
⎢⎢0
0
⎢⎣ x&3 ⎥⎦ ⎢⎣−160

matlab实现RGB与HSI的相互转换

matlab实现RGB与HSI的相互转换

%将RGB图像转换为HSI图像% 显示HSI图像%直方图均衡化HSI图像%将HSI图像转换回RGB图像function rgbtohsi(x)F=imread(x);F=im2double(F);r=F(:,:,1);g=F(:,:,2);b=F(:,:,3);th=acos((0.5*((r-g)+(r-b)))./((sqrt((r-g).^2+(r-b).*(g-b)))+eps));H=th;H(b>g)=2*pi-H(b>g);H=H/(2*pi);S=1-3.*(min(min(r,g),b))./(r+g+b+eps);I=(r+g+b)/3;hsi=cat(3,H,S,I);HE=H*2*pi;HE=histeq(HE);HE=HE/(2*pi);SE=histeq(S);IE=histeq(I);choice=input('1:RGB 转换为HSI\n2:显示HSI图像\n3:HSI转换为RGB图像\n4:色调均衡\n5:饱和度均衡\n6:亮度均衡\n7:HSI均衡\n 输入您的选择:');switch choicecase 1figure,imshow(F),title('RGB 图像');figure, imshow(hsi),title('HSI 图像');case 2figure,imshow(F),title('RGB 图像');figure, imshow(H),title('Hue 图像');figure, imshow(S),title('饱和度图像');figure, imshow(I),title('亮度图像');case 3C=hsitorgb(hsi);figure,imshow(hsi),title('HSI 图像');figure, imshow(C),title('RGB 图像');case 4RV=cat(3,HE,S,I);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB Image-Hue Equalized');case 5RV=cat(3,H,SE,I);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB 饱和度均衡');case 6RV=cat(3,H,S,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB 亮度均衡');case 7RV=cat(3,HE,SE,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB HSI 均衡');otherwisedisplay('选择错误');endend%函数,将HSI图像转换为RGB图像function C=hsitorgb(hsi)HV=hsi(:,:,1)*2*pi;SV=hsi(:,:,2);IV=hsi(:,:,3);R=zeros(size(HV));G=zeros(size(HV));B=zeros(size(HV));%RG Sectorid=find((0<=HV)& (HV<2*pi/3));B(id)=IV(id).*(1-SV(id));R(id)=IV(id).*(1+SV(id).*cos(HV(id))./cos(pi/3-HV(id)));G(id)=3*IV(id)-(R(id)+B(id));%BG Sectorid=find((2*pi/3<=HV)& (HV<4*pi/3));R(id)=IV(id).*(1-SV(id));G(id)=IV(id).*(1+SV(id).*cos(HV(id)-2*pi/3)./cos(pi-HV(id))); B(id)=3*IV(id)-(R(id)+G(id));%BR Sectorid=find((4*pi/3<=HV)& (HV<2*pi));G(id)=IV(id).*(1-SV(id));B(id)=IV(id).*(1+SV(id).*cos(HV(id)-4*pi/3)./cos(5*pi/3-HV(id))); R(id)=3*IV(id)-(G(id)+B(id));C=cat(3,R,G,B);C=max(min(C,1),0);end来源:/share/detail/3258258。

matlab不同颜色合成算法

matlab不同颜色合成算法

matlab不同颜色合成算法Matlab中有多种不同的颜色合成算法,这些算法可以用于生成不同颜色的图像或合并多个颜色通道。

本文将介绍几种常见的颜色合成算法,并讨论它们的原理和应用。

一、RGB颜色模型RGB颜色模型是最常用的颜色表示方式之一,它将颜色表示为红色、绿色和蓝色三个分量的组合。

在Matlab中,可以使用RGB颜色模型来合成新的颜色。

在RGB颜色模型中,每个颜色通道的取值范围是0到255。

通过调整不同颜色通道的取值,可以合成出各种不同的颜色。

例如,要合成一个红色,可以将红色通道的取值设置为255,而将绿色和蓝色通道的取值都设置为0。

二、CMYK颜色模型CMYK颜色模型是一种专门用于印刷的颜色模型,它将颜色表示为青色、品红色、黄色和黑色四个分量的组合。

在Matlab中,可以使用CMYK颜色模型来合成新的颜色。

在CMYK颜色模型中,每个颜色通道的取值范围是0到100。

通过调整不同颜色通道的取值,可以合成出各种不同的颜色。

例如,要合成一个品红色,可以将品红色通道的取值设置为100,而将青色、黄色和黑色通道的取值都设置为0。

三、HSV颜色模型HSV颜色模型是一种常用的颜色模型,它将颜色表示为色调、饱和度和亮度三个分量的组合。

在Matlab中,可以使用HSV颜色模型来合成新的颜色。

在HSV颜色模型中,色调的取值范围是0到360,饱和度和亮度的取值范围是0到1。

通过调整不同颜色通道的取值,可以合成出各种不同的颜色。

例如,要合成一个红色,可以将色调的取值设置为0,而将饱和度和亮度的取值都设置为1。

四、YUV颜色模型YUV颜色模型是一种常用的视频颜色模型,它将颜色表示为亮度、蓝色差和红色差三个分量的组合。

在Matlab中,可以使用YUV颜色模型来合成新的颜色。

在YUV颜色模型中,亮度的取值范围是0到1,蓝色差和红色差的取值范围是-0.5到0.5。

通过调整不同颜色通道的取值,可以合成出各种不同的颜色。

例如,要合成一个蓝色,可以将亮度的取值设置为0.5,而将蓝色差和红色差的取值都设置为-0.5。

也谈CIE RGB到CIE XYZ的转换(附MATLAB程序及数据)

也谈CIE RGB到CIE XYZ的转换(附MATLAB程序及数据)

也谈CIE RGB 到CIE XYZ 的转换SMT 傅亚炜CIE 1931 XYZ 标准色度观察者色度空间(也有文献中叫颜色模型、色彩空间、色度学系统的,都是一个意思),以下简称CIE XYZ 色度空间,是国际上色度计算、颜色测量和颜色表征的统一标准,是几乎所有测色仪器的设计与制造依据。

CIE XYZ 色度空间的三原色X 、Y 、Z 是假想的,实际上并不存在,因此也无法进行实验测试。

XYZ 系统所使用的数据,都是根据CIE 1931 RGB 色度空间的实验数据(颜色匹配函数或称光谱三刺激值)()()()λλλ、、r g b 转换而来的: =++⎧⎪=++⎨⎪=+⎩2.7689 1.7517 1.13024.59070.06010.0559 5.5949X R G B Y R G BZ G B (1) ⎧++=⎪++⎪⎪++=⎨++⎪⎪+=⎪++⎩0.490.310.20.667 1.1323 1.20070.1770.81240.01060.667 1.1323 1.20070.00990.99010.667 1.1323 1.2007r g b x r g b r g b y r g b g b z r g b (2)由于计算精度问题,不同文献中的数值会有微小差异(参见《附录一》)。

在一般的文献和教材中都是直接引用上述转换公式,很少有给出推导过程的。

少数给出过正统推导过程的[1][2][3],都是从色度图坐标直接先推导出三刺激值,其过程繁琐,且不直观,不利于理解(参见《附录二》)。

所以我根据我在MATLAB 中绘制色度图的过程,给出了概念清晰的简明推导过程,先从rgb 色度坐标导出xyz 色度坐标,这样能很直观地看到转换过程对色度图所带来的影响。

CIE 在推出XYZ 色度空间时,提了以下条件:(1) 所有三刺激值都是正的,即所有真实色都要落在新的麦克斯韦三角形之内。

(2) 假想色空间尽量小,即真实色在新麦克斯韦三角形内占的面积尽可能地大。

几种颜色模型的转换公式

几种颜色模型的转换公式

几种颜色模型的转换公式颜色模型用于描述和表示颜色的方法,其中最常见的包括RGB、CMYK 和HSV等模型。

在实际应用中,经常需要在不同颜色模型之间进行转换。

下面将详细介绍RGB到CMYK、RGB到HSV以及CMYK到RGB的转换公式。

一、RGB到CMYK的转换公式:RGB模型是由红色(R)、绿色(G)和蓝色(B)的光强度组成,而CMYK模型是由青色(C)、品红色(M)、黄色(Y)和黑色(K)的浓度表示的。

下面是RGB到CMYK的转换公式:1.将RGB值除以255,得到RGB的标准化值2.通过以下公式计算出CMY的值:C=1-RM=1-GY=1-B3.通过以下公式计算出K的值:K = min(C, M, Y)4.将CMY的值减去K,得到CMYK的值:C=(C-K)/(1-K)M=(M-K)/(1-K)Y=(Y-K)/(1-K)K=K二、RGB到HSV的转换公式:HSV模型是由色调(H)、饱和度(S)和明度(V)的数值表示的。

下面是RGB到HSV的转换公式:1.将RGB值除以255,得到RGB的标准化值2.通过以下公式计算出V的值:V = max(R, G, B)3.通过以下公式计算出S的值:if V == 0:S=0else:S = (V - min(R, G, B)) / V4.通过以下公式计算出H的值:if V == R:H = (G - B) / (max(R, G, B) - min(R, G, B))elif V == G:H = 2 + (B - R) / (max(R, G, B) - min(R, G, B))else:H = 4 + (R - G) / (max(R, G, B) - min(R, G, B))H=H*60if H < 0:H=H+360三、CMYK到RGB的转换公式:CMYK模型中的C、M、Y和K表示颜色的浓度,而RGB模型表示颜色的光强度。

下面是CMYK到RGB的转换公式:1.通过以下公式计算出R的值:R=255*(1-C)*(1-K)2.通过以下公式计算出G的值:G=255*(1-M)*(1-K)3.通过以下公式计算出B的值:B=255*(1-Y)*(1-K)以上就是RGB到CMYK、RGB到HSV以及CMYK到RGB的转换公式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-2014学年第二学期图像通信课程设计报告设计题目:图像的各种颜色空间转换摘要所谓三基色原理,是指自然界常见的各种颜色光都可由红、绿、蓝三种色光按照不同比例相配而成。

同样,绝大多数颜色也可以分解成红、绿、蓝三种色光。

这就是色度学中的最基本的原理。

彩色模型的用途是在某些标准下用通常课接受的方式简化彩色规范。

常常涉及到用几种不同的彩色空间表示图形和图像的颜色,以应对不同的场合和应用。

因此,在数字图像的生成、存储、处理及显示时,对应不同的彩色空间,需要作不同的处理和转换。

现在主要的彩色模型有RGB模型、CMY模型、YUV模型、YIQ模型、YcbCr模型、HSI模型等。

本设计主要使用MATLAB编程的方法,实现RGB与其余四种模型之间的互化。

即使用不同的色彩模型表示同一图形或图像。

通过转换实现色彩模型的变换之后,可以让同一幅图像以各种模式在全球范围内流通,所以本设计具有一定的实际意义。

一般的图像原始都为RGB—加色混合色彩模型,它与剩下的几个色彩模型之间存在着函数对应关系,通过矩阵运算改变模型的参数就可以实现不同色彩模型之间的相互转换。

例如CMY—减色混合色彩模型,就是利用青色、深红色、黄色这三种彩色按照一定比例来产生想要的彩色,CMY是RGB三基色的补色,它与RGB存在如下关系:[CMY]=[111]-[RGB],使用MATLAB编程时,读入三个通道的数值,按照对应关系进行矩阵变换就可以转换成CMY色彩模型。

其他色彩模型转换原理与此相似。

关键词:MATLAB,RGB、YUV、YIQ、YCbCr、HSI、色彩模型一、设计任务、目的和要求任务:实现RGB模型、CMY模型、YUV模型、YIQ模型、YcbCr模型、HSI模型这几种不同色彩模型之间的相互转换要求:最终结果用图像显示二、总体方案设计系统运行环境:WINDOWS 7操作系统编程软件平台:MATLAB2012b编码算法原理:将原图的三基色数值读入,根据不同色彩模型之间的相互关系,通过矩阵运算改变不同的亮度和色度等信息来实现色彩模型的转换,然后将变换后的图像导出流程图:三、设计实现1、RGB模型和CMY模型的互化变换公式:[CMY]=[111]-[RGB]clc;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色彩模型的互化变换公式:[YUV]=100.0515.0615.0436.0289.0147.0114.0587.0299.0----[RGB]clear all;close all;clc;%清除内存空间信息,以便程序运行img=imread('1.jpg'); %读取原始图形img=im2double(img);%将图像映射到[0,1]区间;[m,n,dim]=size(img);%获得原图像长、宽、维数的数据subplot(131),imshow(img),title('原图');%%图像的RGBR=img(:,:,1);G=img(:,:,2);B=img(:,:,3);%%RGB2YUVY=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:mfor j=1:ntmp=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);endend%使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');%%YUV2RGBmatrix=inv(matrix);%使用inv函数,求反变换矩阵for i=1:mfor j=1:ntmp=matrix*[Y(i,j) U(i,j) V(i,j)]'; R(i,j)=tmp(1);G(i,j)=tmp(2);B(i,j)=tmp(3);endendimg1(:,:,1)=R;img1(:,:,2)=G;img1(:,:,3)=B;%将R、G、B分量全部化为[0,255]区间内R(R > 255) = 255;R(R < 0) = 0;G(G > 255) = 255;G(G < 0) = 0;B(B > 255) = 255;B(B < 0) = 0;subplot(133),imshow(img1),title('反变换');%比较x=img-img;disp(x);3、RGB模型和YIQ色彩模型的互化变换公式:[YIQ]=311.0523.0212.0321.0275.0596.0114.0587.0299.0--[RGB]clear all;close all;clc;img=imread('1.jpg');%读取矩阵img=im2double(img);%将图像映射到[0,1]区间。

[m,n,dim]=size(img);%读取图像的长宽等信息subplot(131),imshow(img),title('原图'); %%图像的RGBR=img(:,:,1);G=img(:,:,2);B=img(:,:,3);%%RGB2YIQY=zeros(m,n); %亮度I=zeros(m,n); %彩度Q=zeros(m,n); %浓度matrix=[0.299 0.587 0.114;0.596 -0.275 -0.321;0.212 -0.523 0.311];%用for循环实现图像中每一个点的矩阵变换,即实现模型变换 for i=1:mfor j=1:ntmp=matrix*[R(i,j) G(i,j) B(i,j)]';Y(i,j)=tmp(1);I(i,j)=tmp(2);Q(i,j)=tmp(3);endendYUV = cat(3, Y, I, Q);subplot(132),imshow(YUV),title('YUV');%显示变换后的图形%YUV2RGBmatrix=inv(matrix);for i=1:mfor j=1:ntmp=matrix*[Y(i,j) I(i,j) Q(i,j)]';R(i,j)=tmp(1);G(i,j)=tmp(2);B(i,j)=tmp(3);endend%将R、G、B三个分量赋予到img矩阵中img(:,:,1)=R;img(:,:,2)=G;img(:,:,3)=B;subplot(133),imshow(img),title('反变换');%得到反变换的图形%将反变换图形与原始图形进行比较x=img1-img;disp(x);4、RGB色彩模型和YCbCr色彩模型的互化变换公式:[YCbCr]=0813.04187.0500.0500.03313.01687.0114.0587.0299.0----[RGB]+[128128]clc;clear;close;src=imread('1.jpg');subplot(141),imshow(src),title('原图');%得到以double形式存在的R、G、B分量r = double(src(:,:,1));g = double(src(:,:,2));b = double(src(:,:,3));% convert...y = floor(0.299*r + 0.587*g + 0.114*b+0); %floor(pi)=3; floor(3.5)=3; floor(-3.2)=-4;向负方向舍入Cb = floor(-0.1687*r - 0.3313*g + 0.5*b+128);Cr = floor(0.5*r - 0.4187*g - 0.0813*b+128);%对所得的各个分量进行调整,使之介于[0,255]区间内y(y > 255) = 255;y(y < 0) = 0;Cb(Cb > 255) = 255;Cb(Cb < 0) = 0;Cr(Cr > 255) = 255;Cr(Cr < 0) = 0;%将Y、Cb、Cr分量化为8位无符号整数并存放在dst矩阵中dst(:,:,1) = uint8(y);dst(:,:,2) = uint8(Cb);dst(:,:,3) = uint8(Cr);subplot(142),imshow(dst),title('自编之rgb到YCBCR');YCBCR = rgb2ycbcr(src);subplot(143),imshow(YCBCR),title('matlab自带转换函数');%查找资料,得到反变换矩阵,并借此进行反变换r1=1.0*y + 0 +1.402*(Cr-128);g1=1.0*y - 0.34413*(Cb-128)-0.71414*(Cr-128);b1=1.0*y + 1.772*(Cb-128)+0;%对所得的各个分量进行调整,使之介于[0,255]区间内r1(r1 > 255) = 255;r1(r1 < 0) = 0;g1(g1 > 255) = 255;g1(g1 < 0) = 0;b1(b1 > 255) = 255;b1(b1 < 0) = 0;%将r1、g1、b1分量化为8位无符号整数并存放在dst2矩阵中dst2(:,:,1) = uint8(r1);dst2(:,:,2) = uint8(g1);dst2(:,:,3) = uint8(b1);subplot(144),imshow(dst2),title('反变换');%显示反变换图形5、RGB色彩模型和HSI色彩模型的互化变换公式:H= θ B≤G360-θ B>G;其中,θ= arccos 0.5∗[(R−G)+(R−B)][(R−G)+(R−B)(G−B)1/2]S=1-3[min(R,G,B)](R+G+B)I=1/3*(R+G+B);clear;clc;close;x=imread('1.jpg');rgb=im2double(x);r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);%提取彩色图像R、G、B三个色彩通道的分量。

相关文档
最新文档