灰度的线性变换

功能:

通过将图像中的所有的点的灰度按照线性灰度变换函数进行变换,最常见的线性变换就是反转。

算法:

灰度的线性变换用到的线性灰度变换函数f(x)是一个一维线性函数:

f(x) = kx + d,应用到图像上就带人各像素点的灰度值:Gd=f(Gs) = k*Gs + d;其中k为线性函数的斜率,d为线性函数在y轴的截距。Gs表示输入图像的灰度,Gd表示输出图像的灰度。

当k>1时,输出图像的对比度将增大;

当k<1时,输出图像的对比度将减小;

当k=1且d≠0时,操作使所有的灰度值上移或下移,其效果是使整个图像变暗或变亮。

当k<0,暗区域将变亮,亮区域将变暗,点运算完成了图形求补运算。

特殊情况:1、当k=1,d=0时,输出图像与原图像相同。2、当k=-1,d=255时,输出图像的灰度正好相反。

实现代码:

for( int i=0; i<iPixelHeight; i++ )
{
    for( int j=0; j<iPixelWidth; j++ )
 {
     //指向像素数据的第i行,第j列/个像素的指针
     lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight-1-i) + j; //lLineBytes * (lHeight-1-i) + j???不懂
     fTemp  = k*(*lpSrc) + d; //线性变换
     if( fTemp > 255 )
     {
  *lpSrc = 255;
     }
     else if ( fTemp<0 )
     {
  *lpSrc = 0
     }
     else
     {
  *lpSrc = (unsigned char)(fTemp+0.5);    //四舍五入
     }
 }
}

所谓的饱和度, 指的其实是色彩的纯度,纯度越高,表现越鲜明,纯度较低,表现则较黯淡,色饱和度表示光线的彩色深浅度或鲜艳度,取决于彩色中的白色光含量,白光含量越 高,即彩色光含量就越低,色彩饱和度即越低,反之亦然。其数值为百分比,介于0 - 100% 之间。纯白光的色彩饱和度为0,而纯彩色光的饱和度则为100%。色饱和度受到屏幕亮度和对比度的双重影响,一般亮度好对比度高的屏幕可以得到很好的色饱 和度。

所谓对比度:是 指投影图像最亮和最暗之间的区域之间的比率,比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。对比度对视觉效果的影响非常关键,一般来说对比度 越大,图像越清晰醒目,色彩也越鲜明艳丽;而对比度小,则会让整个画面都灰蒙蒙的。高对比度对于图像的清晰度、细节表现、灰度层次表现都有很大帮助。对比 度越高图像效果越好,色彩会更饱和,反之对比度低则画面会显得模糊,色彩也不鲜明。

posted @ 2013-03-22 08:21  顶顶顶顶  阅读(1018)  评论(0)    收藏  举报