数字增益和模拟增益理解和示例

本文对数字增益和模型增益的理解做简单介绍,并使用海康工业相机的MVS提供调参平台进行参数调整和效果展示,最后使用C++模型相应的增益,更加直观的展示效果。

目录

  • 模拟增益
  • 数字增益
  • 海康MVS示例
    • 模拟增益为0时:
    • 模拟增益为20时:
    • 开启数字增益
  • C++模拟示例
    • 系数为3
    • 系数为6
  • 总结

相机增益分为模拟增益和数字增益两种。模拟增益可将模拟信号放大;数字增益可将模数转换后的信号放大。

增益数值越高时,图像亮度也越高,同时图像噪声也会增加,对图像质量有所影响。且数字增益的噪声会比模拟增益的噪声更明显。

若需要提高图像亮度,建议先增大相机的曝光时间;若曝光时间达到环境允许的上限不能满足要求,再考虑增大模拟增益;若模拟增益设置为最大值还不能满足要求,最后再考虑调整数字增益。

模拟增益

模拟增益主要是调节线性放大输入的信号强度。其大小直接影响输出音频功率的值在一定范围内,较大的输入值有利于提高输出信噪比,也会同比增加输出功率。但是当输入过大后输出功率增加变缓,而失真则急剧上升。其最佳调整值应使输出电压峰值在放大器的线性范围内。

数字增益

数字增益主要是调节数模转换输入的脉冲幅度。其值过小,会造成丢失误码的增大;如果幅度过大,因数据脉冲严重切顶,噪声脉冲增加,数字信号信噪比也会劣化,也造成干扰误码的增加。数字增益的最佳值是调整在数字电路输入的域值范围内的上限。数字增益的大小,不会增加或减小输出音频功率的值,只影响解码器的工作状态。

海康MVS示例

模拟增益为0时:

数字增益和模拟增益理解和示例_第1张图片

模拟增益为20时:

开启数字增益

C++模拟示例

此处,使用像素值乘以固定系数的方式,模拟上面所述的增益效果。

#include 
#include 

int main() {
    // 读取图像
    cv::Mat img = cv::imread("0.bmp");
    if (img.empty()) {
        std::cout << "Could not read the image" << std::endl;
        return 1;
    }

    cv::Mat brightened_img;
    cv::multiply(img, 6, brightened_img); // 像素值增大6倍

    cv::imshow("Original Image", img);
    cv::imshow("Brightened Image", brightened_img);
    cv::imwrite("zengyi.jpg", brightened_img);
    cv::waitKey(0);
    return 0;
}

系数为3

数字增益和模拟增益理解和示例_第2张图片

系数为6

数字增益和模拟增益理解和示例_第3张图片

总结

由上可知,随着增益的增大,图像对比度和亮度都增强,但也有注意系数的设置,数字增益会产生噪声,系数过大曝光严重还会产生全白现场。

你可能感兴趣的:(C,C++日常记录,数码相机,c++,人工智能,计算机视觉)