OpenCV3 之 图像对比度与亮度值的调整
发布日期:2021-07-01 03:59:43
浏览次数:3
分类:技术文章
本文共 1069 字,大约阅读时间需要 3 分钟。
1. 理论基础
博主个人理解,对图像的处理可以看成一个函数(原图图像)经过处理(亮度、对比度的调整、颜色校正和变换、图片的压缩等等)变换为另一个函数(处理后的图像)的一个过程。
对于亮度与对比度,公式如下:
g ( x ) = a ∗ f ( x ) + b g(x)=a{*} f(x)+b g(x)=a∗f(x)+b- 参数 f ( x ) f(x) f(x)表示原图像像素
- 参数 g ( x ) g(x) g(x)表示输出图像像素
- 参数 a a a( a a a>0),称为增益(gain),常被用来控制图像对比度
- 参数 b b b,称为偏置(bias),常被用来控制图像亮度
如果用 i i i和 j j j来表示像素的行和列,则上述公式变为:
g ( i , j ) = a ∗ f ( i , j ) + b g(i, j)=a{*} f(i, j)+b g(i,j)=a∗f(i,j)+b2. 调节过程
调节图像的亮度和对比度,即对图像的每一个像素的三个通道值都执行一次 g ( x ) = a ∗ f ( x ) + b g(x)=a{*} f(x)+b g(x)=a∗f(x)+b。
#include#include using namespace std;using namespace cv;int main() { Mat g_srcImage, g_dstImage; g_srcImage = imread("1.jpg"); g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type()); for (int y = 0; y < g_srcImage.rows; y++) { for (int x = 0; x < g_srcImage.cols; x++) { for (int c = 0; c < 3; c++) { g_dstImage.at (y, x)[c] = saturate_cast (10*(g_srcImage.at (y, x)[c]) + 0); } } } imshow("亮度对比度调节图", g_dstImage); waitKey(0); return 0;}
参考书籍《OpenCV3编程入门》
转载地址:https://miracle.blog.csdn.net/article/details/100578045 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月24日 01时28分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1.3 万亿条数据查询,如何做到毫秒级响应?
2019-05-02
高赞回答:为什么高级程序员不必担心自己的技术过时?
2019-05-02
支持 Dubbo 接口文档生成的工具
2019-05-02
SpringBoot集成WebSocket,实现后台向前端推送信息
2019-05-02
优秀程序员早就学会用“状态模式”代替if-else了
2019-05-02
Windows 10将预装Windows Terminal
2019-05-02
非常强悍的 RabbitMQ 总结,写得真好!
2019-05-02
字符编码,原来是SQL不走索引的元凶之一!
2019-05-02
老板要我开发一个简单的工作流引擎 !
2019-05-02
Spring JPA整合QueryDSL
2019-05-02
Java编程思想笔记——第五章 初始化和清理
2019-05-02
关于java.text.SimpleDateFormat的parse()方法存在的坑
2019-05-02
Java编程思想笔记——第十章 内部类
2019-05-02
Java编程思想笔记——第十四章 类型信息
2019-05-02
为什么商业搜索引擎选择的索引更新策略是完全重建策略
2019-05-02
MySQL学习笔记——慢查询
2019-05-02
elastic-job监控平台搭建
2019-05-02
JVM的栈帧
2019-05-02
Java实现排列组合
2019-05-02
通俗易懂的Java线程不安全
2019-05-02