图像处理之图像灰度化
目录
1 图像灰度化简介
2 图像灰度化处理方法
2.1 均值灰度化
2.2 经典灰度化
2.3 Photoshop灰度化
2.4 C语言代码实现
3 演示Demo
3.1 开发环境
3.2 功能介绍
3.3 下载地址
参考
1 图像灰度化简介
对于24位的RGB图像而言,每个像素用3字节表示,分别对应R、G、B三个分量。如果R、G、B三个分量的值不相同,那么表现出来就是彩色图像;如果三者的值相同,那么表现出来就是灰度图像。而一张彩色图像转换为灰度图像,就叫做图像灰度化。
灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255,当灰度为255的时候,表示最亮(纯白);当灰度为0的时候,表示最暗(纯黑)。
灰度化的好处是:相较于彩色图像灰度图像占内存更小,运行速度更快;灰度图像后可以在视觉上增加对比,突出目标区域。
2 图像灰度化处理方法
图像灰度化处理有三种常用方法:均值灰度化、经典灰度化、Photoshop灰度化。
2.1 均值灰度化
均值灰度化,每个像素的灰度值为 R、G、B 分量的均值,也叫作明度灰度化。
Gray = ( R + G + B )/ 3
2.2 经典灰度化
经典灰度化,结合人眼对颜色的感应度,得到的一组比较适合的参数。
Gray = 0.299*R + 0.587*G + 0.114*B
2.3 Photoshop灰度化
Photoshop灰度化,即PS中的“去色“命令,是一种基于最大值和最小值的灰度化计算。
Gray =( max(R,G,B) + min(R,G,B) )/ 2
2.4 C语言代码实现
/*************************************************
功 能:图像灰度化
参 数:srcData - [输入/输出] 原始图像,格式为32位BGRA格式,执行后修为结果图像
width - [输入] 原始图像宽度
height - [输入] 原始图像高度
stride - [输入] 原始图像的Stride(也就是行字节数width*4)
mode - [输入] 0-均值灰度化,1-经典灰度化,2-PS灰度化
返 回:0-成功,其他-失败.
*************************************************/
int gray(unsigned char *srcData, int width, int height, int stride, int mode)
{
int ret = 0;
int i, j, gray, offset;
offset = stride - width * 4;
unsigned char* pSrc = srcData;
switch (mode)
{
case 0://mean gray method
for (j = 0; j < height; j++)
{
for (i = 0; i < width; i++)
{
gray = (pSrc[0] + pSrc[1] + pSrc[2]) / 3;
pSrc[0] = gray;
pSrc[1] = gray;
pSrc[2] = gray;
pSrc += 4;
}
pSrc += offset;
}
break;
case 1://classic gray method
for (j = 0; j < height; j++)
{
for (i = 0; i < width; i++)
{
gray = (299 * pSrc[2] + 587 * pSrc[1] + 114 * pSrc[0]) / 1000;
pSrc[0] = gray;
pSrc[1] = gray;
pSrc[2] = gray;
pSrc += 4;
}
pSrc += offset;
}
break;
case 2://photoshop gray method
for (j = 0; j < height; j++)
{
for (i = 0; i < width; i++)
{
gray = (MAX2(pSrc[0], MAX2(pSrc[1], pSrc[2])) + MIN2(pSrc[0], MIN2(pSrc[1], pSrc[2]))) / 2;
pSrc[0] = gray;
pSrc[1] = gray;
pSrc[2] = gray;
pSrc += 4;
}
pSrc += offset;
}
break;
default:
break;
}
return ret;
};
3 演示Demo
3.1 开发环境
-
Windows 10 Pro x64
-
Visual Studio 2015
3.2 功能介绍
演示程序主界面如下图所示,具有图像读取、显示、保存、显示RGBA值、HSV调整、提取YUV分量、灰度化等功能。
原图
经典灰度化
3.3 下载地址
开发环境:
-
Windows 10 pro x64
-
Visual Studio 2015
下载地址:图像处理之图像灰度化Demo
参考
图像视频滤镜与人像美颜美妆算法详解. 胡耀武、谭娟、李云夕. 电子工业出版社、2020-07