数字增益和模拟增益理解和示例
本文对数字增益和模型增益的理解做简单介绍,并使用海康工业相机的MVS提供调参平台进行参数调整和效果展示,最后使用C++模型相应的增益,更加直观的展示效果。
·
本文对数字增益和模型增益的理解做简单介绍,并使用海康工业相机的MVS提供调参平台进行参数调整和效果展示,最后使用C++模型相应的增益,更加直观的展示效果。
相机增益分为模拟增益和数字增益两种。模拟增益可将模拟信号放大;数字增益可将模数转换后的信号放大。
增益数值越高时,图像亮度也越高,同时图像噪声也会增加,对图像质量有所影响。且数字增益的噪声会比模拟增益的噪声更明显。
若需要提高图像亮度,建议先增大相机的曝光时间;若曝光时间达到环境允许的上限不能满足要求,再考虑增大模拟增益;若模拟增益设置为最大值还不能满足要求,最后再考虑调整数字增益。
模拟增益
模拟增益主要是调节线性放大输入的信号强度。其大小直接影响输出音频功率的值在一定范围内,较大的输入值有利于提高输出信噪比,也会同比增加输出功率。但是当输入过大后输出功率增加变缓,而失真则急剧上升。其最佳调整值应使输出电压峰值在放大器的线性范围内。
数字增益
数字增益主要是调节数模转换输入的脉冲幅度。其值过小,会造成丢失误码的增大;如果幅度过大,因数据脉冲严重切顶,噪声脉冲增加,数字信号信噪比也会劣化,也造成干扰误码的增加。数字增益的最佳值是调整在数字电路输入的域值范围内的上限。数字增益的大小,不会增加或减小输出音频功率的值,只影响解码器的工作状态。
海康MVS示例
模拟增益为0时:
模拟增益为20时:
开启数字增益
C++模拟示例
此处,使用像素值乘以固定系数的方式,模拟上面所述的增益效果。
#include <opencv2/opencv.hpp>
#include <iostream>
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
系数为6
总结
由上可知,随着增益的增大,图像对比度和亮度都增强,但也有注意系数的设置,数字增益会产生噪声,系数过大曝光严重还会产生全白现场。
更多推荐
所有评论(0)