/LGC图形渲染/彩色图像转换为灰度图像
来源:互联网 发布:mysql免安装版配置教程 编辑:程序博客网 时间:2024/05/16 15:53
彩色图像转换为灰度图像
作者: 网络
日期: 2009-08-11
文本介绍了将彩色图像转换为灰度图像的算法,并给出了代码样例。
简介
数字图像在计算机上以位图(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);
}
}
}
原始图片:
灰度图片:
SeeAlso
- GDI+图像处理初级系列—灰度图像处理
- /LGC图形渲染/彩色图像转换为灰度图像
- 灰度图像转换为彩色
- 彩色图像转换为灰度图像
- openCV彩色图像转换为灰度图像
- 彩色图像批量转换为灰度图像
- 彩色模型和彩色图像转换为灰度图像
- vc将彩色图像转换为灰度图像
- 【Matlab】将彩色图像转换为灰度图像
- 灰度图像和彩色图像互相转换
- 灰度图像和彩色图像互相转换
- 灰度图像转化为伪彩色图像
- 彩色图像变换为灰度图像
- Qt 中彩色图像转换为灰度图
- BMP--24位真彩色转换为灰度图像
- Qt 中彩色图像转换为灰度图
- Qt 中彩色图像转换为灰度图
- 彩色图像->灰度图像:
- 灰度图像彩色图像
- Tomcat+花生壳免费发布网站
- js实现动态增加表格行_jasonchi
- /LGC图形渲染/图像处理系列之旋转
- /LGC图形渲染/图像处理系列之扭曲(distort)
- 大小端机器的判断-引发的思考
- /LGC图形渲染/彩色图像转换为灰度图像
- 流行的Eclipse IDE的开源项目——商业智能和报表工具(BIRT)简介
- Python 性能 剖分 工具
- 指向常量的指针--来自《C++ primer》 第四版
- button按钮绑定快捷键
- /LGC图形渲染/常见颜色深度的 bitmap 之间的相互转换
- HttpModule和Http Handler (比较与区别)
- height高度100%在ie中的问题
- 丢掉宝石的孩子-谈谈我最近的感悟!