OpenCV3 之 图像对比度与亮度值的调整
发布日期:2021-07-01 03:59:43 浏览次数:2 分类:技术文章

本文共 1069 字,大约阅读时间需要 3 分钟。

1. 理论基础

博主个人理解,对图像的处理可以看成一个函数(原图图像)经过处理(亮度、对比度的调整、颜色校正和变换、图片的压缩等等)变换为另一个函数(处理后的图像)的一个过程。

对于亮度与对比度,公式如下:

g ( x ) = a ∗ f ( x ) + b g(x)=a{*} f(x)+b g(x)=af(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)=af(i,j)+b

2. 调节过程

调节图像的亮度和对比度,即对图像的每一个像素的三个通道值都执行一次 g ( x ) = a ∗ f ( x ) + b g(x)=a{*} f(x)+b g(x)=af(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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OpenCV3 之 离散傅里叶变换
下一篇:OpenCV3 之 通道分离与合并

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月14日 11时18分36秒