RGB 和HSI

彩色模型也称彩色空间或彩色系统,是用来精确标定和生成各种颜色的一套规则和定义。它的用途是在某些标准下用通常可接受的方式简化彩色规范。彩色模型通常可以用坐标系统来描述,而位于系统中的每种颜色都由坐标空间中的单个点来表示。

如今使用的大部分彩色模型都是面向应用的或是面向硬件的。如RGB 、面向彩色打印机的CMY(青  ,深红,黄),CMKY(青,深红,黄,黑),HSI(色调,饱和度,亮度)模型非常符合人眼描述和解释颜色的方式。

RGB模型是工业界的一种颜色标准。通过对红绿蓝3种颜色亮度的变化以及它们相互之间的叠加来得到各种各样的颜色的,该标准几乎包括了人类视觉所能感知的所有颜色,是目前运用最广的颜色模型之一。

CMY是采用青,品红,黄色三种基本原色按一定比例合成颜色的方法。由于颜色的显示不是直接来源于光线的色彩,而是光线被物体吸收掉一部分之后反射回来剩余光线所产生的。因此CMY模型又称为减色法混色模型,当光线都被吸收时成为黑色,都被反射时为白色。

HSI 模型是从人的视觉系统出发,直接使用颜色三要素色调,饱和度和亮度,有时也翻译为密度或灰度来描述颜色。

     亮度:是指人眼感觉光的明暗程度。光的能量越大,亮度越大。

色调:是才射最重要的属性,决定颜色的本质,有物体反射光线中占优势的波长来决定,不同的波长产生不同的颜色感觉,我们叫某一种颜色为红色,橙色,黄色,这是我们规定的一种色调。

饱和度:是指颜色的深浅和浓淡程度,饱和度越高,颜色越深。饱和度的深浅和白色的比例有关,白色比例越多,饱和度越低。

从RGB到CMY转换:

 

I=imread('lena.jpg');
I=rgb2gray(I);%如果不转化化为灰度为图2
imshow(I);
cmy=imcomplement(I);
figure(2);
imshow(cmy)

结果显示:

图1

图2

RGB  转换为HSI

function hsi=rgb2hsi(rgb)
%hsi=rgb2hsi(rgb)把一幅RGB图像转化为HSI图像
% 输入图像是一个彩色像素的M*N*3的数组
% 其中每一个彩色像素都在特定空间位置的彩色图像中对应红绿蓝3个分量
% 假如素有的RGB分量是均衡的,那么HSI转换及时未定义的
% 输入的图像可能是double(取值范围【0,1】)uint8 \uint16
% 输出的HSI图像是double
% 其中hsi(:,:,1)是色度分量,它的范围是除以2*pi后的[0,1]
% hsi(:,:,2)是饱和度分量,范围是[0,1]
% hsi(:,:,3)是亮度,范围[0,1]
%抽取图像分量
rgb=im2double(rgb);
r=rgb(:,:,1);
g=rgb(:,:,2);
b=rgb(:,:,3);

%执行转换方程
num=0.5*((r-g)+(r-b));
den=sqrt((r-g).^2+(r-b).*(g-b));
theta=acos(num./(den+eps));%防止除数为0
H=theta;
H(b>g)=2*pi-H(b>g);
H=H/(2*pi);
num=min(min(r,g),b);
den=r+g+b;
den(den==0)=eps;%防止除数为0
S=1-3.*num./den;
H(S==0)=0;
I=(r+g+b)/3;
%将3个分量合成一个HSI图像
hsi=cat(3,H,S,I);

 

然后输入

figure;
subplot(1,2,1);
rgb=imread('lena.jpg');
% rgb=rgb2gray(rgb);
imshow(rgb);
title('rgb');
subplot(1,2,2);
hsi=rgb2hsi(rgb);
imshow(hsi);
title('hsi');

结果是:

 

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值