matlab下 hsi转rgb代码

hsi应该是不能在电脑上显示的,要转化为rgb图像。表述或许不准确,体会一下吧。

imshow()函数默认接收的是rgb图像,按RGB对应矩阵中的值显示。或者显示灰度图imshow(I(:,:,1));

在hsi输入下,hsi矩阵的值会被当成rgb的值来输出。具体结果见附图。


function rgb = hsi2rgb( hsi )
%rgb = hsi2rgb( hsi ) 将hsi图像转化为rgb
%hsi(:,:,1)色调,范围0-1 double 以下同
%hsi(:,:,2)饱和度 
%hsi(:,:,3)亮度
%


hsi = im2double(hsi);
H = hsi(:,:,1)*2*pi;
S = hsi(:,:,2);
I = hsi(:,:,3);

%执行转化
R = zeros(size(hsi,1),size(hsi,2));
G = zeros(size(hsi,1),size(hsi,2));
B = zeros(size(hsi,1),size(hsi,2));

%RG扇形 0 <= H < 2*pi/3
idx = find( (0 <= H) & (H<2*pi/3) );
B(idx) = I(idx) .* (1 - S(idx));
R(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx)) ./ cos(pi/3 - H(idx)) );
G(idx) = 3*I(idx) - (R(idx) + B(idx));

%BG扇形 2*pi/3 <= H < 4*pi/3
idx = find( (2*pi/3 <= H ) & ( H < 4*pi/3) );
R(idx) = I(idx) .
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值