opencv 亮度非线性变化 一
opencv 的hsv 和变换效果
原图比较暗淡,我们需要调整他的亮度来做变换来看清楚这幅图,需要一些算法来调整,我们称之为线性变化和非线性变换。
线性变化:
y = ax +b ;
非线性变换为查找或者公式。
知识点:
通道0 channels[0]是色调
通道1 channels[1]是饱和度
通道2 channels[2]是亮度
实际上亮度就是灰度图
hsv图是根据颜色变换而来,中间这幅图实际上就是灰度图,我们可以为灰度图调整,从而在合并来做,不过今天我们直接使用opencv的saturate_cast更为方便
int main()
{s_param sp;//输入图像 sp.img = imread("aa.png", 1);if (!sp.img.data || sp.img.channels() != 3)return 0;imshow("from", sp.img);//彩色图像的灰度值归一化 sp.img.convertTo(sp.bgr, CV_32FC3, 1.0 / 255, 0);//颜色空间转换 cvtColor(sp.bgr, sp.hsv, cv::COLOR_BGR2HSV);//Mat img(200, 300, CV_8UC1);std::vector<cv::Mat> channels;split(sp.hsv, channels);int nWidth = sp.img.cols;int nHeight = sp.img.rows;imshow("通道0", channels[0]); imshow("通道1", channels[1]); imshow("通道2", channels[2]); Mat src = sp.img;Mat dst = src.clone();float alpha = 0.8;float beta = 30;for (int row = 0; row < nHeight; row++){for (int col = 0; col < nWidth; col++){float b = src.at<Vec3b>(row, col)[0];float g = src.at<Vec3b>(row, col)[1];float r = src.at<Vec3b>(row, col)[2];dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b *alpha +beta);dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(g *alpha + beta);dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(r *alpha +beta);}}imshow("dst", dst);waitKey(0);
}
结果
结果调整是比较好,还不是很合胃口,还是需要进一步调整,所以就需要非线性变换,非线性变换就没有那么死板了,非统一去调整亮度,而是根据当前亮度值的范围去调整,我们再来看结果:
非线性变换的结果为dst1, 明显效果比dst的线性变换要好一些,在接下来的学习中,我们会呈现更高级的调整,线性变换加查找表,请等待下一节。
opencv 亮度非线性变化 一相关推荐
- opencv 亮度增强 二
一.线性变换和查找 亮度和非线性变化一 这里增加了查找 1 .公式y = ax +b a 为alpha ,b为beta 2.查找 可以自己写,也可以使用函数LUT 二.非线性 *,结果很好 使用非线性 ...
- 图像处理 | 灰度线性变换与非线性变化
一.灰度线性变换 图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度.灰度线性变换的计算公式如下所示 g(x)=αf(x)+β (1)图像灰 ...
- 线性变化和非线性变化
1.线性变化的定义:具有如下性质的函数T:对于向量u和v,有T(u+v)=T(u)+T(v):对于标量a,有T(av)=aT(v),就是叫做线性变化 T(u+v)=T(u)+T(v)的理解: 变化可以 ...
- OpenCV亮度和对比度调整的实例(附完整代码)
OpenCV亮度和对比度调整的实例 OpenCV亮度和对比度调整的实例 OpenCV亮度和对比度调整的实例 #include <iostream> #include "openc ...
- 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换 ...
- MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换 ...
- 华为matebook电脑屏幕亮度动态变化的解决办法
我十一月初买的i7独显版的matebook14,开始买的是银色的,感觉不好看,就换成了灰色的,果然灰色的看起来更沉稳,更耐看,最主要是键盘是黑色的,灰色的外框和键盘不会形成强烈的对比,所以眼睛看起来不 ...
- dell window10 关闭屏幕亮度自动变化. 亲测有效
转载 https://zhidao.baidu.com/question/1388213557137295460.html 1.首先使用 Win+R 组合快捷键打开Win10运行对话框,输入命令:re ...
- 平均分辨准确率对网络隐藏层节点数的非线性变化关系03
(0,3)-81*n*2-(1,0)(0,1) 制作一个二分类的网络分类mnist的0和3,收敛标准1e-6,收敛次数是1999次,隐藏层节点数从3到1000共实验了79组值.统计每次收敛的迭代次数, ...
最新文章
- python selenium 下拉列表_从下拉列表中选择python selenium选项
- generator自动生成mybatis配置和类信息
- Java中int转Double再转换成百分数并应用在求同比昨日增长率
- POJ2774 Long Long Message
- verilog设计万年历带实验报告
- python学习笔记(2
- python初心记录二
- 创建SpringBoot项目时出现Cannot resolve plugin org.springframework的解决方法
- Spark OpenHashMap分析
- 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(3)
- c语言编译程序的软件下载,c语言编译器(wintc)
- Python的基本数据类型(1)
- VC 中一些控件的使用方法(TabControl, 工具栏)
- Django之验证码的生成和使用
- 人事管理系统都有哪些功能和优势?
- 计算机信息安全专业代码0839,(0839)网络空间安全一级学科硕士研究生培养方案...
- 《前端》阿里字体库iconfont使用方法
- mybatis中显示Type interface com.javacto.dao.UserMapper is not known to the MapperRegistry.
- 【PAT乙级】1096 大美数 (15 分) DFS回溯解法
- Chrome浏览器滚动条样式设置
热门文章
- Android,UbuntuCore,ROS;TuringOS,iBotOS,ROOBO
- springboot上传限制1M的大坑
- MFC开发IM-第二十六篇、vs2008添加库文件
- Tnpsp创业项目计划将与阿里巴巴展开全面竞争!
- 优酷《追光吧!》正式开播 风度、实力成关键词
- 华为天才少年1万元自制机械臂:能给葡萄缝针!
- 三星Galaxy Z Fold3定档8月11日:售价预计将超1.5W
- 万人请愿别让贝索斯重返地球 还有人建议带上马斯克
- Redmi K40系统截图曝光:配备顶级2K屏幕+骁龙870移动平台
- 格力公布“酒后模式”手机专利 网友:喝多了可以光明正大不结账了