图像处理之图像灰度化

目录

[1 图像灰度化简介](#1 图像灰度化简介)

[2 图像灰度化处理方法](#2 图像灰度化处理方法)

[2.1 均值灰度化](#2.1 均值灰度化)

[2.2 经典灰度化](#2.2 经典灰度化)

[2.3 Photoshop灰度化](#2.3 Photoshop灰度化)

[2.4 C语言代码实现](#2.4 C语言代码实现)

[3 演示Demo](#3 演示Demo)

[3.1 开发环境](#3.1 开发环境)

[3.2 功能介绍](#3.2 功能介绍)

[3.3 下载地址](#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语言代码实现

cpp 复制代码
/*************************************************
功    能:图像灰度化
参    数: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

相关推荐
聚客AI16 小时前
深度拆解AI大模型从训练框架、推理优化到市场趋势与基础设施挑战
图像处理·人工智能·pytorch·深度学习·机器学习·自然语言处理·transformer
qq_526099131 天前
图像采集卡与工业相机:机器视觉“双剑合璧”的效能解析
图像处理·数码相机·计算机视觉
计算机科研圈2 天前
ICCV 2025 | 首个3D动作游戏专用VLA模型,打黑神话&只狼超越人类玩家
图像处理·人工智能·3d·黑神话
越甲八千2 天前
提亮pgm
图像处理
2501_928094652 天前
Ps 2025 图像编辑 Photoshop(Mac中文)
图像处理·macos·photoshop·ps
AndrewHZ3 天前
【3D重建技术】如何基于遥感图像和DEM等数据进行城市级高精度三维重建?
图像处理·人工智能·深度学习·3d·dem·遥感图像·3d重建
老艾的AI世界5 天前
AI去、穿、换装软件下载,无内容限制,偷偷收藏
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai·换装·虚拟试衣·ai换装·一键换装
天下弈星~7 天前
变分自编码器VAE的Pytorch实现
图像处理·pytorch·python·深度学习·vae·图像生成·变分自编码器
胖墩会武术7 天前
【图像处理】小波变换(Wavelet Transform,WT)
图像处理·python
sali-tec8 天前
C# 基于halcon的视觉工作流-章29-边缘提取-亚像素
开发语言·图像处理·算法·计算机视觉·c#