IHS变换融合算法相关的基础知识和原理请参考博文--色彩变换1。这里直接续上讲其变种模型的实现。
1、三角IHS变换
//进行正变换
fI = RGBsum/3;
max_min_value(dRGB,nRastercount,dmax,dmin);
fS = (RGBsum - 3*dmin)/RGBsum;
if (dmin == dRGB[0])//R最小
{
if((RGBsum-3*dRGB[0]) != 0)
{
fH = (dRGB[2]-dRGB[0])/(RGBsum-3*dRGB[0])+1;
}
else //加判断预防三数相等情况,一般都是true
{
fH = (dRGB[2]-dRGB[0])/(RGBsum-3*dRGB[0]+1)+1;
}
}
if (dmin == dRGB[2])//B最小
{
if((RGBsum-3*dRGB[2]) != 0)
{
fH = (dRGB[1]-dRGB[2])/(RGBsum-3*dRGB[2]);
}
else
{
fH = (dRGB[1]-dRGB[2])/(RGBsum-3*dRGB[2]+1);
}
}
if (dmin == dRGB[1])//G最小
{
if((RGBsum-3*dRGB[1]) != 0)
{
fH = (dRGB[0]-