1、功能与效果:灰度拉伸和灰度的线性变换有点类似,都用到灰度的线性变换,但不同之处在于灰度拉伸不是完全的线性变换,而是分段进行线性变换。灰度拉伸可以更加灵活的控制输出灰度直方图的分布,它可以有选择的拉伸某段灰度区间以改善输出图像。如上图,所示的变换函数的运算结果是将原图在 a 到 b 之间的灰度拉伸到 c 到 d 之间。如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率x2: f(x) = (255-y2)/(255-x2)*(x-x2)+y2; /其中 x1,
2、y1,x2,y2 是图中 ac,bd 两个转折点的坐标。实现代码:int i=0;for( i=0; i0 )bMapi = (BYTE)y1*i/x1;elsebMapi = 0;for( ; i=x2; i+ )if( x2 != x1 )bMapi = y1 + (BYTE)(y2-y1)*(i-x1)/(x2-x1);elsebMap i = y1;for( ; i256; i+ )if( x1 != 255 )bMapi = y2 + (BYTE)(255-y2)*(i-x2)/(255-x2);elsebMapi = 255;for( int i=0; iiPixelHeight; i+ )for( int j=0; jiPixelWidth; j+ )/指向像素数据的第 i 行,第 j 列/个像素的指针lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight-1-i) + j; /lLineBytes * (lHeight-1-i) + j?不懂lpSrc = bMaplpSrc