OpenCV 伽马校正函数gammaCorrection()

发布于:2025-07-16 ⋅ 阅读:(21) ⋅ 点赞:(0)
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

该函数用于对输入图像应用伽马校正(Gamma Correction),这是一种非线性的图像处理技术,主要用于调整图像的亮度和对比度。
给定一个输入的 BGR 或灰度图像以及一个常数 gamma,对图像在 [0, 255] 区间上应用幂律变换(即伽马校正),并返回结果图像。

函数原型

void cv::intensity_transform::gammaCorrection 	
(
 	const Mat  	input,
	Mat &  	output,
	const float  	gamma 
) 		

参数

  • input:输入BGR或灰度图像。
  • output:伽马校正后的结果图像。
  • gamma:在公式 c*r^gamma中的常数,其中 r 是像素值。

示例代码


#include <opencv2/intensity_transform.hpp>
#include <opencv2/opencv.hpp>

void applyGammaCorrection( const cv::Mat& input, cv::Mat& output, float gamma )
{
    // 创建查找表
    cv::Mat lookUpTable( 1, 256, CV_8U );
    uchar* p = lookUpTable.ptr();
    for ( int i = 0; i < 256; ++i )
        p[ i ] = cv::saturate_cast< uchar >( pow( i / 255.0, gamma ) * 255.0 );

    // 应用查找表
    cv::LUT( input, lookUpTable, output );
}

int main()
{
    // 读取图像
    cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );
    if ( img.empty() )
    {
        std::cerr << "无法加载图像!" << std::endl;
        return -1;
    }

    cv::Mat result;

    // 设置伽马值
    float gamma = 1.5f;  // 你可以根据需要调整这个值

    // 使用 OpenCV 提供的 gammaCorrection 函数
    cv::intensity_transform::gammaCorrection( img, result, gamma );

    // 显示原图和处理后的图像
    cv::imshow( "Original Image", img );
    cv::imshow( "Gamma Corrected Image", result );
    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到