彩色图像与灰度图像转换的程序设计

本文介绍了数字图像的基本概念,包括像素和灰度值,并详细讲述了如何将彩色图像转换为灰度图像,提供了两种不同的转换公式,以及转换过程的代码样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

数字图像在计算机上以位图(bitmap)的形式存在,位图是一个矩形点阵,其中每一点称为像素(pixel),像素是数字图像中的基本单位。一幅m×n大小的图像,是由m×n个明暗度不等的像素组成的。数字图像中各个像素所具有的明暗程度由灰度值(gray level)所标识。一般将白色的灰度值定义为255,黑色灰度值定义为0,而由黑到白之间的明暗度均匀地划分为256个等级。对于黑白图像,每个像素用一个字节数据来表示,而在彩色图像中,每个像素需用三个字节数据来表述。彩色图像可以分解成红(R)、绿(G)、蓝(B)三个单色图像,任何一种颜色都可以由这三种颜色混合构成。在图像处理中,彩色图像的处理通常是通过对其三个单色图像分别处理而得到的。

算法

如果要将彩色图像转换为灰度图像,只要将图像中的每个像素取出来,然后取像素的R、G、B颜色分量,利用如下公式计算灰度值:

    int gray = r*0.3 + g*0.59 + b*0.11;

然后再令像素的R、G、B分度值都为gray就行了 。

也有的资料提出灰度转换公式如下所示:

    int gray = (r+g+b) / 3;

两种方法转换后的灰度图片效果差不多。

代码样例
public void GrayScale(Bitmap image )
{
    int width = image.Width - 1;
    int height = image.Height - 1;

    Color color;
    for (int i = width; i >= 0;i--)
    {
    for (int j = height; j >= 0;j--)
    {
        //读取每一个像素
        color = image.GetPixel(i,j);        //计算灰度值
        int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
        //int gray = (color.R + color.G + color.B) / 3;
        Color colorResult = Color.FromArgb(255,gray,gray,gray);
        //设置像素为灰度
        image.SetPixel(i, j, colorResult);
    }    
}
}
原始图片:

灰度图片:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值