树莓派相机tuning方法文档机翻_raspberry pi camera algorithm and tuning guide 中文

1.首先,必须编写一个功能强大的V4L2相机驱动程序(见第3章)。为了编写相机驱动程序,可以复制未校准的tuning文件,该文件应提供可识别的图像。根据您使用的平台,复制vc4/data/uncalibrated.json(Pi 4及更早的设备)或isp/data/uncalibred.json(PI5)中的一个。还应注意tuning文件中列出的黑色级别,以匹配传感器数据表中指定的黑色级别(并放大到16位范围)。

2.必须捕获一组校准图像。同样,这应该使用未校准的调优文件。有两种类型的校准图像,即带有麦克白图表的校准图像和另一组用于测量透镜阴影的完全均匀图像。

3.在Pi 5上,您可以选择捕获一些图像来调整色差校正(CAC)块。这些图像也可以省略。Pi 4或更早版本的设备上不存在此功能。

4.在校准图像全部正确命名并存储在文件夹中的情况下,可以运行CTT。CTT自动在图像中找到麦克白图,并使用它们来测量噪声分布、绿色不平衡、白平衡和颜色矩阵。

5.CTT的输出JSON文件可以直接使用,可能需要进行较小的进一步调整。

  • 软件要求

CTT需要安装Python3,并使用以下附加模块

matplotlib
scipy
numpy
cv2
imutils
sklearn
pyexiv2
rawpy

以下命令足以在干净的Ubuntu 18.04.4 LTS安装中安装所有所需的库和模块。这个过程在其他发行版中应该类似。

sudo apt install python3 -pip libexiv2 -dev libboost -python -dev
pip3 install opencv - python imutils matplotlib scikit - learn py3exiv2 rawpy

personal note here:

{

在ubuntu 18.04.6上发现出错,主要还需要安装如下:

sudo apt install libjpeg-dev zlib1g-dev scikit-build

boost1.65.1 from source, wget -O boost_1_55_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.65.1/boost_1_65_1.tar.gz/download
tar xzvf boost_1_65_1.tar.gz

tar xzvf boost_1_65_1.tar.gz 
 cd boost_1_65_1/
 sh ./bootstrap.sh --with-libraries=python --with-toolset=gcc 
 sudo find / -name python3.6m
./b2 --with-python include=“/usr/include/x86_64-linux-gnu/python3.6m”
sudo b2 install
 1522  sudo find / -name libboost_python3*
 1526  sudo ln -s   /usr/lib/x86_64-linux-gnu/libboost_python3-py36.so.1.65.1  /usr/lib/x86_64-linux-gnu/libboost_python36.so
}

  • 设备

摄像机调谐所需的附加设备如下所述。

X-rite(麦克白)颜色检查器

这些图表是众所周知的,如图18所示。它们的价格通常不到100英镑。

色度计需要某种色度计来测量校准图像的色温和光照水平。其中一个如图19所示,通常花费几百英镑。

根据应用的不同,可以使用简单得多的仪器。例如,手机可以很好地报告色温和光照水平,虽然它的读数可能非常接近,但它可能足以满足某些使用情况。

集成球体和平场LED

有一些相对复杂的设备——集成球体和平场LED灯——可以帮助校准透镜遮光,当它们可用时,这些设备可能会被证明是有益的。CTT被设计为对每个色温的多个图像进行平均,因此使用成本低于50英镑的廉价LED视频灯,可能还需要额外的漫射器,可以获得相当合理的结果。如果灯能产生几个色温,接近“室内”和“室外”,那就很方便了。

  • 使用libcamera捕获校准图像

调谐过程需要捕获原始图像并将其输入到调谐工具中。如前所述,我们推荐Raspberry Pi的rpicam应用程序用于此目的,但libcamera本身提供的qcam应用程序也很合适。这两个应用程序都将捕获所需的全分辨率原始文件(DNG或Adobe“数字负片”格式)。

捕获原始图像

相机调整文件保存在Raspberry Pi IPA文件夹下的vc4/data(Pi 4或更早的设备)或pisp/data(Pi 5)文件夹中,控制算法希望在那里为每个使用的相机找到一个JSON文件,该文件根据驱动程序中暴露的传感器名称命名。当然,在调整新相机时,我们没有,所以我们为未校准的相机提供了一个可以复制的调整文件。例如,当调整一个名为xyz123的新传感器时,我们只需将unlibrated.json复制到xyz123.json,所有这些都在同一个文件夹中。

新复制的未校准调整将从几乎任何传感器中产生可识别的图像,但只有一个参数必须在使用前进行配置。这是黑电平,必须将其设置为传感器数据表中按比例放大到16位的正确值。因此,如果您的传感器生成10位样本,并且黑色级别为64,那么新的未校准调整文件(xyz123.json)中的正确值将为4096。要使用rpicam静态捕捉DNG,请输入(用您选择的图像名称代替image.jpg)

rpicam - still -r -o image .jpg

