当前位置: 首页 > news >正文

17.3.1.3 灰度

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

灰度的算法主要有以下三种:

1、最大值法:

原图像:颜色值color=(R,G,B)

求出R,G,B中最大的值:Y=Max(R,G,B)

新图像:color=(Y,Y,Y)

2、平均值法: 使用每个像素点的 R,G,B值等于原像素点的RGB值的平均值;

原图像:颜色值color=(R,G,B)

求出R,G,B的平均值:Y=(R+B+G)/3

新图像:color=(Y,Y,Y)

3.、指数加权法:

原图像:颜色值color=(R,G,B)

将R,G,B分别乘上一个权重值,通常为Y=R * 0.3 + G * 0.59 + B * 0.11

新图像:color=(Y,Y,Y)

【例 17.33灰度算法一:最大值法。

       //灰度:最大值private void btnGray1_Click(object sender, EventArgs e){Color pSourceColor;Color pDestColor;Bitmap destImg = new Bitmap(sourceImg.Width, sourceImg.Height);int R, G, B;int gray;for (int i = 0; i < sourceImg.Width; i++){for (int j = 0; j < sourceImg.Height; j++){pSourceColor = sourceImg.GetPixel(i, j);R = pSourceColor.R;G = pSourceColor.G;B = pSourceColor.B;int MaxColor;MaxColor = R > G? R: G;MaxColor = MaxColor > B? MaxColor: B;pDestColor = Color.FromArgb(MaxColor, MaxColor, MaxColor);destImg.SetPixel(i, j, pDestColor);}}picDest.Image = destImg;}

运行结果如下图所示:

图17-37 灰度处理一

【例 17.34灰度算法二:平均值法。

     //灰度:均值法private void btnGray2_Click(object sender, EventArgs e){Color pSourceColor;Color pDestColor;Bitmap destImg = new Bitmap(sourceImg.Width, sourceImg.Height);int R, G, B;int gray;for (int i = 0; i < sourceImg.Width; i++){for (int j = 0; j < sourceImg.Height; j++){pSourceColor = sourceImg.GetPixel(i, j);R = pSourceColor.R;G = pSourceColor.G;B = pSourceColor.B;gray = (R + G + B) / 3;pDestColor = Color.FromArgb(gray, gray, gray);destImg.SetPixel(i, j, pDestColor);}}picDest.Image = destImg;}

运行结果如下图所示:

图17-38 灰度处理二

【例 17.35灰度算法三:指数加权法。

        //灰度:指数加权法private void btnGray3_Click(object sender, EventArgs e){Color pSourceColor;Color pDestColor;Bitmap destImg = new Bitmap(sourceImg.Width, sourceImg.Height);int R, G, B;int y;for (int i = 0; i < sourceImg.Width; i++){for (int j = 0; j < sourceImg.Height; j++){pSourceColor = sourceImg.GetPixel(i, j);R = pSourceColor.R;G = pSourceColor.G;B = pSourceColor.B;y =(int)( R * 0.3 + G * 0.59 + B * 0.11);pDestColor = Color.FromArgb(y, y, y);destImg.SetPixel(i, j, pDestColor);}}picDest.Image = destImg;}

运行结果如下图所示:

图17-39 灰度处理三

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看 C# 教程 目录

http://www.lryc.cn/news/300935.html

相关文章:

  • 基于CAS操作的atomic原子类型
  • Rust HashMap详解及单词统计示例
  • 命令执行讲解和函数
  • 外包实在是太坑了,划水三年,感觉人都废了
  • 代码随想录算法训练营第19天
  • 树莓派5 EEPROM引导加载程序恢复镜像
  • 循序渐进-讲解Markdown进阶(Mermaid绘图)-附使用案例
  • 寒假作业2月6号
  • ChatGPT绘图指南:DALL.E3玩法大全(一)
  • 计算机服务器中了_locked勒索病毒怎么办?Encrypted勒索病毒解密数据恢复
  • VueCLI核心知识3:全局事件总线、消息订阅与发布
  • Redis中缓存问题
  • 数码管扫描显示-单片机通用模板
  • IDEA中的神仙插件——Smart Input (自动切换输入法)
  • shell编程:求稀疏数组中元素的和(下标不连续)
  • Rust 学习笔记 - 详解数据类型
  • 构建本地yum源
  • 常用的正则表达式,收藏必备!!!
  • js---webAPI
  • git的常用命令有哪些?
  • 《动手学深度学习(PyTorch版)》笔记8.5
  • 【蓝桥杯单片机入门记录】LED灯(附多个例程)
  • c语言简单json库
  • Linux操作系统基础(七):Linux常见命令(二)
  • 进程状态
  • STM32固件库简介与使用指南
  • 【开源】SpringBoot框架开发智能教学资源库系统
  • 融资项目——获取树形结构的数据
  • Crypto-RSA2
  • IEEE Internet of Things Journal投稿经验