伪彩色增强算法
2009-9-7
由于人眼的彩色敏感细胞能分辨出几千种彩色色调和亮度,但对黑白灰度级却不敏感。热成像测温系统所产生的红外图像为黑白灰度级图像,灰度值动态范围不大,人眼很难从这些灰度级中获得丰富的信息。为了更直观地增强显示图像的层次,提高人眼分辨能力,对系统所摄取的图像进行伪彩色处理,从而达到图像增强的效果,使图像信息更加丰富。
在实际应用中,往往需要用伪彩色图像来符合人们的视觉习惯,例如对受热物体所成的像进行伪彩色时,将灰度低的区域设置在蓝色附近(或蓝灰、黑等),而灰度级高的区域设置在红色附近(或棕红、白等),以方便人们对物体的观察。
感知色彩空间变换
IHS空间是一个常用的感知颜色的空间。I是指彩色光的强度,对人眼的感觉就是彩色光的亮度;H为色调,它是用来区分不同的彩色特征的,是以光波长为基础的;S为饱和度,它反映了彩色的浓淡,即表示彩色光中纯光谱波长被白光冲淡的程度。
从IHS坐标到RGB坐标的变换为:
式中,
,
。
基于IHS空间的伪彩色编码原理: 任意空间
处的灰度值可以用
来表示
。
为了使伪彩色图像的亮度和灰度图像的灰度具有一致性,可令
为了使不同的灰度对应不同的颜色,可令
对每一个灰度值
来说,S可设置成如下的分段函数:
当k取1.5时,可使每一种颜色都得到最大饱和度。到此为止,根据像素的灰度值得到了对应的I,H 和S值,将I,H,S值变换为对应的R,G,B 值。
彩虹编码与热金属编码
彩虹编码和热金属编码都属于灰度级彩色变换方法。该方法是把图像的各个灰度按照一定的函数关系映射成颜色渐变的彩色,不同的灰度级对应不同的彩色。根据色度学原理,
任何一种颜色都可以由红、绿、蓝3基色按不同的比例来合成,因此图像的伪彩色处理先要设定红、绿、蓝3个基色的函数关系,使对应的每一个函数都有相应的红、绿、蓝输出,之后3者合成一个色。
以彩虹编码算法为例,以下为彩虹编码的灰度变换示意图:
从图中可以看出,在0-255的灰度范围内,划分了固定的4个区域(低温O-L1、中低温L1-L2、中温L2-L3和高温L3-L4)。如图 (a),红色变换将任何低于L2的灰度级映射成最暗的红色,在L2到L3之间红色输入线性增加,灰度级在L3到255区域内映射保持不变(等于最亮的红色调)。其它彩色映射与此类似。通过图(a)红色的变换函数、图(b)绿色的变换函数和图(c)蓝色的变换函数的合成,得到图(d)合成变换函数。低温区域为蓝色变换;中低温区域的前半部分是以蓝色为主、绿色为辅的变化,后半部分则是以绿色为主、蓝色为辅的变化;中温区域为红色的线性变化,绿色保持不变,产生黄色编码值;高温区域则是以红色为主色调,绿色输入线性递减,产生高温区的编码值。
热金属编码:
和彩虹编码类似,以下为C#的算法实现
if(gray <=0.25)
{
*red = 0;
*green = 0;
*blue = 4.0 * gray;
}
else if(gray <= 0.375)
{
*red = 4.0 * (gray - 0.25);
*green = 0;
*blue = 1.0;
}
else if(gray < 0.5)
{
*red = 4.0 * (gray - 0.25);
*green = 0;
*blue = 1.0 - 8.0 * (gray - 0.375);
}
else if(gray == 0.5)
{
*red = 1.0;
*green = 0;
*blue = 0;
}
else if(gray <= 0.75)
{
*red = 1.0;
*green = 4.0 * (gray - 0.5);
*blue = 0;
}
else
{
*red = 1.0;
*green = 1.0;
*blue = 4.0 * (gray - 0.75);
}
软件仿真截图:
依次为灰度图,感知颜色空间变换,彩虹编码,热金属编码:
因篇幅问题不能全部显示,请点此查看更多更全内容