上一篇为最大最小值拉伸,本篇为百分比截断拉伸,简单理解即是,使用百分比范围内的数据作为极值,然后做线性拉伸,也就是数据范围的前n% 和后 n% 的像素映射到极值上即可,算法如下:

template<typename T>
inline int CImageCorrectionDlg::PercentLinearTension(const T * poSrcData, T * poDstData, int nSizex, T smin, T smax, T dmin, T dmax, double percentMin, double percentMax)
{double k = (double)(dmax - dmin) / (smax - smin);double b = (double)(smax*dmin - smin*dmax) / (smax - smin);double s = smax - smin;double lowx = smin, lowy = smin + s*percentMin / 100;double highx = smax - s*percentMin / 100, highy = smax;
#pragma omp parallel forfor (int i = 0; i < nSizex; i++){if (poSrcData[i] == 0){poDstData[i] = 0;continue;}if ( lowx <= poSrcData[i] && poSrcData[i] < lowy){poDstData[i] = 1;continue;}if (highx <= poSrcData[i] && poSrcData[i] <highy){poDstData[i] = 255;continue;}int tmp = k*poSrcData[i] + b;if (tmp <= 0){if (poSrcData[i] == 0)poDstData[i] = 0;elsepoDstData[i] = 1;//原来不是0的如果直接拉伸0将变为nodata}else if (tmp >= 255)poDstData[i] = 255;elsepoDstData[i] = (T)tmp;}return 0;
}
拉伸结果对比图:

其中百分比截断拉伸可能效果稍好点。

调整图像亮度之 线性拉伸 (2) 百分比截断拉伸相关推荐

  1. 调整图像亮度之 线性拉伸 (1) 基于直方图最值

    近期遇到部分影像整体颜色比较暗,但是在ArcGis中显示的确实非常清晰.进过多方查找资料发现其实,就是对图像做了线性拉伸所致. 线性的拉伸原理: 某个影像的颜色值分布在某一特定小比例区域,如果是8位图 ...

  2. opencv中如何调整图像亮度和对比度,以及亮度和对比度调整的原理

    文章目录 1. 调整图像亮度和对比度的原理 2. python实现的一个代码如下,可以直接运行 3. 在opencv种调节图像和对比度的方法 a. opencv中的实现方法: b. 根据咱们的公式,我 ...

  3. 调整图像亮度和对比度

    图像变换可以看做两部分: 像素操作: 1.点操作,一般用于提升图像整体的对比度等. 2.邻域操作,一般用于空间域滤波,提取特征. 调整图像亮度和对比度属于像素变换 g(i,j)=αf(i,j)+βg\ ...

  4. Python调整图像亮度和饱和度

    # 调整图像亮度input_image = cv2.cvtColor(input_image , cv2.COLOR_BGR2HSV)input_image [:, :, 2] = scale_val ...

  5. 【opencv4】opencv视频教程 C++ 7、手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)

    上一讲:[opencv4]opencv视频教程 C++ 6.图像混合.线性混合.混合权重相加addWeighted().混合加add().混合乘multiply() [opencv_C++] 入门强推 ...

  6. java 对比度_调整图像亮度、对比度、饱和度

    完整代码如下: 1.主要方法编写类 package chapter4; import java.awt.image.BufferedImage; public class BSCAdjustFilte ...

  7. 6. 调整图像亮度和对比度(OpenCV基础课程视频学习)

    课程视频链接:https://www.bilibili.com/video/av29600072?p=7 内容 理论知识 代码 1. 理论知识 图像变换可以看作如下两种: 像素变换 -- 点操作,例如 ...

  8. OpenCV(C++)---调整图像亮度和对比度

    1.理论 图像变换可以看作如下: 像素变换 – 点操作 邻域操作 – 区域 调整图像亮度和对比度属于像素变换-点操作: 2.重要的API Mat new_image = Mat::zeros( ima ...

  9. 调整图像亮度与对比度

    文章目录 理论 代码演示 理论 图像变换可以看作如下: 像素变换 – 点操作,用在调整图像亮度和对比度等操作上. 邻域操作 – 区域,用在图像卷积.特征提取.梯度计算.模式匹配识别.角点检测.模糊.平 ...

最新文章

  1. python类的方法三种访问权_Python基础33-面向对象(继承资源(属性与方法)的使用注意)...
  2. 适用于 deno 的多版本管理工具 dvm 发布
  3. ASP.NET MVC 入门8、ModelState与数据验证
  4. WPF ComboBox样式
  5. 《迷宫》之站立会议—5.16
  6. docker删除镜像、容器命令
  7. IOS 改变导航栏返回按钮的标题
  8. 全国信息技术水平计算机程序设计c,2010年(上)全国信息技术水平考试计算机程序设计技术水平证书(C语言)考试试卷...
  9. dubbo教程(绝对的入门到入土)
  10. BI工具:cboard\superset 比较
  11. ROS机器人操作系统Windows10离线安装包
  12. 手机app测试点有哪些?手机app测试用例怎么写?错过绝对后悔!
  13. 即时通讯系统开发的问题详解
  14. [英语歌曲]孤独:Soledad
  15. FPGA数字信号处理(1)- AM调制的FPGA实现
  16. 能哄老婆睡觉的小故事
  17. HTML+JS 动态爱心效果,表白神器,装逼特效
  18. freeCAD学习笔记二:复制与放置多个相似的实体
  19. Oracle中的日期时间函数
  20. 解决:Godaddy域名解析很慢,网站经常打不开或者解析失败

热门文章

  1. Bootstrap进阶四:jQuery插件详解
  2. URL地址中的中文乱码问题的解决
  3. 《SpringCloud Alibaba 微服务架构》专题(二十一)-Seat简介与安装
  4. 云计算开发(二) 分布式计算与分布式系统
  5. python迭代是什么意思_用python迭代json
  6. 【生活】雪蓝花养殖方法收集分享
  7. XMLHttpRequest 对象实现文件上传和下载功能
  8. 流氓软件卸载与避免的一些方法
  9. 【Ngnix】Ngnix应用
  10. Android 心形图片心形ImageView、带边框的的心形图片和圆形图片