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;
}
}
转载于:https://www.cnblogs.com/lonelyxmas/p/8554344.html
Win8Metro(C#)数字图像处理--2.31灰度拉伸算法相关推荐
- Win8Metro(C#)数字图像处理--2.32图像曝光算法
[函数名称] 图像曝光函数ExposureProcess(WriteableBitmap src,int exposureValue) [函数代码] /// <summary> // ...
- Win8Metro(C#)数字图像处理--2.7图像伪彩色
Win8Metro(C#)数字图像处理--2.7图像伪彩色 原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色 2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoCol ...
- Win8Metro(C#)数字图像处理--2.3图像反色
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下: ...
- Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测
原文:Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测 [函数名称] 图像Prewitt边缘检测函数PrewittEdgeProcess(WriteableBitmap ...
- Win8Metro(C#)数字图像处理--2.24二值图像闭运算
原文:Win8Metro(C#)数字图像处理--2.24二值图像闭运算 [函数名称] 二值图像闭运算函数CloseOperateProcess(WriteableBitmap src) [算法说 ...
- Win8Metro(C#)数字图像处理--2.12Sobel边缘检测
原文:Win8Metro(C#)数字图像处理--2.12Sobel边缘检测 [函数名称] 图像Sobel边缘检测函数SobelEdgeProcess(WriteableBitmap src) [ ...
- Win8Metro(C#)数字图像处理--2.33图像非线性变换
原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换 [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...
- Win8Metro(C#)数字图像处理--2.18图像平移变换
原文:Win8Metro(C#)数字图像处理--2.18图像平移变换 [函数名称] 图像平移变换函数TranslationProcess(WriteableBitmap src,int x,in ...
- 数字图像处理实验之对比度拉伸
一幅图像中,最高灰度级和最低灰度级的差成为对比度.一幅低对比度的图像,看起来细节会少很多.可以通过对比度拉伸提高图像对比度,显示更多细节.先来看看对比度拉伸的典型变换: 书本中(冈萨雷斯:数字图像处理 ...
最新文章
- DeepMind 打造 AI 游戏系统,可以玩扑克、国际象棋、围棋等,战斗力爆表
- Pyhton 随机数的使用
- C语言结构体通过 scanf初始化
- tensorflow中的交叉熵损失
- unittest里discover用法_unittest框架核心要素及应用
- web前端之js快速入门(BOM和DOM)
- Linux 修改SSH端口 和 禁止Root远程登陆
- [3]java1.8线程池—ThreadPoolExecutor
- 阿里巴巴Java开发文档2020版学习-代码格式
- 如何在快手批量下载高清无水印视频方法
- Word2Vec简明教程:入门、原理及代码实现
- 均值滤波计算_基于FPGA的中值滤波算法实现
- php 制作网站地图,网站地图怎么做,制作网站地图的三种实用方法
- 学计算机拼音不好怎么办,孩子拼音基础差怎么办?告诉你学拼音技巧!
- 误删的文件怎么寻回?
- Mac 重置mysql数据库密码
- 20130327-[转]讲完这个故事我就要嫁给别人
- Neo4j的安装与配置
- python算法问题_算法重心问题树(Python),的
- 2020蓝天杯论文评比系统_获奖通报 | 铜山区在江苏省第十四届(2020年)“蓝天杯”中小学优秀教学设计评选中荣获佳绩...
热门文章
- signature=c9e077ef93038bf703dbc146dd834bb7,基于RSASignUtil非对称私钥进行字符串加签及公钥解密验证的完整代码示例...
- GitHub上已超过2900星!这份有原理、有代码、有Demo的算法资源火了
- include引入php报错,如何解决引入php文件报错的问题
- php新窗口打开链接,wordpress如何设置在新窗口打开链接
- pandas时间处理操作
- linux调用python出错,linux里面python调用系统命令问题
- mysql 优化 案例_[MySQL优化案例]系列 -- OPTIMIZE的威力
- python情感分析预测模型_python snownlp情感分析简易demo
- mybatis分页数据重复
- MySQL 的CASE WHEN 语句