它将生成一个名为image.jpg的全分辨率jpeg文件和一个DNG文件image.DNG(名称相同,但扩展名为.DNG)。第二个文件包含生成jpeg的原始数据。

请注意,如果图像过度曝光了而不起作用,CTT有时可能会丢弃图像,并且会在控制台日志中报告这一情况。大多数情况下,产生的调整应该仍然是合理的,但您可能希望以较低的曝光率重新拍摄这些特定的图像,例如:

rpicam - still -r -o image .jpg --ev -1.0

这将一站减少曝光。

图像捕获要求

正如我们已经解释的,有两种(在Pi 5上,可选地有三种)不同类型的校准图像。因为我们最有可能使用未校准的调谐,所以在一些图像中,颜色平衡可能会出现错误。请放心,这没有什么区别——调整工具只使用原始相机数据(不受影响);在拍摄时显示的图像纯粹是为了方便并且有助于对每个镜头进行取景。

麦克白图表图像

这里的目的是捕捉包含麦克白图表的图像。CTT自动定位麦克白图表,因此图表应该

•合理集中,

•不太小,

•相当直,以及

•未被认购,除了边缘的一点点(可能是被持有的地方)。

图像应在不同色温的范围内拍摄,至少涵盖相机预计会遇到的操作条件。对于在广泛的条件下使用的相机系统,这可能包括从大约2500K到大约8000K的灯。在可以产生不同光源的相机实验室和/或在现实世界的操作条件下拍摄图像是可以接受的。通常,校准图片越接近最终操作环境,结果可能越好。以下是几张可接受的校准图片。

左手的照片是在一个专门建造的小型摄影实验室/工作室拍摄的,而第二张照片只是在办公室大厅拍摄的。我们可能不建议比这张左图中的图表小得多。进一步观察,右侧图像显示了一些桶形失真——在显示的水平上,CTT仍然能够处理图像。

拍摄后,应命名图像,以便在文件名中包含色温(后跟“k”或“k”)和照度水平(后跟“l”或“l”)。有效的文件名可能包括

•imx219_2954k_1749l.dng,用于1749勒克斯拍摄的图像,色温为2954k,或

•1749L_2954K.dng,用于同一图像。

LSC图像

与麦克白校准图像一样,图像应根据可用的光源(尽管不一定是相同的光源)以不同的色温拍摄。准确反映和覆盖操作条件范围的图像可能是有益的。然而,在这里,图像必须是完全没有特征的、平坦和均匀的表面,例如LED视频灯。同样,文件名应该包含色温(后面跟着“k”或“k”)。这种情况下不需要记录勒克斯水平,但文件名必须包括alsc,以便在加载这些图像时将其与麦克白图表图像区分开来。

在有专门设备的情况下,每种色温的单镜头阴影图像可能就足够了。否则,应在场景中的亮度变化尽可能低的情况下拍摄图像,并且CTT将为每个色温预期多个校准图像,其中每个图像应在相机旋转或定位不同的情况下进行拍摄。例如,对于每个

我们可能会提交色温

•每张2张图像,一张是相机通常向上的位置,另一张是将相机倒置的位置

向下,或

•每个图像4张,每张图像将相机清晰地放置在LED视频灯上。

CTT对每个色温的图像进行平均,从而减少不均匀照明对场景的影响,并使固有透镜产生的颜色和亮度偏移更容易辨别。

图21:镜头明暗处理图像alsc_3850k_1.dng和alsc_3850k_2.dng。在这种情况下,图像略有不同,因为它们在LED灯上的位置不同。

ALSC算法所需的单个亮度校正表是通过对所有色温的所有LSC图像求平均值来计算的。

色差校正(CAC)图像

此功能仅在Pi 5上可用,在其他平台上可以忽略。即使在Pi 5上,也可以选择提供这些图像。如果没有提供,ISP中的CAC功能将被最终调整文件禁用。可以提供一个或多个CAC图像,并且它们都将通过在文件名中具有字符串CAC来识别。在提供多个图像的情况下,将它们平均在一起以形成最终的CAC调整表。

CAC校正功能仅适用于横向色差。图像应该是cac_chart.pdf文件,应该使用质量合理的打印机打印出来,不会产生任何彩色条纹。通常,通过打印尽可能大的图像以使相机离得更远,优选地至少A3尺寸,将获得最佳结果。我们还建议您注意调整可变焦距的镜头。

图22:此图像cac_chart.pdf应与相机tuning工具一起提供。

  • Creating the Tuning

Collecting the Files

一旦捕捉到所有校准图像,就应将它们放在一个文件夹中,不包含其他图像文件。下面的目录列表显示了这样一个校准文件夹可能包含的内容示例。

2498 K_106l .dng
2811 K_403l .dng
2911 K_1208l .dng
2919 K_605l .dng
3627 K_1247l .dng
4600 K_998l .dng
5716 K_1069l .dng
8575 K_170l .dng
alsc_3000K_1 .dng
alsc_3000K_1u .dng
alsc_3850K_1 .dng
alsc_3850K_1u .dng
alsc_6000K_1 .dng
alsc_6000K_1u .dng

