常熟网站建设书生商友,免费的十大免费货源网站,网络营销策划,应用开发框架HVS HSV(Hue, Saturation#xff0c;Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间#xff0c;也称六角锥体模型(Hexcone Model)。 这个模型中颜色的参数分别是#xff1a;色调#xff08;H#xff09;#xff0c;饱和度#xff08;S#xff09;…HVS HSV(Hue, SaturationValue)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间也称六角锥体模型(Hexcone Model)。 这个模型中颜色的参数分别是色调H饱和度S明度V。
色调H 用角度度量取值范围为0°360°从红色开始按逆时针方向计算红色为0°绿色为120°蓝色为240°。它们的中间补色是黄色为60°青色为180°紫色为300°
饱和度S 饱和度S表示颜色接近光谱色的程度。 一种颜色可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大颜色接近光谱色的程度就愈高颜色的饱和度也就愈高。饱和度高颜色则深而艳。光谱色的白光成分为0饱和度达到最高。通常取值范围为0%100%值越大颜色越饱和。
明度 明度表示颜色明亮的程度对于光源色明度值与发光体的光亮度有关对于物体色此值和物体的透射比或反射比有关。通常取值范围为0%黑到100%白。
与RGB RGB和CMY颜色模型都是面向硬件的而HSVHue Saturation Value颜色模型是面向用户的。 HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察就可以看到立方体的六边形外形。六边形边界表示色彩水平轴表示纯度明度沿垂直轴测量。
伪彩图 伪彩色(pseudo-color)图像的每个像素值实际上是一个索引值或代码该代码值作为色彩查找表CLUT(Color Look-Up Table)中某一项的入口地址根据该地址可查找出包含实际R、G、B的强度值。这种用查找映射的方法产生的色彩称为伪彩色生成的图像为伪彩色图像。用这种方式产生的色彩本身是真的不过它不一定反映原图的色彩。在VGA显示系统中调色板就相当于色彩查找表。从16色标准VGA调色板的定义可以看出这种伪彩色的工作方式。 彩色查找表CLUT是一个事先做好的表表项入口地址也称为索引号。例如16种颜色的查找表0号索引对应黑色…15号索引对应白色。彩色图像本身的像素数值和彩色查找表的索引号有一个变换关系这个关系可以使用Windows 95/98定义的变换关系也可以使用你自己定义的变换关系。使用查找得到的数值显示的彩色是真的但不是图像本身真正的颜色它没有完全反映原图的彩色。 伪彩色一般用于65K色以下的显示方式中标准的调色板是在256K色谱中按色调均匀地选取16种或256种色彩。一般应用中有的图像往往偏向于某一种或几种色调此时如果采用标准调色板则色彩失真较多。因此同一幅图像采用不同的调色板显示可能会出现不同的色彩效果。 伪彩色图像处理是把一幅单色图像转变为彩色图像的技术。在数字图像处理中广泛地应用了伪彩色图像显示。将彩色图像转换为灰度图像是一个不可逆的过程灰度图像也不可能变换为原来的彩色图像。而某些场合需要将灰度图像转变为彩色图像伪彩色处理主要是把黑白的灰度图像或者多波段图像转换为彩色图像的技术过程。其目的是提高图像内容的可辨识度。其中方法有灰度分层法灰度变换法。 伪彩色处理是根据特定的准则对灰度值赋以彩色的处理。由于人眼对彩色的分辫率远高于对灰度差的分辨率所以这种技术可用来识别灰度差较小的像素。这是一种视觉效果明显而技术又不是很复杂的图像增强技术。灰度图像中如果相邻像素点的灰度相差大人眼将无法从图像中提取相应的信息因为人眼分辨灰度的能力很差一般只有几十个数量级但是人眼对彩色信号的分辫率却很强这样将黑白图像转换为彩色图像后人眼可以提取更多的信息量。 伪彩色处理的基本原理是将黑白图像或者单色图像的各个灰度级匹配到彩色空间中的一点从而使单色图像映射成彩色图像。对黑白图像中不同的灰度赋予不同的彩色。值得注意的是伪彩色虽然能将黑白灰度转化为彩色但这种彩色并不是真正表现图像的原始颜色而仅仅是一种便于识别的伪彩色。 伪彩色处理技术的实现方法有多种如密度分层法、灰度级-彩色变换法、频域滤波法等等 [2] 。其中灰度级-彩色变换伪色彩处理技术可以将灰度图像变为具有多种颜色渐变的连续彩色图像。该方法先将灰度图像送入具有不同变换特性的红、绿、蓝三个变换器然后再将三个变换器的不同输出分别送到彩色显像管的红、绿、蓝枪再合成某种颜色同一灰度由三个变换器对其实施不同变换使三个变换器输出不同从而不同大小灰度级可以合成不同颜色。 最简单的伪彩色处理方法是简单的伪彩色指定。 一幅黑白图像可以看成是二维光强度函数我们按光的强弱分成2m个灰度级比如m4即16个灰度级。使每个灰度级指定为某种伪彩色即可。比如血管与肌肉在黑白图中只差一个灰度级但我们可以指定血管为红色、肌肉为绿色于是图像就极其分明这在计算机中只需把对应的两种四位的二进制数字分别对应红光和绿光的输出即可。 为了得到灰度分层有更宽范围的伪彩色图像我们可采用灰度映射伪彩色的方法为了使灰度有更宽范围的伪彩色首先要对黑白图像做直方图均衡化处理使图像中原有的灰度级的概率密度更均匀再把均衡化的图像看成是RGB3幅单色图像进行独立的映射变换。
核医学与伪彩图 核医学中使用伪彩图展示PET图像正常PET图像是灰度图像。灰度图像只能使用从黑色到白色的灰度变换表达细胞代谢活跃值。灰度图像不能直观展现出数值分布。伪彩图可以帮助医生将灰度图像分布在色彩变换更为明显的彩色图像上 下图是左侧的PET伪彩图CT灰度图和右侧的PET灰度图明显可以看到伪彩图更清楚的表现出了高代谢的病灶位置结合CT的解刨位置帮着医生区分病灶范围
计算伪彩图 具体计算 1.灰度图像是二维short类型数值图像img 2.预定义一个伪彩图从0到255个RGB值组成一个256的数组lut 3.设定一个灰度范围range将img中的灰度值对照range归一化到0到255的范围内并通过查lut得到对应的RGB颜色或者将img通过窗宽和窗位转换为0到255的范围内并通过查lut得到对应的RGB颜色
使用灰度值范围来计算RGB 计算RGB颜色的long值可以通过RGB宏
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))8))|(((DWORD)(BYTE)(b))16)))long color m_pLut[255];
for(y 0; y height; y){for(x 0; x width; x){double value pPixel[x y * width];c UCHAR(255 * float(value - min) / (max - min)); color m_pLut[c];pPixel[x y * width] color;}
}使用窗宽窗位来计算RGB 具体计算 1.灰度图像是二维short类型数值图像img 2.将img根据窗宽和窗位的计算所有的灰度值都归一化到0到255的范围内 3.查LUT表生成对应的RGB值
void ConvertDigitImageToGrayImageByWindowLevelAndWindowWidth(short* digitImage, short* grayImage, int size, int window_level, int window_width){double rate 256.0 / window_width;for (size_t i 0; i size; i){int tmp 128.0 (grayImage[i] - window_level)*rate;if (tmp 0){tmp 0;}else if (tmp 255) {tmp 255;}digitImage[i] tmp;}
}short* pDigitImage new short[size]{0};
long* pRGBImage new long[size]{0};
// 1.窗宽窗位转换
ConvertDigitImageToGrayImageByWindowLevelAndWindowWidth(pDigitImage, pPixel,size,500,1000);// 2.查LUT生成RGB值
long color m_pLut[255];
for(y 0; y height; y){for(x 0; x width; x){int value pDigitImage[x y * width]; color m_pLut[value];pRGBImage[x y * width] color;}
}下图是不同伪彩LUT的效果图
脑电波与伪彩图 脑电信号系统中也有伪彩图这一功能。在脑电软件中伪彩图被成为地形图或者热力图数值和脑电导联信号的强度有关具体怎么计算就不得而知了。
参考资料
1.HSV颜色模型 2.伪彩色图像