// 链接 https://blog.csdn.net/linqianbi/article/details/78617615
// Gamma 校正
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include<cmath>
using namespace cv;Mat gammaTransform(Mat& srcImage, float kFactor)
{unsigned char LUT[256];for (int i = 0; i < 256; i++){float f = (i + 0.5f) / 255;f = (float)(pow(f, kFactor));LUT[i] = saturate_cast<uchar>(f * 255.0f - 0.5f);}Mat resultImage = srcImage.clone();if (srcImage.channels() == 1){MatIterator_<uchar> iterator = resultImage.begin<uchar>();MatIterator_<uchar> iteratorEnd = resultImage.end<uchar>();for (; iterator != iteratorEnd; iterator++){*iterator = LUT[(*iterator)];}}else{MatIterator_<Vec3b> iterator = resultImage.begin<Vec3b>();MatIterator_<Vec3b> iteratorEnd = resultImage.end<Vec3b>();for (; iterator != iteratorEnd; iterator++){(*iterator)[0] = LUT[((*iterator)[0])];//b(*iterator)[1] = LUT[((*iterator)[1])];//g(*iterator)[2] = LUT[((*iterator)[2])];//r}}return resultImage;
}
int main()
{Mat srcImage = imread("test.jpg");if (!srcImage.data){printf("could not load image...\n");return -1;}//取两种不同的gamma值float gamma1 = 3.33f;float gamma2 = 0.33f;float kFactor1 = 1 / gamma1;float kFactor2 = 1 / gamma2;Mat result1 = gammaTransform(srcImage, kFactor1);Mat result2 = gammaTransform(srcImage, kFactor2);namedWindow("demo", CV_WINDOW_AUTOSIZE);imshow("srcImage", srcImage);imshow("res1", result1);imshow("res2", result2);imwrite("Gamma.jpg", result1);waitKey(0);waitKey(0);return 0;
}

opencv:Gamma校正相关推荐

  1. OpenCV 【十】——Gamma校正 ——图像灰度变化

    Gamma校正(C++.OpenCV实现) 1.作用: Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: 伽玛校正由以下幂律表达式定义: 2.函数原型 v ...

  2. Gamma校正及其OpenCV实现

    參考:[1]http://www.cambridgeincolour.com/tutorials/gamma-correction.htm [2]http://en.wikipedia.org/wik ...

  3. 在OpenCV环境下对图像做Gamma校正

    什么是Gamma校正? Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系. 上面中的指数γ即为Gamma. 经过Gamma校正后的输入和输出图像灰度值关系如 ...

  4. gamma校正 matlab,Gamma校正 ——图像灰度变化 OpenCV (十)

    Gamma校正(C++.OpenCV实现) 1.作用: Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: 伽玛校正由以下幂律表达式定义: 2.函数原型 v ...

  5. 基于OpenCV的Gamma校正原理与实现

    声明:本文原文出自@零钱币 的博文,原文地址为:https://blog.csdn.net/linqianbi/article/details/78617615.本文全文摘抄以及少量修订仅为本人学习. ...

  6. 【图像处理】——图像的灰度化处理(Python实现三种方法——最大值法、平均值法、加权均值法、gamma校正)

    目录 一.什么是图像的灰度化? 二.灰度化的几种方法(最大值法.平均值法.加权均值法.gamma校正) 1.直接调用函数:cv2.cvtColor() 图像颜色空间转换 2.最大值法 (1)概念 (2 ...

  7. 图像处理算法之Gamma校正

    文章目录 1 使用场景 2 原理 3 实现步骤 4 实现 5 效果 1 使用场景 当一张图片出现过亮或者过暗的时候导致图像对比度较差,可以使用Gamma校正来处理 2 原理 如上图所示,为函数 f(I ...

  8. java opencv gamma_Gamma校正及其OpenCV实现

    一.什么是Gamma校正? Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: [2] 这个指数即为Gamma. 经过Gamma校正后的输入和输出图像灰度值 ...

  9. OpenCV畸变校正原理以及损失有效像素原理分析

    常用的张正友标定法的流程,其中获取了摄像机的内参矩阵K,和畸变系数D. 1.在普通相机cv模型中,畸变系数主要有下面几个:(k1; k2; p1; p2[; k3[; k4; k5; k6]] ,其中 ...

最新文章

  1. 英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器
  2. Kona 8:鹅厂基于OpenJDK开源的JDK
  3. SQL Server HA - 数据库镜像2 (Mirroring)(1418错误解决)
  4. VTK:相互作用之InteractorStyleUser
  5. AppendStream和RetractStream(没有弄完)
  6. 网络杂谈, Docker, MongoDB
  7. C# Action用法
  8. UOJ#351-新年的叶子【树的直径,数学期望】
  9. [bash] printf使用范例
  10. 杜克大学计算机硕士要几年,2017杜克大学春季不招计算机专业的硕士?
  11. 【软件测试】测试需求分析
  12. 学生对象数组实现按年龄排序 按成绩排序1022
  13. 面试题 02.06. 回文链表
  14. SSD6中Exercise4 (substitute.cpp) 答案解析
  15. 基于群晖DS216+II的家庭存储解决方案
  16. Abelssoft Undeleter(数据恢复软件)v5.01免费版
  17. 文件及文件夹管理规范
  18. 初始C语言——成绩等级划分
  19. MATLAB--基本操作与矩阵输入
  20. win7如何开启Telnet服务

热门文章

  1. JEECG - 基于代码生成器的J2EE智能开发框架 杂记:【演示视频和源码】
  2. RedHat系列软件管理(第二版) --源码包安装
  3. 微信小程序周报(第八期)
  4. 红米手机5怎么样卡刷开发版开启root超级权限
  5. java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务...
  6. PowerDesigner 中的name与comment转换(转)
  7. [Everyday Mathematics]20150125
  8. Pl/SQL Developer 配置
  9. VSTS 离线源码版本辅助工具
  10. maven关联oracle,maven添加oracle jdbc依赖