MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序 您所在的位置:网站首页 matlab怎么给图片命名 MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序

MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序

2023-06-11 04:36| 来源: 网络整理| 查看: 265

一张彩色图像是由R、G、B三个通道组成,所以首先需要将彩色图像分为三个通道的图像。 原图以下是对猫图进行单通道提取得到的图像。 在这里插入图片描述在这里插入图片描述在这里插入图片描述

HSI颜色空间

HSI[Hue-Saturation-Intensity(Lightness),HSI或HSL]颜色模型用H、S、I三参数描述颜色特性,其中H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。 当人观察一个彩色物体时,用色调、饱和度、亮度来描述物体的颜色。色调是描述纯色的属性(纯黄色、橘黄或者红色);饱和度给出一种纯色被白光稀释的程度的度量;亮度是一个主观的描述,实际上,它是不可以测量的,体现了无色的强度概念,并且是描述彩色感觉的关键参数。而强度(灰度)是单色图像最有用的描述子,这个量是可以测量且很容易解释。则将提出的这个模型称作为HSI(色调、饱和度、强度)彩色模型,该模型可在彩色图像中从携带的彩色信息(色调和饱和度)里消去强度分量的影响,使得HSI模型成为开发基于彩色描述的图像处理方法的良好工具,而这种彩色描述对人来说是自然而直观的。 HSI模型是美国色彩学家孟塞尔(H.A.Munseu)于1915年提出的,它反映了人的视觉系统感知彩色的方式,以色调、饱和度和强度三种基本特征量来感知颜色。 HSI模型与RGB模型关系 彩色图像可以采用RGB或HSI等颜色模型来描述,它们之间存在着严格的数学关系,可以相互转换。实际应用时,应该根据需要选择适当的颜色模型。 HSI颜色模型中的H分量是确定颜色的主要因素,当它发生变化时色调值也将变化;S分量越大(接近1),颜色越纯,S分量越小(接近0),颜色越接近纯灰色。由此可见,与RGB颜色模型相比,HSI颜色模型比较符合人眼对景物颜色的感知。 RGB模型与HSI模型比较 HSI模型与RGB模型转换关系

给定一幅RGB彩色格式图像,每个RGB像素的H分量可用下式得到: 在这里插入图片描述 其中, 在这里插入图片描述 饱和度分量由下式给出:

在这里插入图片描述 最后,亮度分量由下式给出: 在这里插入图片描述

采用上式将RGB图像转为HSI图像 在这里插入图片描述

四、 CIE-Lab颜色空间

同RGB颜色空间相比Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。下图所示为Lab颜色空间的图示;

在这里插入图片描述 RGB转Lab颜色空间

RGB颜色空间不能直接转换为Lab颜色空间,需要借助XYZ颜色空间,把RGB颜色空间转换到XYZ颜色空间,之后再把XYZ颜色空间转换到Lab颜色空间。 (1) RGB到XYZ颜色空间有如下关系: 在这里插入图片描述

仔细观察式(1.7),其中在这里插入图片描述 各系数相加之和为0.950456,非常接近于1,我们知道R/G/B的取值范围为[ 0,255 ],如果系数和等于1,则X的取值范围也必然在[ 0,255 ]之间,因此我们可以考虑等比修改各系数,使其之和等于1,这样就做到了XYZ和RGB在同等范围的映射。这也就是为什么代码里X,Y,Z会分别除以0.950456、1.0、1.088754。 (2) XYZ颜色空间到Lab颜色空间的转换 在这里插入图片描述 上面两个公式中,L*,a*,b*是最终的LAB色彩空间三个通道的值。X,Y,Z是RGB转XYZ后计算出来的值,Xn,Yn,Zn一般默认是95.047,100.0,108.883。 在这里插入图片描述上图展示了将原图转换到Lab色彩空间后,单通道结果。从左到右依次是L通道、a通道、b通道。其中L通道代表亮度通道,L单通道图像与gray图像结果相似。a通道在深绿部分的值最低,洋红部分值最高。

主程序

path='D:\cat.jpg'; %% RGB I=imread(path); figure(); subplot(231); imshow(I);%显示原始彩色图像title('原始图像'); gray = rgb2gray(I); r = I(:,:,1); %通道R g = I(:,:,2); %通道G b = I(:,:,3); %通道B % figure(); subplot(232); imshow(r);title('r'); % figure(); subplot(233); imshow(g);title('g'); % figure(); subplot(234); imshow(b);title('b'); %% HSI颜色空间 iHsi=rgb2hsi(I); figure(); hsi_H=iHsi(:,:,1); %色调 hsi_S=iHsi(:,:,2); %饱和度 hsi_I=iHsi(:,:,3); %亮度 subplot(131);imshow(hsi_H);title('H(色调)'); subplot(132);imshow(hsi_S);title('S(饱和度)'); subplot(133);imshow(hsi_I);title('I(亮度)'); %% CIE颜色空间 iLab = RGB2Lab(I); L=iLab(:,:,1); %色调 a=iLab(:,:,2); %饱和度 b=iLab(:,:,3); %亮度 figure(); subplot(131);imshow(L,[]);title('L(亮度)'); subplot(132);imshow(a,[]);title('a(深绿-洋红)'); subplot(133);imshow(b,[]);title('b(袅蓝-焦黄)');

rgb转hsi程序

function [hsi] = rgb2hsi(rgb) %UNTITLED3 此处显示有关此函数的摘要 % 此处显示详细说明 rgb=im2double(rgb); r=rgb(:,:,1); g=rgb(:,:,2); b=rgb(:,:,3); % H 单位弧度 num=0.5*((r-g)+(r-b)); den=sqrt( (r-g).^2 + (r-b).*(g-b) ); theta=acos(num./(den+eps)); %分母+eps防止为0 acos得到的是弧度 H0=theta.*(g>=b); %G>=B H1=(2*pi-theta).*(g 1.0 || max(max(B)) > 1.0 % R = double(R) / 255; % G = double(G) / 255; % B = double(B) / 255; % end % Set a threshold T = 0.008856; % (6/29)^3 [M, N] = size(R); s = M * N; RGB = [reshape(R,1,s); reshape(G,1,s); reshape(B,1,s)]; % RGB to XYZ MAT = [0.412453 0.357580 0.180423; 0.212671 0.715160 0.072169; 0.019334 0.119193 0.950227]; XYZ = MAT * RGB; % Normalize for D65 white point % 调整x y z的取值范围在[0,255] X = XYZ(1,:) / 0.950456; Y = XYZ(2,:); Z = XYZ(3,:) / 1.088754; XT = X > T; YT = Y > T; ZT = Z > T; Y3 = Y.^(1/3); % 网络上说要除以Xn Yn Zn,但是除了以后范围跑了 % X=X./95.047; % Y=Y./100.0; % Z=Z./108.883; % ~XT:举证0 1 取反 fX = XT .* X.^(1/3) + (~XT) .* (7.787 .* X + 4/29); fY = YT .* Y.^(1/3) + (~YT) .* (7.787 .* Y + 4/29); fZ = ZT .* Z.^(1/3) + (~ZT) .* (7.787 .* Z + 4/29); % L = reshape(YT .* (116 * Y3 - 16.0) + (~YT) .* (903.3 * Y), M, N); L = reshape( 116 * fY - 16.0, M, N); a = reshape(500 * (fX - fY), M, N); b = reshape(200 * (fY - fZ), M, N); if nargout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有