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 亮度非线性变化 一相关推荐

  1. opencv 亮度增强 二

    一.线性变换和查找 亮度和非线性变化一 这里增加了查找 1 .公式y = ax +b a 为alpha ,b为beta 2.查找 可以自己写,也可以使用函数LUT 二.非线性 *,结果很好 使用非线性 ...

  2. 图像处理 | 灰度线性变换与非线性变化

    一.灰度线性变换 图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度.灰度线性变换的计算公式如下所示 g(x)=αf(x)+β (1)图像灰 ...

  3. 线性变化和非线性变化

    1.线性变化的定义:具有如下性质的函数T:对于向量u和v,有T(u+v)=T(u)+T(v):对于标量a,有T(av)=aT(v),就是叫做线性变化 T(u+v)=T(u)+T(v)的理解: 变化可以 ...

  4. OpenCV亮度和对比度调整的实例(附完整代码)

    OpenCV亮度和对比度调整的实例 OpenCV亮度和对比度调整的实例 OpenCV亮度和对比度调整的实例 #include <iostream> #include "openc ...

  5. 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换 ...

  6. MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换 ...

  7. 华为matebook电脑屏幕亮度动态变化的解决办法

    我十一月初买的i7独显版的matebook14,开始买的是银色的,感觉不好看,就换成了灰色的,果然灰色的看起来更沉稳,更耐看,最主要是键盘是黑色的,灰色的外框和键盘不会形成强烈的对比,所以眼睛看起来不 ...

  8. dell window10 关闭屏幕亮度自动变化. 亲测有效

    转载 https://zhidao.baidu.com/question/1388213557137295460.html 1.首先使用 Win+R 组合快捷键打开Win10运行对话框,输入命令:re ...

  9. 平均分辨准确率对网络隐藏层节点数的非线性变化关系03

    (0,3)-81*n*2-(1,0)(0,1) 制作一个二分类的网络分类mnist的0和3,收敛标准1e-6,收敛次数是1999次,隐藏层节点数从3到1000共实验了79组值.统计每次收敛的迭代次数, ...

最新文章

  1. python selenium 下拉列表_从下拉列表中选择python selenium选项
  2. generator自动生成mybatis配置和类信息
  3. Java中int转Double再转换成百分数并应用在求同比昨日增长率
  4. POJ2774 Long Long Message
  5. verilog设计万年历带实验报告
  6. python学习笔记(2
  7. python初心记录二
  8. 创建SpringBoot项目时出现Cannot resolve plugin org.springframework的解决方法
  9. Spark OpenHashMap分析
  10. 微课|中学生可以这样学Python(例11.2):tkinter猜数游戏(3)
  11. c语言编译程序的软件下载,c语言编译器(wintc)
  12. Python的基本数据类型(1)
  13. VC 中一些控件的使用方法(TabControl, 工具栏)
  14. Django之验证码的生成和使用
  15. 人事管理系统都有哪些功能和优势?
  16. 计算机信息安全专业代码0839,(0839)网络空间安全一级学科硕士研究生培养方案...
  17. 《前端》阿里字体库iconfont使用方法
  18. mybatis中显示Type interface com.javacto.dao.UserMapper is not known to the MapperRegistry.
  19. 【PAT乙级】1096 大美数 (15 分) DFS回溯解法
  20. Chrome浏览器滚动条样式设置

热门文章

  1. Android,UbuntuCore,ROS;TuringOS,iBotOS,ROOBO
  2. springboot上传限制1M的大坑
  3. MFC开发IM-第二十六篇、vs2008添加库文件
  4. Tnpsp创业项目计划将与阿里巴巴展开全面竞争!
  5. 优酷《追光吧!》正式开播 风度、实力成关键词
  6. 华为天才少年1万元自制机械臂:能给葡萄缝针!
  7. 三星Galaxy Z Fold3定档8月11日:售价预计将超1.5W
  8. 万人请愿别让贝索斯重返地球 还有人建议带上马斯克
  9. Redmi K40系统截图曝光:配备顶级2K屏幕+骁龙870移动平台
  10. 格力公布“酒后模式”手机专利 网友:喝多了可以光明正大不结账了