图像处理-基本算法之灰度拉伸 from(同串口)
图像处理-基本算法之灰度拉伸
灰度拉伸是图像增强的一种,它是把分离的灰度转换到比较集中的程度,这时就更利于分析。
代码如下:
- /******************************************************************************
 - * 作用: 灰度均衡函数
 - * 参数: pDst 输出图像的像素数组
 - * 参数: pSrc 原始图像的像素数组
 - * 参数: nWidth 原始图像宽度
 - * 参数: nHeight 原始图像高度
 - ******************************************************************************/
 - int GrayEqualize(BYTE* pDst,BYTE* pSrc, int nWidth,int nHeight)
 - {
 - if (!pSrc || !pDst)
 - {
 - return EXIT_FAILURE;
 - }
 - // 灰度映射表
 - BYTE map[256];
 - long lCounts[256];
 - memset(lCounts, 0, sizeof(long) * 256);
 - int i;
 - // 计算各灰度值个数
 - for (i = 0; i < nWidth * nHeight; i++)
 - {
 - int x = pSrc[i * 4];
 - lCounts[x]++;
 - }
 - // 保存运算中的临时值
 - long lTemp;
 - for (i = 0; i < 256; i++)
 - {
 - lTemp = 0;
 - for (int j = 0; j <= i; j++)
 - lTemp += lCounts[j];
 - map[i] = (BYTE)(lTemp * 255.0f / nWidth / nHeight);
 - }
 - // 变换后的值直接在映射表中查找
 - for (i = 0; i < nWidth * nHeight; i++)
 - {
 - int x = pSrc[i * 4];
 - pDst[i*4] = pDst[i*4+1] = pDst[i*4+2] = map[x];
 - pDst[i*4+3] = 255;
 - }
 - return EXIT_SUCCESS;
 - }
 
                    
                
                
            
        
浙公网安备 33010602011771号