数字图像处理——RGB与HSI的相互转换

数字图像处理——RGB与HSI的相互转换

> 一、RGB->HSI

clc,clear;

%图像读取及预处理
Image= double(imread('2.jpg'));
IMAGE1= Image(:,:,1);
[lines,samples,bands] = size(Image);
IMG1 = reshape(IMAGE1,1,[]);
MAX = max(IMG1);
MIN = min(IMG1);

HSI = zeros(lines,samples,3); %用三维向量分别存储HSI(色度,饱和度,亮度)
for i = 1:lines
    for j = 1:samples
        if( Image(i,j,1)== Image(i,j,2) && Image(i,j,2) ==Image(i,j,3))
            JD = 0;
        else
        JD = 180*acos((2*Image(i,j,1)-Image(i,j,2)-Image(i,j,3))/(2*((Image(i,j,1)-Image(i,j,2))^2+(Image(i,j,1)-Image(i,j,3))*(Image(i,j,2)-Image(i,j,3)))^0.5))/pi;
        end
        if(Image(i,j,2)>=Image(i,j,3))
            HSI(i,j,1) = JD;
        else
            HSI(i,j,1) = 360 - JD;
        end
        HSI(i,j,2) = 1-3*min(min(Image(i,j,1),Image(i,j,2)),Image(i,j,3))/(Image(i,j,1)+Image(i,j,2)+Image(i,j,3));
        HSI(i,j,3) = (Image(i,j,1)+Image(i,j,2)+Image(i,j,3))/3;
    end
end

> 二、HSI->RGB

Image1 = zeros(lines,samples,3);
for i = 1:lines
    for j = 1:samples
        if(HSI(i,j,1)>=0 && HSI(i,j,1)<120)
            Image1(i,j,3) = round(HSI(i,j,3)*(1-HSI(i,j,2)));
            Image1(i,j,1) = round(HSI(i,j,3)*(1+HSI(i,j,2)*cos(pi*HSI(i,j,1)/180)/cos(pi*(60-HSI(i,j,1))/180)));
            Image1(i,j,2) = round(3*HSI(i,j,3)- Image1(i,j,1)-Image1(i,j,3));            
        end
    
        if(HSI(i,j,1)>=120 && HSI(i,j,1)<240)
            Image1(i,j,1) = round(HSI(i,j,3)*(1-HSI(i,j,2)));
            Image1(i,j,2) = round(HSI(i,j,3)*(1+HSI(i,j,2)*cos(pi*(HSI(i,j,1)-120)/180)/cos(pi*(180-HSI(i,j,1))/180)));
            Image1(i,j,3) = round(3*HSI(i,j,3)- Image1(i,j,1)- Image1(i,j,2));          
        end
        
        if(HSI(i,j,1)>=240 && HSI(i,j,1)<360)
            Image1(i,j,2) = round(HSI(i,j,3)*(1-HSI(i,j,2)));
            Image1(i,j,3) = round(HSI(i,j,3)*(1+HSI(i,j,2)*cos(pi*(HSI(i,j,1)-240)/180)/cos(pi*(360-HSI(i,j,1))/180)));          
            Image1(i,j,1) = round(3*HSI(i,j,3)- Image1(i,j,2)- Image1(i,j,3));
        end
    end
end
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值