Win8Metro(C#)数字图像处理--2.31灰度拉伸算法
原文:Win8Metro(C#)数字图像处理--2.31灰度拉伸算法



[函数名称]

灰度拉伸函数GrayStretchProcess(WriteableBitmap src)

[算法说明]

直方图灰度拉伸也叫做对比度拉伸,是一种特殊的线性点运算,使用的是分段线性变换函数,它的主要思想是提高图像灰度级的动态范围;它的作用是扩展图像的直方图,使其充满整个灰度等级的范围内,从而改善输出图像。

如图Fig.1所示,变换函数的运算结果是将原图在a-b之间的灰度级拉伸到c-d之间。如果一幅图像的灰度级集中在较暗的区域从而导致图像偏暗,或者一幅图像的灰度级集中在较亮的区域从而导致图像偏亮,则可以使用灰度拉伸来改善图像质量。

[函数代码]

/// <summary>

/// Gray stretch process.

/// </summary>

/// <param name="src">The source image.</param>

/// <returns></returns>

public static WriteableBitmap GrayStretchProcess(WriteableBitmap src)31图像灰度拉伸

{

if (src != null)

{

int w = src.PixelWidth;

int h = src.PixelHeight;

WriteableBitmap grayStretchImage = new WriteableBitmap(w, h);

byte[] temp = src.PixelBuffer.ToArray();

int min = 0;

int max = 0;

int gray = 0;

int res = 0;

for (int i = 0; i < temp.Length; i += 4)

{

gray = (int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299);

min = min < gray ? min : gray;

max = max > gray ? max : gray;

}

for (int i = 0; i < temp.Length; i += 4)

{

gray = (int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299);

res = (255 / (max - min)) * (gray - min);

temp[i] = (byte)res;

temp[i + 1] = (byte)res;

temp[i + 2] = (byte)res;

}

Stream sTemp = grayStretchImage.PixelBuffer.AsStream();

sTemp.Seek(0, SeekOrigin.Begin);

sTemp.Write(temp, 0, w * 4 * h);

return grayStretchImage;

}

else

{

return null;

}

}

posted on 2018-03-13 10:24 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/8554344.html

Win8Metro(C#)数字图像处理--2.31灰度拉伸算法相关推荐

  1. Win8Metro(C#)数字图像处理--2.32图像曝光算法

     [函数名称] 图像曝光函数ExposureProcess(WriteableBitmap src,int exposureValue) [函数代码] /// <summary> // ...

  2. Win8Metro(C#)数字图像处理--2.7图像伪彩色

    Win8Metro(C#)数字图像处理--2.7图像伪彩色 原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色  2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoCol ...

  3. Win8Metro(C#)数字图像处理--2.3图像反色

    原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下:     ...

  4. Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测

    原文:Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测  [函数名称] 图像Prewitt边缘检测函数PrewittEdgeProcess(WriteableBitmap ...

  5. Win8Metro(C#)数字图像处理--2.24二值图像闭运算

    原文:Win8Metro(C#)数字图像处理--2.24二值图像闭运算  [函数名称] 二值图像闭运算函数CloseOperateProcess(WriteableBitmap src) [算法说 ...

  6. Win8Metro(C#)数字图像处理--2.12Sobel边缘检测

    原文:Win8Metro(C#)数字图像处理--2.12Sobel边缘检测  [函数名称] 图像Sobel边缘检测函数SobelEdgeProcess(WriteableBitmap src) [ ...

  7. Win8Metro(C#)数字图像处理--2.33图像非线性变换

    原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换  [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...

  8. Win8Metro(C#)数字图像处理--2.18图像平移变换

    原文:Win8Metro(C#)数字图像处理--2.18图像平移变换  [函数名称] 图像平移变换函数TranslationProcess(WriteableBitmap src,int x,in ...

  9. 数字图像处理实验之对比度拉伸

    一幅图像中,最高灰度级和最低灰度级的差成为对比度.一幅低对比度的图像,看起来细节会少很多.可以通过对比度拉伸提高图像对比度,显示更多细节.先来看看对比度拉伸的典型变换: 书本中(冈萨雷斯:数字图像处理 ...

最新文章

  1. DeepMind 打造 AI 游戏系统,可以玩扑克、国际象棋、围棋等,战斗力爆表
  2. Pyhton 随机数的使用
  3. C语言结构体通过 scanf初始化
  4. tensorflow中的交叉熵损失
  5. unittest里discover用法_unittest框架核心要素及应用
  6. web前端之js快速入门(BOM和DOM)
  7. Linux 修改SSH端口 和 禁止Root远程登陆
  8. [3]java1.8线程池—ThreadPoolExecutor
  9. 阿里巴巴Java开发文档2020版学习-代码格式
  10. 如何在快手批量下载高清无水印视频方法
  11. Word2Vec简明教程:入门、原理及代码实现
  12. 均值滤波计算_基于FPGA的中值滤波算法实现
  13. php 制作网站地图,网站地图怎么做,制作网站地图的三种实用方法
  14. 学计算机拼音不好怎么办,孩子拼音基础差怎么办?告诉你学拼音技巧!
  15. 误删的文件怎么寻回?
  16. Mac 重置mysql数据库密码
  17. 20130327-[转]讲完这个故事我就要嫁给别人
  18. Neo4j的安装与配置
  19. python算法问题_算法重心问题树(Python),的
  20. 2020蓝天杯论文评比系统_获奖通报 | 铜山区在江苏省第十四届(2020年)“蓝天杯”中小学优秀教学设计评选中荣获佳绩...

热门文章

  1. signature=c9e077ef93038bf703dbc146dd834bb7,基于RSASignUtil非对称私钥进行字符串加签及公钥解密验证的完整代码示例...
  2. GitHub上已超过2900星!这份有原理、有代码、有Demo的算法资源火了
  3. include引入php报错,如何解决引入php文件报错的问题
  4. php新窗口打开链接,wordpress如何设置在新窗口打开链接
  5. pandas时间处理操作
  6. linux调用python出错,linux里面python调用系统命令问题
  7. mysql 优化 案例_[MySQL优化案例]系列 -- OPTIMIZE的威力
  8. python情感分析预测模型_python snownlp情感分析简易demo
  9. mybatis分页数据重复
  10. MySQL 的CASE WHEN 语句