阈值变换在图像处理中有着非常高的作用,很多处理都会用到。最常见的应用就是产生黑白图。
代码如下:
- /******************************************************************************
- * 作用: 灰度阈值变换函数
- * 参数: pDst 输出图像的像素数组
- * 参数: pSrc 原始图像的像素数组
- * 参数: nWidth 原始图像宽度
- * 参数: nHeight 原始图像高度
- * 参数: thr 阈值
- ******************************************************************************/
- int ThresholdTrans(BYTE* pDst, BYTE* pSrc, int nWidth, int nHeight, int thr)
- {
- if (!pSrc || !pDst)
- {
- return EXIT_FAILURE;
- }
- // 灰度映射表
- BYTE map[256];
- int i;
- for (i = 0; i < 256; i++)
- {
- if (i >= thr)
- map[i] = 255;
- else
- map[i] = 0;
- }
- // 变换后的值直接在映射表中查找
- 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;
- }