遥感影像彩色空间变换
2013-07-22 17:42
281 查看
在影像处理系统中,彩色空间变换时一个常见的基础功能,虽然功能不是特别复杂,但是也遇到了一些问题,毕竟第一次做图像处理的工作。在此,先介绍影像的RGB模型和HSI模型之间的转换。
在HSI模型中,H:Hue 代表色调(纯度、颜色)
S:Saturation 代表饱和度
I: Intensity 代表亮度
RGB转换为HSI模型的公式为:
HSI模型到RGB模型的公式为:
,有了公式之后,写代码就比较简单了。
RGB转换为HSI代码,单个像素转换的。
HSI模型转换为RGB模型的代码,也是单个像素的。
同一副影像先由RGB转换到HSI之后,然后再转换到RGB时,理论上的像素值是没有变化的,但是实际上浮点运算会有误差,但是不过误差不大。
在HSI模型中,H:Hue 代表色调(纯度、颜色)
S:Saturation 代表饱和度
I: Intensity 代表亮度
RGB转换为HSI模型的公式为:
HSI模型到RGB模型的公式为:
,有了公式之后,写代码就比较简单了。
RGB转换为HSI代码,单个像素转换的。
bool CRgbIhsAlgo::Rgb2Ihs(BYTE R,BYTE G,BYTE B,float &i,float &h,float &s) { float rValue = (float)R; float gValue = (float)G; float bValue = (float)B; i = (float)(rValue + gValue + bValue); if(i == 0) i = 1.0; //防止除数为0 float theta = 0.0; float numerator = ((rValue-gValue)+(rValue-bValue))*0.5; //分子 float denominator = sqrt(pow(rValue-gValue,2)+(rValue-bValue)*(gValue-bValue)); //分母
denominator += 0.00000001; //加上一个很小的数,防止除数为0 float x = numerator/denominator; theta = acos(x); if (B<=G) { h = theta/(2*3.1415926); } else if (B>G) { h = (2*3.1415926-theta)/(2*3.1415926); } s = 1.0f - 3 * min(min(rValue,gValue),bValue)/i; i = i/3; return true; }
HSI模型转换为RGB模型的代码,也是单个像素的。
//单个像素彩色逆变换的函数 static void HIStoRGB(float fh, float fi, float fs, BYTE& r, BYTE& g, BYTE& b) { int R, G, B; float pi2 = 3.1415926*2; fh *= pi2; //将H还原到0-360° //注意三角函数的参数是弧度制 //H在0-120度之间 if((fh < pi2/3.0) && (fh >= 0.0)) { B = fi*(1-fs); R = fi*(1.0 + fs * cos(fh)/cos(pi2/6.0-fh)); G = 3*fi - (R + B); } //H在120-240度之间 else if((fh < 2*pi2/3.0) && (fh >= pi2/3.0)) { fh -= pi2/3.0; R = fi*(1-fs); G = fi*(1.0 + fs * cos(fh)/cos(pi2/6.0-fh)); B = 3*fi - (R + G); } //H在240-360度之间 else { fh -= 2*pi2/3.0; G = fi*(1-fs); B = fi*(1.0 + fs * cos(fh)/cos(pi2/6.0-fh)); R = 3*fi - (B + G); } r = R>255?255:R; g = G>255?255:G; b = B>255?255:B; }
同一副影像先由RGB转换到HSI之后,然后再转换到RGB时,理论上的像素值是没有变化的,但是实际上浮点运算会有误差,但是不过误差不大。
相关文章推荐
- 16位彩色遥感影像显示
- python处理遥感影像---采用MODIS植被数据(VCC/VCF)产品MOD44B来分析我国近十二年(如:2000~2011年)的植被空间分布变化
- 变换数组 要求空间复杂度为O(1)
- Matlab读取、转换遥感影像到普通影像
- 遥感影像的比例尺和分辨率的关系
- 屏幕空间变换在透视除法裁剪的DNS空间后进行和glViewport
- 1 空间描述和变换
- 图形学 坐标系空间变换
- 遥感影像的比例尺和分辨率
- 关于 法向量 的世界空间变换矩阵
- 转:如何在ERDAS中实现用矢量线界裁切遥感影像
- 高分辨率遥感影像应用研究----道路提取
- 颜色空间变换(RGB-HSV)
- OpenGL中的空间变换
- 遥感影像、DEM免费下载以及MPT制作
- 国外遥感影像如何下载之利用USGS网站影像下载无需JAVA
- OpenCV图像处理(2)-空间变换,几何变换,阈值处理
- 数字图像处理matlab版第三章亮度变换与空间滤波
- openCV—彩色图像R、G、B分量的提取与合并及其相关颜色空间的转化
- “生动”讲解——矩阵的空间变换