matlab rgb2ntsc函数,matlab 颜色模型之间的转换

hsv2rgb        HSV模型转换为RGB模型

ntsc2rgb       NTSC模型转换为RGB模型

rgb2hsv         RGB模型转换为HSV模型

rgb2ntsc       RGB模型转换为NTSC模型

rgb2ycbcr     RGB模型转换为YCbCr模型

ycbcr2rgb     YCbCr模型转换为RGB模型

%%%%%%%%%%

彩色图向HSI模型的转换,matlab 里面没现成的函数,需自己编,程序如下:

function  [H,S,I]=rgb2hsi(im1);

im3=im1;

im1=im2double(im1);

[m,n,q]=size(im1);

% 获取图像的 RGB 3个通道

R=im1(:,:,1);

G=im1(:,:,2);

B=im1(:,:,3);

% 改变通道来观察图像

figure,subplot(1,3,1),imshow(cat(3,R*0.5,G,B)),title('R通道减半');

set(gcf,'outerposition',get(0,'screensize'));

set(gcf,'NumberTitle','off','Name','改变通道来观察图像');

subplot(1,3,2),imshow(cat(3,R,G*2,B)),title('G通道翻倍');

subplot(1,3,3),imshow(cat(3,R,G,zeros(m,n))),title('B通道为0');

% 观察HSI通道图像

% 因系统没有rgb2hsi函数,只有rgb2hsv函数,所以自己编写程序实现

H=zeros(m,n);

S=H;

for i1=1:m

for i2=1:n

numerator=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2));

denominator=sqrt((R(i1,i2)-G(i1,i2))^2+(R(i1,i2)-B(i1,i2))*(G(i1,i2)-B(i1,i2)));

theta=acos(numerator/denominator)*180/pi;

if(B(i1,i2)<=G(i1,i2))

H(i1,i2)=theta;

else

H(i1,i2)=360-theta;

end

min1=min(R(i1,i2),G(i1,i2));

min1=min(B(i1,i2),min1);

S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2))*min1;

end

end

I=(R+G+B)/3;

figure,subplot(1,3,1),imshow(H,[]),title('色度图H');

set(gcf,'outerposition',get(0,'screensize'));

set(gcf,'NumberTitle','off','Name','HSI通道图像');

subplot(1,3,2),imshow(S),title('饱和度图S');

subplot(1,3,3),imshow(I),title('强度图I');

%%%%%%%%%%%

RGB to Lab转换:

cform = makecform('srgb2lab');

lab_he = applycform(he,cform);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值