对比拉伸也就是灰度拉伸,主要是通过改善图像灰度级的动态范围,來改善的图像品质。

如下图:将原灰度集中拉升到均匀提升图像品质。

对比拉伸的本质是使用分段函数进行的线性变换,如下图:输出图像通过牺牲 0 ~ r1 和 r2 ~ L-1 的灰度级,来使s1 ~ s2的灰度级动态范围增加,达到改善图像此区域的的品质。

  • 三段线性拉伸的公式:假定要将原图 r1 - r2 的区域拉伸至 s1 - s2 区域。令oldl为原图灰度级,newl为新灰度级。

    • oldl < r1 :  newl = oldl / r1 * s1 ;

    • r1 < oldl < r2 : newl = (oldl - r1) / (r2 - r1) * (s2 - s1) + s1 ;

    • oldl > r2 :newl = (oldl - r2) / (255 - r2) * (255 - s2) + s2 ;

C#实现:

//灰阶对比拉伸public Bitmap contrastStreching(Bitmap grayImage, double r1, double r2, double s1, double s2){//用LockBits的方法,效果一致。//BitmapData grayImageData = grayImage.LockBits(new Rectangle(0, 0, grayImage.Width, grayImage.Height), ImageLockMode.ReadWrite, grayImage.PixelFormat);//IntPtr intPtr = grayImageData.Scan0;//int byteSize = grayImageData.Stride * grayImageData.Height;//byte[] originalBytes = new byte[byteSize];//Marshal.Copy(intPtr, originalBytes, 0, byteSize);//double y;//for (int i = 0; i < originalBytes.Length; i++)//{//    byte x = originalBytes[i];//    if (x < r1)//    {//        y = (x / r1) * s1;//    }//    else if (x <= r2)//    {//        y = ((x - r1) / (r2 - r1)) * (s2 - s1) + s1;//    }//    else//    {//        y = ((x - r2) / (255 - r2)) * (255 - s2) + s2;//    }//    originalBytes[i] = (byte)Math.Round(y);//}//Marshal.Copy(originalBytes, 0, intPtr, byteSize);//grayImage.UnlockBits(grayImageData);for (int j = 0; j < grayImage.Height; j++){for (int i = 0; i < grayImage.Width; i++){double y = 0;byte value = grayImage.GetPixel(i, j).R;if (value < r1){y = (value / r1) * s1;}else if (value <= r2){y = ((value - r1) / (r2 - r1)) * (s2 - s1) + s1;}else{y = ((value - r2) / (255 - r2)) * (255 - s2) + s2;}byte s = (byte)Math.Round(y);Color newValue = Color.FromArgb(s, s, s);grayImage.SetPixel(i, j, newValue);}}return grayImage;}

仅为个人理解,如有不足,请指教。 https://blog.csdn.net/weixin_35811044

图像处理(Image Processing) ---------- 对比拉伸 (Contrast Stretching)(C#实现)相关推荐

  1. Win8Metro(C#)数字图像处理--2.31灰度拉伸算法

    Win8Metro(C#)数字图像处理--2.31灰度拉伸算法 原文:Win8Metro(C#)数字图像处理--2.31灰度拉伸算法  [函数名称] 灰度拉伸函数GrayStretchProces ...

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

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

  3. OpenCV图像处理算法——7(《Contrast image correction method》 论文阅读及代码实现)

    <Contrast image correction method> 论文阅读及代码实现 以下内容大部分引自:https://cloud.tencent.com/developer/art ...

  4. 数字图像处理实验之对比度拉伸、直方图均衡化和规定化

    [实验内容]:  一.运用Matlab对Lena进行对比度拉伸增强(利用 imadjust  )  二.运用Matlab对图像进行直方图均衡化和规定化 Matlab版本:R2015a 一.运用Matl ...

  5. 数字图像处理--图像增强之对比度拉伸

    我们前面提到过图像二值化,图像反转,本质上是对图像的所有像素点的灰度进行操作,属于灰度变换的内容.灰度变换的主要目的是用于图像增强. 而对比度拉伸是图像增强的一种方法,也属于灰度变换操作.我们看如下图 ...

  6. 图像处理Image Processing(一)

    目录 一.图像处理的原理 二.图像处理的方法 (1)将图片转换成二维数组 (2)绘制原图 (3)绘制灰度图像 (4)绘制马赛克图像 (5)绘制珠纹化图像 ​(6)绘制融合图像 ​(7)绘制轮廓图像 ( ...

  7. C语言数字图像处理---1.4直方图拉伸和直方图均衡化

    本篇将延续上一篇的内容,对直方图进行扩展,讲述直方图拉伸和直方图均衡化两个内容,并通过简单的C语言来实现这两个基础功能,让初学者通俗易懂. 直方图拉伸 [定义与算法]         直方图拉伸也叫做 ...

  8. 图像处理(Image Processing) ---------- 直方图均衡化 (Equalization)(C#实现)

    说到直方图均衡化,首先提一提概率论的知识. 概率论: 离散型随机变量:能用日常使用的量词度量的随机变量. 概率函数:形如  P(x = 1) = 1/6; 概率分布: 概率分布函数: . (累积概率函 ...

  9. 图像处理(Image Processing) ---------- 灰阶位图分割 (bit-plane slicing)(浮水印)(C#实现)

    灰阶图像,通常每个Pixel是由8个bit构成,即有256种变化.然而每个Pixel的8个bit,从最高位到最低位携带的信息量是逐渐递减的.可以看下面几幅图:  右边是原图,下面就是将灰阶图每一个pi ...

最新文章

  1. python-range用法
  2. Nginx 提示host not found in upstream 错误解决方法
  3. OpenGL 实例化 Instancing
  4. php如何修改xml中element值,php修改xml节点的值
  5. WPF 用装饰器制作抽屉效果
  6. 尴尬:原来java中有两个 ModelAndView类
  7. Ant部署测试出错(关键字:Ant NoClassDefFoundError xml-apis/jar)
  8. 数据模型同学看过来|代码案例实操来袭
  9. orion sam mysql_JAVA/JSP学习系列之四(Orion App Server的安装)_MySQL
  10. 操作系统服务:OS模块
  11. 萤火虫小程序_玩转跨界营销,《狐妖小红娘》都使上了哪些神仙操作?
  12. javaweb网上购物系统,jsp网页线上购物,mysql(源码+报告)
  13. 哪些高级感中文Logo字体可免费商用?
  14. 微信小程序开发之十 —— 点击事件
  15. python中文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定
  16. 第三方定量定性质谱检测技术实验
  17. 05-【VirtualBox】VirtualBox 导入、导出虚拟机,实现从一台电脑中的虚拟机复制到另一台电脑
  18. linux系统基础知识学习笔记
  19. 2021世界燕窝展|上海滋补品展谈孕期燕窝六问
  20. 未来一年商业智能的发展前景如何?

热门文章

  1. 数学定理百科——黑洞数
  2. python中三种分支结构的_python二分支结构
  3. verilog有符号数加减法----正负128
  4. 【hive 日期函数 大全】Hive常用日期函数整理 史上最全
  5. GaN图腾柱无桥 Boost PFC(单相)六-终极细节篇
  6. 求解显示常微分方程MATLAB,用matlab求解常微分方程
  7. 小米/红米手机刷回官方系统(红米5 plus为例),也可救砖
  8. input输入search查找关键词时,实现(即时搜索)边输入边输出目标内容的例子代码
  9. Bagging算法预测银行客户流失率
  10. Ubuntu 20.04 下 部署 SoftEther