原文:Win8MetroC#数字图像处理--2.1图像灰度化

 

[函数说明]

图像灰度化函数GrayProcess(WriteableBitmap src)

[算法说明]

  图像灰度化就是去掉彩色图像的彩色信息。对于一张图像,其中的每一个像素都

存在B,G,R三个颜色分量(这里不考虑透明度分量),这三个分量在C#中是按照B→G

→R的顺序进行存储的,这三个分量的值分别取在0-255范围之内,对于不同取值,

相应的也就产生了不同的颜色信息。如果以X,Y,Z轴分别取代R,G,B分量构建三维坐

标系,则颜色分布如图2.1所示。

公式2-(1)是根据我们人眼对颜色感知的特点以及人眼对色彩分辨的范围计算得到

的一个比较适于人眼感官的公式。

    这里我们采用公式2-(1),对每个像素运用该公式,得到的值即为像素的灰度值。

[函数代码]

/// <summary>
/// Gray process.
/// </summary>
/// <param name="src">Source image.</param>
/// <returns></returns>
public static WriteableBitmap GrayProcess(WriteableBitmap src) ////1 灰度化处理
{
if(src!=null )
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap grayImage = new WriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
for (int i = 0; i < temp.Length; i += 4)
{
byte tempByte = (byte)((int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299));
temp[i] = tempByte;
temp[i + 1] = tempByte;
temp[i + 2] = tempByte;
}
Stream sTemp = grayImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return grayImage;
}
else
{
return null;
}
}

[图像效果]

 

最新文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理4
  2. C#算法知识点记录
  3. 带无缝滚动的轮播图(含JS运动框架)-简洁版
  4. WCF Misconfiguration: Insufficient Audit Failure Handling
  5. SLF4J的好处
  6. log4net 添加自定义日志到数据库
  7. C# 调用 WebService 连接ORACLE 11g
  8. lua字符匹配
  9. readlink
  10. hdu 1251 统计难题 (map水过)
  11. Mysq 5.7l服务无法启动,没有报告任何错误
  12. APIO2018 被屠记
  13. Typora 快捷键
  14. javascript面向对象学习
  15. Lucene入门学习
  16. json数据 二级联动
  17. HTTP数据组织方式
  18. Mybatis(四)
  19. 得到某个android应用 的POST和GET请求的 网址和参数
  20. x86-64整数寄存器

热门文章

  1. alloc init初始化后对象依然还在父视图
  2. Centos Apache和tomcat集成配置,同一时候支持PHP和JAVA执行
  3. 【codeforces 791D】 Bear and Tree Jumps
  4. 【t012】整理书架
  5. TCP可靠的传输机制
  6. 执行hdfs namenode -importCheckpoint时出现No image directories available!
  7. Swift API设计原则
  8. 用决策树模型求解回归问题(regression tree)
  9. C# 反射调用私有事件
  10. Android小游戏:功夫蛇 团队开发经验总结