调节 CSI 图像质量

带领大家调节 CSI 图像质量。

在本系列上一篇文章中,我们为大家展示了如何执行常见机器视觉应用。在本篇文章中,我们将带领大家调节 CSI 图像质量。

前面两篇文章在 Jetson Nano 2GB 上使用 CSI 摄像头做了几个实验,效果很不错,并且很容易上手。很快有用户反映,觉得摄像头拍到的图像质量似乎有点问题,包括可能有些噪点、色偏之类的问题,或者想处理白平衡、调整亮度/对比度/饱和度之类的问题,该如何解决?

本期重点就带着大家利用强大的 GStreamer 框架,调整一些设定值,来改变 CSI 摄像头截取图像的质量,主要包括 nvarguscamerasrc 与 videobalance 这两个元素,都提供可调整的参数,以下简单说明。

首先启动一个最基础的 CSI 摄像头调用代码,如下:

执行结果如下图:

nvarguscamerasrc 元素

接着在 Jetson Nano 2GB 上打开一个终端,利用 GStreamer 提供的 gst-inspect-1.0 指令去查询 CSI 摄像头可设定的参数有哪些。

指令后面的“nvarguscamerasrc”元素对应 CSI 设备,是 NVIDIA 提供 Argus 库的对应关键字。执行上述指令后会出现长达 146 行的列表,内容太多不一一说明,仅就以下部分进行测试:

wbmode : 白平衡影响照片的色温,可设定[0:9]的整数

tnr-mode 与 tnr-strength :调整时间降噪强度

首先选择 tnr-mode 选项:设值为[0:2]的整数

然后再选择 trn-strength 强调,从[-1:+1]之间的浮点数

ee-mode 与 ee-strength:调整边缘增强强度

首先选择 tnr-mode 选项:设值为[0:2]的整数

然后再选择 trn-strength 强调,从[-1:+1]之间的浮点数

saturation:饱和度,设值[0:2]之间的浮点数

以上是 nvarguscamerasrc 设定值的一部分,因此在 GStreamer 工作流里面,需要放在 nvarguscamerasrc 元素里。下面代码做以下的测试设定:

  • 白平衡:wbmode=3(白炽灯)
  • 时间降噪强度:tnr-mode=2(NoiseReduction_HighQuality),tnr-strength=1
  • 边缘强化强度:ee-mode=2(EdgeEnhancement_HighQuality),ee-strength=1
  • 饱和度:saturation=0.5

添加的代码在下方代码“粗体底线”的部分:

执行结果如下图:

这个输出结果与原图相比较,可以明显看到因为饱和度只取“0.5”,导致颜色明显变淡,边缘的部分则明显增强,至于噪点部分没有明显变化。

videobalance 元素

另外还有一个 videobalance 元素可以对图像质量进行调整,同样使用 gst-inspact-1.0 来检查 videobalance 里的参数,执行以下质量:

这部分设定值比较单纯,主要由 7 个设定值,其中与图像有关的以下部分:

下面代码做以下的测试设定,见于“粗体底线”部分:

  • 对比度 constrast(预设值为 1)设为 1.5
  • 亮度 brightness(预设值为 0)设为 0.2
  • 饱和度 saturation(预设值为 1)设为 2.0

添加的代码在下方代码“粗体底线”的部分:

执行结果如下图:

这里的饱和度改变较大,可以看出明显的差异。

以上是简单地透过调整这两个元素的部分参数所作的实验,实际的优化过程还需根据实际状况进行优化调整,特别是光线模式的选择,最好根据当时的状况修改。

 


评论:
相关文章
知乎277万浏览热帖:少儿编程是不是收智商税?

少儿编程被越来越多的家长关注,很多媒体和机构也在宣传学习少儿编程的好处,部分宣传比较夸张,诸如“未来人工智能时代,不学习编程就会”导致家长更容易陷入焦虑,到底要不要孩子去学编程呢?


《七个世界,一个星球》豆瓣9.9!千万别错过这部顶级大片!

BBC团队拍摄制作、大卫老爷子(david attenborough)担任旁白,汉斯·季默负责配乐。还是熟悉的配方,还是神作的味道。


青少年机器人技术等级考试一二级结构动图

青少年机器人技术等级考试一二级结构动图。


乐高科技42131卡特彼勒D11推土机评测

让我们来跟随兄弟积木(The Brother Brick),一起了解这个套装吧!


使用Python开发Android应用的简易教程

在过去,如果你想要开发Android应用,你需要掌握Java或者Kotlin等编程语言,但是现在,Python也可以用来开发Android应用了。


Arduino Mega 2560开发板的引脚分配图及说明

本文介绍Arduino Mega2560开发板的引脚分配图及说明。


香橙派推出对标树莓派3B、CM4和Zero2W开发板

最近香橙派推出了它们的香橙派3B、香橙派CM4、香橙派Zero2W,代号和树莓派一模一样。分别对标树莓派的树莓派3B、树莓派CM4、以及树莓派Zero2W。


Arduino IDE环境下用ESP32控制多路LED调光

本实验在Ardu​ino IDE环境下,利用ESP32产生的PWM信号控制多个L​ED。


Micro:bit MicroPython 教程 5.1 什么是输入输出引脚

Micro:bit的底边有一条金属条,这些是输入/输出引脚(或简称I / O引脚)。


Jetson Nano 基础教程

作者:英伟达小助理   共52讲

Jetson Nano 推出 2GB 内存版本,不仅承袭了 Jetson Nano 所有 AI 开发环境与 IOT 控制功能,也能学习或开发 Python、OpenCV 与 AI 深度学习、ROS 自动控制等应用。

课程