本文主要是介绍【OpenCV4】图像的伽玛矫正gamma fit 伽玛补偿 gamma calibration详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
gamma曲线
gamma 补偿的作用
gamma 补偿可以增加图片像素低的部分的对比度,减小图片像素高的部分的对比度。
也就是图片黑的地方可以看得更清晰,图片亮的地方会变得更模糊。
OpenCV 代码
#include<iostream>
#include<opencv2/opencv.hpp>
#include<vector>
using namespace cv;
using namespace std;int main()
{cv::Mat img = cv::imread("./test.jpeg", 0);if (img.channels() != 1){cv::cvtColor(img, img, cv::COLOR_RGB2GRAY);}cv::Mat gammaimg;gammaimg.create(img.size(), img.type()); // 创建一个大小类型相同的图像矩阵序列,也可以用clone()函数;int height = img.rows;int width = img.cols;for (int i = 0; i < height; i++)for (int j = 0; j < width; j++){int gray = img.at<uchar>(i, j);gammaimg.at<uchar>(i, j) = pow(gray, gamma);}cv::normalize(gammaimg, gammaimg, 0, 255, cv::NORM_MINMAX); // 归一化,将数据归一到0-255之间;cv::imshow("origin", img);cv::imshow("output", gammaimg); // 显示图像cv::waitKey(0);
}
测试:
原图:
gamma 补偿后:
这篇关于【OpenCV4】图像的伽玛矫正gamma fit 伽玛补偿 gamma calibration详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!