遥感影像多光谱与全色IHS融合

目前常用的颜色模型一种是RGB三原色模型,另外一种广泛采用的颜色模型是亮度、色调、饱和度((IHS)颜色模型。亮度表示光谱的整体亮度大小,对应于图像的空间信息属性,色调描述纯色的属性,决定于光谱的主波长,是光谱在质的方面的区别,饱和度表征光谱的主波长在强度中的比例,色调和饱和度代表图像的光谱分辨率。
IHS变换图像融合就是建立在IHS空间模型的基础上,其基本思想就是在IHS空间中,将低空间分辨率的多光谱图像的亮度分量用高空间分辨率的灰度图象替换。
IHS变换融合法基本流程:
这里写图片描述
基本步骤:
(1) 将多光谱影像重采样到与全色影像具有相同的分辨率。
(2) 将多光谱图像的R、G、B三个波段转换到IHS空间,得到I、H、S三个分量;
(3) 以I分量为参考,对全色影像进行直方图匹配
(4) 用直方图匹配后的全色影像替代I分量,然后同H、S分量一起逆变换到RGB空间,从而得到融合图象,

RGB与IHS变换的基本公式:
RGB->HIS:
这里写图片描述
HIS->RGB:
这里写图片描述这里写图片描述这里写图片描述

代码:

 void RGBtoHIS(uchar r,uchar g,uchar b,float* HIS)
 {
    float H;
    float I;
    float S;

    float angle;
    float R,G,B;
    R=((float)r)/255.0;         //归一化
    G=((float)g)/255.0;
    B=((float)b)/255.0;


    I=(R+G+B)/3.0;
    S=1-min(min(R,G),B)/I;
    if (S ==0)
    {
        H = 0;
    }
    if (r == g && r ==b)
    {
        b = 0;
    }
    else
    {
        angle=acos(0.5*(R-G+R-B)/(sqrt((R-G)*(R-G)+(R-B)*(G-B))));
        angle=angle*180.0/PI;
    }
    if (B>G)
    {
        H=360-angle;        //H量计算
    }
    else
    {
        H=angle;
    }


    H=H*255.0/360.0;
    I=I*255.0;
    S=S*255.0;

    HIS[0]=H;
    HIS[1]=I;
    HIS[2]=S;
 }
void HIStoRGB(float H,float I,float S,float* m)
{
    float s=(S)/255;
    float i=(I)/255;
    float h=(H)*360/255;
    if (h<0)
    {h=h+360;
    }
    if(h<120&&h>=0)
    {
        m[0]=i*(1.0+((s*cos(h*PI/180))/cos((60-h)*PI/180)));
        m[2]=i*(1.0-s);
        m[1]=3.0*i-(m[0]+m[2]);
    }

    if(h<240&&h>=120)
    {
        h=h-120;
        m[1]=i*(1.0+((s*cos(h*PI/180))/cos((60-h)*PI/180)));
        m[0]=i*(1.0-s);
        m[2]=3.0*i-(m[0]+m[1]);
    }
    if(h>=240&&h<=360)
    {
        h=h-240;
        m[<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值