调整图像亮度之 线性拉伸 (2) 百分比截断拉伸
上一篇为最大最小值拉伸,本篇为百分比截断拉伸,简单理解即是,使用百分比范围内的数据作为极值,然后做线性拉伸,也就是数据范围的前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) 基于直方图最值
近期遇到部分影像整体颜色比较暗,但是在ArcGis中显示的确实非常清晰.进过多方查找资料发现其实,就是对图像做了线性拉伸所致. 线性的拉伸原理: 某个影像的颜色值分布在某一特定小比例区域,如果是8位图 ...
- opencv中如何调整图像亮度和对比度,以及亮度和对比度调整的原理
文章目录 1. 调整图像亮度和对比度的原理 2. python实现的一个代码如下,可以直接运行 3. 在opencv种调节图像和对比度的方法 a. opencv中的实现方法: b. 根据咱们的公式,我 ...
- 调整图像亮度和对比度
图像变换可以看做两部分: 像素操作: 1.点操作,一般用于提升图像整体的对比度等. 2.邻域操作,一般用于空间域滤波,提取特征. 调整图像亮度和对比度属于像素变换 g(i,j)=αf(i,j)+βg\ ...
- Python调整图像亮度和饱和度
# 调整图像亮度input_image = cv2.cvtColor(input_image , cv2.COLOR_BGR2HSV)input_image [:, :, 2] = scale_val ...
- 【opencv4】opencv视频教程 C++ 7、手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)
上一讲:[opencv4]opencv视频教程 C++ 6.图像混合.线性混合.混合权重相加addWeighted().混合加add().混合乘multiply() [opencv_C++] 入门强推 ...
- java 对比度_调整图像亮度、对比度、饱和度
完整代码如下: 1.主要方法编写类 package chapter4; import java.awt.image.BufferedImage; public class BSCAdjustFilte ...
- 6. 调整图像亮度和对比度(OpenCV基础课程视频学习)
课程视频链接:https://www.bilibili.com/video/av29600072?p=7 内容 理论知识 代码 1. 理论知识 图像变换可以看作如下两种: 像素变换 -- 点操作,例如 ...
- OpenCV(C++)---调整图像亮度和对比度
1.理论 图像变换可以看作如下: 像素变换 – 点操作 邻域操作 – 区域 调整图像亮度和对比度属于像素变换-点操作: 2.重要的API Mat new_image = Mat::zeros( ima ...
- 调整图像亮度与对比度
文章目录 理论 代码演示 理论 图像变换可以看作如下: 像素变换 – 点操作,用在调整图像亮度和对比度等操作上. 邻域操作 – 区域,用在图像卷积.特征提取.梯度计算.模式匹配识别.角点检测.模糊.平 ...
最新文章
- python类的方法三种访问权_Python基础33-面向对象(继承资源(属性与方法)的使用注意)...
- 适用于 deno 的多版本管理工具 dvm 发布
- ASP.NET MVC 入门8、ModelState与数据验证
- WPF ComboBox样式
- 《迷宫》之站立会议—5.16
- docker删除镜像、容器命令
- IOS 改变导航栏返回按钮的标题
- 全国信息技术水平计算机程序设计c,2010年(上)全国信息技术水平考试计算机程序设计技术水平证书(C语言)考试试卷...
- dubbo教程(绝对的入门到入土)
- BI工具:cboard\superset 比较
- ROS机器人操作系统Windows10离线安装包
- 手机app测试点有哪些?手机app测试用例怎么写?错过绝对后悔!
- 即时通讯系统开发的问题详解
- [英语歌曲]孤独:Soledad
- FPGA数字信号处理(1)- AM调制的FPGA实现
- 能哄老婆睡觉的小故事
- HTML+JS 动态爱心效果,表白神器,装逼特效
- freeCAD学习笔记二:复制与放置多个相似的实体
- Oracle中的日期时间函数
- 解决:Godaddy域名解析很慢,网站经常打不开或者解析失败