在这个例子中,我们有八个麦克白图图像,覆盖八个不同的光源,以及三对仅覆盖三种色温的透镜阴影图像,其中第二对图像与第一对图像相比旋转了180度。请注意,在每个不同的色温下,应该只有一张麦克白图表图像。

Running the Tool

调优工具可以在utils/raspberrrypi/ctt的根libcamera目录下找到,并且可以通过执行那里的ctt.py来运行。它采用以下参数

Table 29: Camera tuning tool command line options.

例如,可以在libcamera文件夹utils/raspberrypi/ctt中输入

./ ctt.py -t vc4 -i ~/ imx219_calibration_folder -o imx219 . json

该工具运行需要几秒钟的时间,报告在此期间的进度。默认配置通常应该是适当的,但为了完整起见,下面包含了一个示例CTT配置文件(同一文件夹中还有CTT_config_example.json)。

{
" disable ": [],
" plot ": [],
" alsc ": {
" do_alsc_colour ": 1,
" luminance_strength ": 0.5
},
“awb”: {
" greyworld ": 0
},
" blacklevel ": -1,
" macbeth ": {
" small ": 0,
" show ": 0
}

If necessary the fields here can be modified, as follows.

  • tuning结果的微调

Blocks not Tuned

有一些块CTT实际上并没有进行调优,而只是输出默认参数。在这些情况下,默认参数通常应该足够(在某种意义上,它们已经“自适应”于图像),并且除了作为对调整文件的任何更一般的美学更改的一部分之外,没有特别的理由更改它们。这些块是:

1.缺陷像素(rpi.dpc)-这将保持在通常适当的“正常”校正强度。

2.空间去噪(rpi.sdn或rpi.Denoise中的sdn块)-此块没有特定的调整,但是,由于它继承并使用了调整后的图像噪声轮廓,因此不需要特别更改任何内容。

3.Contast(rpi.contrast)-CTT输出伽马曲线,尽管事实上它只是一条固定的“可感测”伽马曲线。没有进行实际测量来推导它,不过,它应该在几乎所有情况下都能很好地工作。

4.锐化(rpi.Sharpening)-默认参数已设置为使用我们现有的传感器提供合理的结果。然而,其他传感器可能需要一些手动调整。例如,对于像素较大的低分辨率传感器,我们可能需要减少锐化量。

5.自动对焦(rpi.af)-默认情况下,此算法未启用。如果手动启用,请注意,默认参数适用于Raspberry Pi v3相机,使用其他相机可能会产生较差的效果。步长和延迟可以安全地保持在默认值,至少对于VCM类型的聚焦机制来说是这样,但在反向距离和镜头设置之间以及在PDAF可用的情况下,调整增益和置信度值之间的映射是至关重要的。

Guidance on how to Tweak the Tuning

CTT尽一切努力生成一个JSON调优文件,该文件可以直接使用,而且只需付出最少的努力。当然,在某些情况下,我们可能会出于纯粹的美学原因(“我想要更少的锐化”或“我想要更明亮的颜色”),或者因为相机的使用情况与调谐的情况略有不同(也许它是在不在校准集中的光源下使用的,这意味着颜色可能会稍微“偏离”)。我们为每个区块提供了一些关于如何调整的一般指导。

黑色等级(rpi.Black_Level)

这里没有什么真正需要调整的,因为黑色级别应该与相机数据表中的级别匹配(放大到16位)。

缺陷像素校正(rpi.dpc)

这里只有一个强度参数,默认为1(“正常”)。如果缺陷像素不明显,那么将其设置为零可能是值得的,因为理论上这将允许恢复稍微更多的细节,尽管效果非常微弱。

如果有缺陷的像素是一个问题,那么该值应该增加到2。请注意,测试应始终包括低光图像,因为当模拟增益高时,“弱”像素往往会从木制品中爬出来。

勒克斯(rpi.Lux)

这里不应该有任何调整。这些值来源于麦克白图的一张校准图像,除非这些图像被分类为不正确的勒克斯读数,否则很难想象可能需要改变什么。

噪声(rpi.Noise)

噪声轮廓本身(由此处的参数定义)通常不应更改。如果需要或多或少的空间去噪,则最好更改空间去噪参数(rpi.sdn或rpi.denoise)。

绿色均衡(rpi.geq)

必须检查测试图像,以确定是否存在绿色不平衡问题,正如前面讨论的“迷宫”伪影所证明的那样。如果校准图像构成的条件比使用相机的条件更广泛,那么这里的数字可能会减少。然而,如果迷宫伪影是可见的,那么它们将需要增加。这里的值(偏移和斜率)定义了一条直线——如果在图像的较暗部分看到迷宫伪影,那么增加偏移可能更有效;如果在图像的明亮部分中看到它们,则可以建议增加斜率。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

[外链图片转存中…(img-hrRjUWXJ-1715756950256)]

[外链图片转存中…(img-nRFLttRQ-1715756950256)]

[外链图片转存中…(img-jFLsRKey-1715756950257)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值