首页 > 其他分享 >OpenCV(图像对比度)

OpenCV(图像对比度)

时间:2024-09-22 22:12:25浏览次数:8  
标签:inputImage OpenCV beta 图像 对比度 alpha cv

目录



1. 图像对比度

图像对比度是指图像中亮部和暗部之间的差异程度。对比度越高,亮区更亮,暗区更暗;对比度低时,亮区和暗区的差异不明显,图像显得平淡。



2. 对比度调整的原理

图像对比度可以通过线性变换实现,公式如下:

\[I_{out} = \alpha \cdot I_{in} + \beta \]

  • \(I_{in}\) 是输入图像的像素值。
  • \(I_{out}\) 是输出图像的像素值。
  • \(\alpha\) 是对比度调整因子,通常大于1会增强对比度,介于0到1之间会降低对比度。
  • \(\beta\) 是亮度调整因子,它的作用是整体调整图像亮度。


3. 示例

对RGB图像进行对比度调整。

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

void adjustContrast(const cv::Mat& inputImage, cv::Mat& outputImage, double alpha, double beta) {
    // 创建输出图像,初始化为和输入图像相同大小和类型
    outputImage = cv::Mat::zeros(inputImage.size(), inputImage.type());

    // 遍历每个像素点,应用对比度和亮度调整
    for (int y = 0; y < inputImage.rows; y++) {
        for (int x = 0; x < inputImage.cols; x++) {
            for (int c = 0; c < inputImage.channels(); c++) {
                // 应用公式 I_out = alpha * I_in + beta
                outputImage.at<cv::Vec3b>(y, x)[c] = cv::saturate_cast<uchar>(
                    alpha * inputImage.at<cv::Vec3b>(y, x)[c] + beta
                );
            }
        }
    }
}

int main() {
    // 读取图像
    cv::Mat image = cv::imread("input_image.jpg");
    if (image.empty()) {
        std::cerr << "无法读取图像!" << std::endl;
        return -1;
    }

    // 调整参数:alpha 调整对比度,beta 调整亮度
    double alpha = 1.5; // 对比度因子
    double beta = 20;   // 亮度偏移量

    cv::Mat outputImage;
    adjustContrast(image, outputImage, alpha, beta);

    // 显示原始图像和调整后的图像
    cv::imshow("Original Image", image);
    cv::imshow("Contrast Adjusted Image", outputImage);

    // 保存输出图像
    cv::imwrite("output_image.jpg", outputImage);

    // 等待用户按键
    cv::waitKey(0);

    return 0;
}

代码说明:

  1. adjustContrast函数: 该函数用于调整图像的对比度和亮度。遍历每个像素点,并对每个通道(RGB)应用公式:

    \[I_{out} = \alpha \cdot I_{in} + \beta \]

    其中,cv::saturate_cast<uchar>确保像素值在0到255之间。

  2. 参数alphabeta

    • alpha(对比度因子):大于1会增强对比度,0到1之间会降低对比度。
    • beta(亮度偏移量):正值增加整体亮度,负值降低整体亮度。
  3. cv::Mat::zeros(): 用于创建与输入图像相同尺寸和类型的空白图像。



4. 调整对比度的效果

  • 如果你设置 alpha = 1.5,图像对比度会变得更高,亮的部分变得更亮,暗的部分变得更暗。
  • 如果你设置 alpha = 0.5,图像的对比度会降低,亮暗之间的差异会减少。
  • beta 的调整则控制整体亮度的升高或降低。


标签:inputImage,OpenCV,beta,图像,对比度,alpha,cv
From: https://www.cnblogs.com/keye/p/18426015

相关文章

  • OpenCV(图像明度)
    目录1.图像明度(Brightness)2.明度调整的原理3.示例1.图像明度(Brightness)明度(Brightness)是图像中反映光亮程度的一个属性,通常用于描述像素的亮度水平。对于RGB图像,明度(Luminance)每个像素中红、绿、蓝通道的加权和。\[\text{Luminance}=0.299\timesR+0.587\timesG......
  • Opencv边界填充、图像数值、图像融合与形态学运算处理方法
     首先导入库和图片,图片根据自己的路径修改importnumpyasnpimportcv2importmatplotlib.pyplotasplt%matplotlibinline#readimg1andimg2img1=cv2.imread(r'material\b.png')img2=cv2.imread(r'material\a.png')img3=cv2.imread(r'material......
  • 智能图像水位识别监测系统
    智能图像水位识别监测系统利用两岸已有的监控摄像头对河道江河湖泊等区域进行实时监测,当智能图像水位识别监测系统监测到水位刻度尺超标时立即抓拍告警同步回传给后台监控平台方便人员及时处理。水位起伏变化,水利水灾往往系于一线之间。智能图像水位识别监测系统现实意义价值重大......
  • 高等数学 3.6 函数图像的描绘
    利用导数描绘函数图形的一般步骤如下:(1)确定函数\(y=f(x)\)的定义域及函数所具有的某些特性(如奇偶性、周期性等),并求出函数的一阶导数\(f^{'}(x)\)和二阶导数\(f^{''}(x)\);(2)求出一阶导数\(f^{'}(x)\)和二阶导数\(f^{''}(x)\)在函数定义域内的全部零点,并求出函数\(f(x)......
  • OpenCV(图像饱和度)
    目录1.图像饱和度2.调整饱和度的基本原理3.示例3.1对RGB图像进行饱和度的调整。3.2对RGB图像进行饱和度的调整。4.调整饱和度的影响1.图像饱和度饱和度(Saturation)指的是颜色的纯度或浓度,决定了颜色的鲜艳程度。高饱和度的颜色看起来更加鲜艳,而低饱和度的颜色则显得......
  • 数字图像面积计算一般方法及MATLAB实现
    一、引言     在数字图像处理中,经常需要获取感兴趣区域的面积属性,下面给出图像处理的一般步骤。1.读入的彩色图像 2.将彩色图像转化为灰度图像  3.灰度图像转化为二值图像 4.区域标记5.对每个区域的面积进行计算和显示二、程序代码%面积计算clearall; %......
  • OpenCV(cv::saturate_cast())
    目录1.函数定义2.为什么需要saturate_cast()?3.工作原理4.示例代码:4.1将浮点数转换为uchar4.2将负数转换为uchar4.3普通类型转换5.主要优点总结cv::saturate_cast()是OpenCV中一个非常重要的函数,它用于将一个值强制转换为指定类型,并确保值不会超出取值范围。它主......
  • 如何使用 HTML 和 CSS 使图像在悬停时旋转
    图像上的悬停旋转效果可以使您的内容更具吸引力和互动性。在本教程中,我们将引导您了解如何仅使用html和css创建简单但引人注目的悬停旋转效果。如何创造效果html:首先,添加以下html代码:<figureclass="hover-rotate">@@##@@</figure>登录后复制您可以添加任何......
  • OPENCV入门总结
        在近期对计算机视觉的学习中,有一些心得与感受和大家一起分享,并且也说一些我做题目用到的函数和一些常见错误TEST1:图像边框对矩形的轮廓识别与绘制,难点在于利用色彩来选中红色图形与绿色图形进行处理(后面的几个题也是利用了相同的方法对图像进行特定操作)我们在......
  • 第152期 利用光谱和图像数据,揭开苹果叶片病虫害之谜(目标检测)
    亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。一、引言苹果作为全球广泛种植的水果之一,在中国拥有庞大的种植面积和总产量。然而,随着......