RGB和HSI相互转换 matlab实现 色调域均值滤波

RGB转HSI

function hsi=rgb2hsi(rgb)
% rgb转hsi

rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);

theta=acos(0.5*((r-g)+(r-b))./(((r-g).^2+(r-b).*(g-b)).^0.5+eps));

hsi(:,:,1)=(theta.*(b<g+(b==g))+(2*pi-theta).*(b>g))/(2*pi);

hsi(:,:,2)=1-3*(min(min(r,g),b))./(r+g+b+eps);

hsi(:,:,3)=(r+g+b)/3;

HSI转RGB

function rgb=hsi2rgb(hsi)
% hsi转rgb

h=hsi(:,:,1);
s=hsi(:,:,2);
i=hsi(:,:,3);

[m,n,~]=size(hsi);

r=zeros(m,n);
g=zeros(m,n);
b=zeros(m,n);

h=h*2*pi;

hr=(((h>0)+(h==0)).*(h<(2*pi/3)))>0;
hg=(((h>(2*pi/3))+(h==(2*pi/3))).*(h<(4*pi/3)))>0;
hb=(((h>(4*pi/3))+(h==(4*pi/3))).*(h<(2*pi)))>0;

h(hg)=h(hg)-(2*pi/3);
h(hb)=h(hb)-(4*pi/3);

b(hr)=i(hr).*(1-s(hr));
r(hr)=i(hr).*(1+(s(hr).*cos(h(hr))./(cos(pi/3-h(hr))+eps)));
g(hr)=3*i(hr)-(r(hr)+b(hr));

r(hg)=i(hg).*(1-s(hg));
g(hg)=i(hg).*(1+(s(hg).*cos(h(hg))./(cos(pi/3-h(hg))+eps)));
b(hg)=3*i(hg)-(r(hg)+g(hg));

g(hb)=i(hb).*(1-s(hb));
b(hb)=i(hb).*(1+(s(hb).*cos(h(hb))./(cos(pi/3-h(hb))+eps)));
r(hb)=3*i(hb)-(g(hb)+b(hb));

rgb=cat(3,r,g,b);

rgb=uint8(rgb*255);

均值滤波

% 均值滤波
function out=meanfilter(ksize,in)
% 参数分别指定kernel size和原始图像
[h,w,d]=size(in);

if d==1
    im=in;
    padim=padarray(im,[floor(ksize/2),floor(ksize/2)],'symmetric','both');

    for i=1:h
        for j=1:w
            temp=double(padim(i:i+ksize-1,j:j+ksize-1));
            out(i,j)=mean(mean(temp));
        end
    end

else
    for k=1:d
        im=in(:,:,k);
        padim=padarray(im,[floor(ksize/2),floor(ksize/2)],0,'both');

        for i=1:h
            for j=1:w
                temp=double(padim(i:i+ksize-1,j:j+ksize-1));
                out(i,j,k)=mean(mean(temp));
            end
        end
    end
end

end

效果演示

原图
原始图片
转HSI
在这里插入图片描述
在H域做均值滤波
在这里插入图片描述
转回RGB
在这里插入图片描述

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RGBHSI是两种不同的颜色空间表示方法,它们之间的转换可以帮助我们更好的理解和处理彩色图像。下面是实验RGBHSI相互转化的结果分析: 1. RGBHSI RGB颜色空间是最常用的颜色表示方法之一,它将颜色表示为红、绿、蓝三个分量的组合。而HSI颜色空间则将颜色表示为色相、饱和度、亮度三个分量的组合。在RGBHSI的过程中,首先需要将RGB颜色空间的三个分量转化为[0,1]范围内的值,然后根据一定的公式计算出HSI颜色空间的三个分量。在实验中,我们可以通过对不同颜色的RGB值进行转换,观察HSI分量的变化,以及颜色的变化情况。 2. HSIRGB 同样的,在HSIRGB的过程中,需要先将HSI颜色空间的三个分量转化为[0,1]范围内的值,然后根据一定的公式计算出RGB颜色空间的三个分量。在实验中,我们可以通过对不同颜色的HSI值进行转换,观察RGB分量的变化,以及颜色的变化情况。 3. 结果分析 通过RGBHSI相互转化的实验,我们可以得出以下结论: (1) RGBHSI是两种不同的颜色空间表示方法,它们之间的转换可以帮助我们更好的理解和处理彩色图像。 (2) 在RGBHSI的过程中,色相表示颜色的种类,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。 (3) 在HSIRGB的过程中,亮度分量可以直接转化为RGB的三个分量,而色相和饱和度分量则需要通过一定的计算公式得到。 (4) 在实验中,我们可以通过对不同颜色的RGB值或HSI值进行转换,观察颜色的变化情况,以更好地理解颜色空间转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值