Simatest - 相机/ISP模拟器

说明和参考

相关网页

Simatest:概述– Simatest 的简要介绍。推荐给初学者。

Simatest 示例– Simatest 的使用示例。对比模拟结果和测量结果。比这篇长文更易于阅读。

图像传感器噪声——测量与建模——使用原始文件进行图像传感器动态范围和Simatest 分析

使用色彩/色调交互式分析——对色彩和灰度测试图表进行交互式分析

颜色/色调和 eSFR ISO 噪声测量– 描述如何从原始图像中测量图像传感器噪声

动态范围——概述及用于计算动态范围的 Imatest 模块链接

摄影图像中的噪声——基础介绍

颜色校正矩阵 (CCM)计算一个矩阵(通常为 3×3),用于校正图像颜色(通常来自 RAW 图像)。

图像信息指标——基于香农信息论的新型测量方法,能够更准确地预测机器视觉系统的性能。

Simatest是 Imatest 25.1 的一部分,可通过Imatest Pilot 计划获得。

介绍

 
如果您是 Simatest 的新手,我们建议您先阅读Simatest:概述。
比本页(说明和参考)更简洁易读,
尽管这两个页面有很多相同的内容。

Simatest——Imatest公司于2025年初推出的相机和ISP(图像信号处理)模拟器,能够模拟完整的相机系统,包括镜头退化、图像传感器噪声和ISP流水线的影响,从而预测所有重要的图像质量指标(KPI)。它包含大量可以按任意顺序应用的ISP处理模块。

 
Simatest 旨在加速相机系统和图像处理流程的开发。
并促进探索
镜头、图像传感器和图像处理对相机系统性能的影响。

Simatest 的输入包括:

图像传感器噪声或许是相机最重要的物理特性。Simatest的图像传感器噪声模型基于对灰度动态范围图原始图像的测量,并由Color/Tone进行分析。 或者基于EMVA 1288 的结果。它具有很高的精度,能够针对各种 ISP 设计和环境(包括低照度环境)计算图像系统性能。由于性能是根据以电子为单位测量的传感器和噪声信号计算得出的,因此无需进行辐射测量(入射到传感器上的精确光能量) ,尽管我们计划在不久的将来将其作为可选功能添加。这简化了Simatest 的操作。

图像传感器噪声模型在Simatest 概述底部的附录中进行了总结,并在图像传感器噪声——测量和建模中进行了详细描述。


我们将重点介绍(相对较少的)物理属性,这些属性与设置窗口中(众多的)ISP 调整项混合在一起。

Simatest框图

Simatest 输入图像包括

虽然Simatest可以处理任何图像,但如果需要定量结果(例如 MTF、色调响应、信息容量等),建议使用测试图表图像。推荐的测试图表图像如下所示。

Simatest 处理包括

Simatest 结果

Simatest包含一个精确的图像传感器噪声模型,该模型基于原始图像测量值或 EMVA 1288 测试结果。虽然辐射度计算有助于确定相机的绝对灵敏度,但目前无需进行此类计算。未来可能会添加辐射度计算功能。

Simatest 具有可扩展性。我们将根据客户需求随时添加处理模块。初始模块集主要侧重于影响可见且可测量图像质量的操作。

Simatest可以处理批量图像,自动读取、处理和保存批量图像。

Simatest 输入文件

Simatest 的输入文件可以是任何图像文件,无论是原始图像还是去马赛克图像,只要是Simatest可读取且列于“图像文件格式和采集设备”列表中的文件即可。虽然Simatest可以处理任何图像,但测试图表图像能产生最有用的定量结果。输入文件主要有三种来源。

测试图表程序——Imatest测试图表程序是获取理想测试图表图像进行完整相机模拟的最便捷来源。以下示例展示了如何设置以创建 2400×1600 像素的增强型 eSFR ISO 2017测试图表。

增强型 eSFR ISO 2017 图表的测试图表窗口

测试图表功能允许您创建 SVG(可缩放矢量图形)或位图(TIFF 或 PNG)图表文件,这些文件可用于打印实体图表或分析图表图像。它包含多种图表类型,可在“图案”下拉菜单(左上角)中选择,并提供丰富的选项。具有连续色调的图表图案(例如正弦西门子星形图案)必须创建为位图文件,并调整尺寸以适应打印或Imatest分析。用于Simatest的图表最初是 SVG 图表,必须转换为位图文件。

以下信息足以帮助您入门。完整文档请参阅“测试图表”和“SVG 测试图表” 。您还可以下载用于开发和测试Simatest 的2400×1600 eSFR ISO PNG 图像(已添加颜色块)。

大多数用于查看或打印的图像都使用 Gamma = 2.2(显示或色彩空间 Gamma 值)创建。在Simatest中使用这些图像时,请将输入 Gamma 值设置为 0.45 。某些测试图表设置隐藏在下拉菜单中。我们建议在“设置”下拉菜单中选择 eSFR LogWedge max = 4000 LW/PH。

创建测试图表时,可以直接从测试图表中保存 8/24 位 PNG 位图文件。选中图表预览图像(如上图所示)正下方的“保存 PNG(位图)文件”复选框,然后在旁边的框中选择PNG 高度(像素) 。

设置完成后,按下 “创建测试图表”按钮,并将文件(您将获得 SVG 和 PNG 格式的文件)保存到方便的位置。

Inkscape (一款优秀的免费软件)可以打开SVG文件,用于打印任意尺寸的图像,或将其转换为位深度为 8 位或 16 位(24 位或 48 位颜色)的位图文件。对于色调响应或动态范围图表,我们强烈建议将 SVG 文件转换为 16 位或 48 位 PNG 或 TIFF(位图)文件。

Inkscape窗口显示导出设置

镜头设计程序(例如Code V或Zemax OpticStudio)允许您处理测试图图像,并使用逼真的镜头模型对其进行降级处理(添加模糊、色差和暗角)。测试图图像可以使用Imatest Target Generator创建,它是Test Charts的后端,可将 SVG 图表转换为位图文件。 [必须验证:输入到 Code V 的图表必须具有 gamma = 1(线性 gamma)。在Simatest中使用这些图像时,请将输入 gamma 设置为 1。 ]使用镜头设计程序后,除非需要模拟抗锯齿(光学低通)滤波器,否则不需要 Simatest(模糊)滤波器。

从相机获取的图像——RAW格式或经过最少处理的图像,使用LibRaw或ReadRaw转换为 RGB 格式——效果很好。这些图像包括需要调整的开发系统中的实际图像。这些图像本身就存在模糊和噪点,因此不需要使用(模糊)滤镜和降噪模块。

推荐测试图表

对于模拟图像——右侧所示的图表是Imatest 36 色块动态范围测试图表的特殊版本,添加了类似于常见的 24 色块Colorchecker 的颜色。它旨在用于Simatest模拟,而不是用于实际测量。实际测量应使用透射式36 色块动态范围测试图表,可从Imatest 商店购买。

36 格图对于测量图像传感器噪声(光子传输曲线)特别有价值。它们被用于Simatest 概述、 Simatest 示例和图像传感器噪声——测量和建模中的仿真。

模拟结果与物理测量结果吻合良好,因为光子传输曲线、调制传递函数 (MTF) 和颜色测量对区域大小相对不敏感。模拟图像和测量图像的总尺寸可以不同;它们无需填满整个画面,尤其是在高分辨率图像中,因为桶形畸变(来自鱼眼镜头)或光线衰减(渐晕)可能会成为问题。

您可以在这里下载该图像的 48 位颜色 1901×1600 版本。

对于因镜头设计程序而导致图像质量下降的情况,我们推荐使用eSFR ISO 色卡(增强版 (3:2) 或扩展版 (16:9)),这些色卡旨在填充整个画面,并且其像素尺寸应与图像传感器相同。我们提供了两个 eSFR ISO 色卡的 SVG 文件,它们应该适用于大多数应用。您可以使用Inkscape将它们转换为位图文件,并根据需要进行裁剪或填充。请注意,由于它们是使用 gamma = 1 创建的,因此看起来比较暗。

包含所有 Simatest SVG 和 PNG 测试图表图像的压缩文件|增强型 eSFR ISO PNG |扩展型 eSFR ISO PNG

应避免使用消费级相机拍摄的大多数 JPEG 图像,因为它们经过大量处理,包括复杂的色调响应曲线(带有“肩部”)和非线性、非均匀的双边滤波,使得难以获得有用的结果。

文件批量处理:如果选择多个文件,系统将读取、处理这些文件,并使用已保存的设置自动将它们批量保存。(大多数输出结果不会显示,但您当然可以打开已保存的文件进行查看。)选择文件后,将打开右侧所示的对话框。名为root_file_name.ext的文件将保存为root_file_name – ext -simatest.png。

在批量处理图像之前,您应该先处理单个图像以确保设置正确。请注意,批量计算并未针对速度进行优化,因此批量处理通常每个图像需要几秒钟,不适用于处理大量图像。

Simatest 开窗

运行 Simatest

在“实用工具”下拉菜单或Imatest主窗口右侧的“实用工具”选项卡中,按下“Simatest”按钮(如图右侧所示)。要执行分析,

按下“读取图像文件”和“Simatest 设置”的顺序无关紧要。

这是更新后的Simatest窗口。在这种情况下,未放大查看的处理后图像与输入图像非常接近。但放大后并排查看时,它们看起来会截然不同,如下所示。

Simatest窗口显示处理后的图像(查看输入图像的输入)

设置

Simatest 设置窗口允许您设置分析:您可以选择处理模块,并调整其参数和操作顺序。要打开设置窗口,请按Simatest窗口左上角的“Simatest 设置”按钮。由于设置会从上次运行中保存,因此您可能无需打开它。设置可以在读取图像之前或之后进行(但如果要批量处理图像,则必须始终在读取图像之前进行)。

“设置”窗口包含大量处理模块。其中一些模块,例如“锐化” 、 “色调映射”或“双边滤波器” ,具有多种方法(算法)和相关参数,并以矩形框显示。而另一些模块,例如“曝光”或“增益” ,最多只有一个相关参数,因此不会显示在框内。它们在“设置”窗口中的顺序与选择操作的顺序无关。

Simatest 设置分为五个区域: 1.输入处理和降级,2.降级(噪点、模糊) ,3.色彩和色调调整,4.锐化/降噪,以及5.图像文件保存设置。某些类别存在重叠,例如,由于 cos 4镜头阴影既可以添加也可以校正暗角,因此我们将其放在“调整”而不是“降级”中。

Simatest 设置窗口

右上角的“图像信号处理 (ISP) 模块”框包含操作顺序。空白行旨在方便插入、排列和删除条目,当设置传输到主窗口或进行处理时,这些空白行将被忽略(不显示)。

选择和排序图像处理模块
  1. 选择要包含在图像处理流程中的模块。
  2. 根据需要调整参数——滑块、弹出菜单或编辑框。相应的“设置”窗口将变为白色底红色背景,并保持此状态,直到将设置复制到“ISP 块”框或再次单击“设置”取消为止。
  3. 使用每个块旁边的“设置”弹出菜单按钮(其中列出了行号 (1-25)),将设置输入到右侧的“图像处理 (ISP) 块”列表框中。
  4. 请注意,可以通过更改设置值并将其输入到另一行来重复使用设置。
  5. 设置框的颜色深浅表示模块的状态。
    白色底绿色图案表示该模块位于图像处理模块列表框中。
    白色底红色表示该方块已被调整,但尚未被选中。
    按Set 键,然后按Set 键(而不是行号)将盒子重置为黑白模式,而无需选中它。
  6. 图像处理 (ISP) 块列表框包含许多空白行。这些空白行是为了方便添加和编辑处理块而设置的。在执行计算时,这些空白行将被忽略。您可以使用列表框下方的按钮轻松编辑处理块的顺序,这些按钮包括:插入、删除、上移、下移、清除、全部清除、启用和禁用(注释掉)。
    插入在当前行之前插入一个空行,并将其余行向下移动一行。
    删除删除当前行并将后面的行向上移动一行。
    上移将当前行向上移动,与上一行交换位置。
    向下移动将当前行向下移动,与下一行交换位置。
    清除清除(空(当前行。不要移动任何行。
    清除所有行,即重置。如果误按此键,请按“取消”。
    启用:如果存在,请移除当前行的“%”注释指示符以启用该行。
    禁用(注释掉)通过以“%”开头的注释来禁用当前行。
  7. 按下“确定”按钮保存设置,关闭“设置”窗口,并将控制权返回给Simatest主程序。 窗口中。选定的图像处理模块(已移除空白和禁用行)将显示在Simatest窗口中。如果选中了“自动更新”(设置窗口右下角),则计算结果将自动更新,从而节省一个步骤(少按一次按钮)。如果您更改了设置但未复制,系统会发出警告。

摘要:设置分两步进行:
(1)调整参数,
(2)使用“设置”下拉菜单,将其移动到相应的行中。
图像处理模块框,可以根据需要进行编辑。

由于很容易忘记步骤 (2),当相应的参数已调整但尚未移动时,设置下拉菜单将变为白色,背景为红色。

图像处理模块

如前所述,更新计算会按照选定的顺序应用图像处理模块。根据输入图像源的不同,某些降级或增强步骤可能在将图像输入Simatest之前就已经执行。例如,消费级相机拍摄的 JPEG 图像通常包含非线性、非均匀双边滤波器(我们不建议在Simatest中使用此类图像)。噪声和滤波(模糊)已经隐式地应用于相机采集的图像(即,您无需添加噪声和模糊,因为它们已存在于图像中)。

以下是截至 2025 年 1 月可用的处理函数列表。大多数是来自 MATLAB 文件交换中心的标准 MATLAB 函数,或是Imatest自定义代码。注:(L) 仅推荐用于线性图像。

处理模块目录
输入伽马输入图像伽玛值
曝光,收益设置曝光和增益倍率。模拟曝光指数(ISO感光度)。
马赛克/德莫萨马赛克对图像进行(重新)马赛克(RGB → 模拟拜耳原始图像)或去马赛克处理。
RGB平衡设置各个 RGB 通道的增益
雾/光晕/朦胧眩光此外,还可用于消除黑电平偏移
单色将 RGB 图像转换为单色图像。
AWB自动白平衡
线性化图像线性化
伽马更改伽玛值(乘数或目标值)
余弦4透镜遮光应用或校正 cos 4透镜阴影(“渐晕”)
倒置将图像反转(正 ↔ 负)
噪音高斯噪声——可以是简单的噪声,也可以是传感器噪声(暗噪声+光子散粒噪声)
筛选图像滤波(高斯滤波、运动模糊滤波、失焦滤波、艾里斑滤波)
径向几何添加或校正畸变或横向色差
中央管理学院颜色校正矩阵(先前已计算)
色调映射调整 HDR 色调以适应有限动态范围的显示器。提供 3 种类型。
锐化锐化图像。USM 或标准
双边滤波器边缘保持降噪。2 种类型。
非局部均值过滤器另一种保持边缘的降噪滤波器SLOW
保存文件精度以 8 位、16 位等精度保存文件
保存文件偏移量保存文件偏移量 (DN)。用于复制相机文件的属性
保存文件饱和度保存文件饱和度(DN;最大值)


注:下方右列中的 (L) 表示建议使用线性伽玛 (1)。

处理块描述功能:
链接中描述
输入伽马输入 gamma不是处理块,它用于跟踪处理的每个状态下的图像 gamma 值——这很重要,因为某些操作要求图像是线性的(gamma = 1;用(L)表示)。 如果输入的伽玛值不正确,几乎肯定会出现错误。对于(线性)RAW 图像,输入伽玛值通常为 1;对于可互换色彩空间图像(例如 sRGB、Adobe RGB 等),输入伽玛值通常在 0.45 到 0.5 之间。对于“黑盒”图像,可以使用“颜色/色调”功能测量伽玛值。 伽玛值、音调响应曲线及相关概念
初始处理和调整

接触

增益 = 1/曝光量

增益(通过滑块设置)

曝光/增益倍增系数(伽玛=1(线性)为获得良好效果)

曝光度(由滑块设置的倍数;通常小于 1)通常在添加噪声之前应用于模拟图像。它代表实际的曝光变化。

增益 = 1/曝光度通常在添加噪声之后应用。

有效曝光指数(又称“ISO感光度”)可通过以下方式调整:首先将图像振幅乘以曝光量(通常小于1),然后施加图像传感器噪声,最后乘以增益= 1/曝光量。这相当于将EI乘以1/曝光量(或增益),从而降低信噪比。

例如,对于基准曝光指数 (EI) 为 100 的情况,在噪声出现之前应用曝光量 = 0.125,之后应用曝光量倒数 = 8,相当于将曝光量提高 8 倍至 800。由于光子散粒噪声(随信号的平方根增加)往往占主导地位(除了非常暗的区域),因此信噪比的下降小于 1/8 (0.125)。

(左)

拜耳马赛克

马赛克

去马赛克功能使用 MATLAB 的demosaic函数,将来自图像传感器的彩色滤光片阵列 (CFA)马赛克拜耳原始图像(单色格式)转换为三色 RGB 文件。该函数采用备受推崇的Malvar-He-Cutler算法( 与斯坦福大学的版本略有不同)。去马赛克是一个复杂的过程,可能会产生伪影并影响噪声功率谱。在运行Simatest之前,也可以使用Imatest 的LibRaw 和 ReadRaw模块对原始相机文件进行去马赛克处理。

我们发现MATLAB的去马赛克函数存在一些缺陷:在不同颜色区域之间的锐利边界处会出现“拉链状”锯齿。目前我们还没有合适的替代方案(截至2025年4月)。

拜耳马赛克(去马赛克的逆过程)将三色 RGB 图像转换为单色、马赛克状的伪原始图像,可用于向图像添加噪声以及研究当Simatest输入为模拟 (RGB) 图像时去马赛克的效果。它使用一种简单直接的算法(无伪影)将 RGB 图像转换为四种拜耳排列方式之一:{RGGB、GRBG、GBRG 或 BGGR}。

马赛克

最原始的处理

IPOL 参考

斯坦福参考

RGB平衡
(相机的物理特性)

添加或校正 RGB 不平衡,这种不平衡常见于原始图像中,通常绿色通道的值大于红色或蓝色通道。R、G 或 B 的值可以在单独的框中输入。数值可在“颜色/色调”中找到。乘以该值可以增加不平衡,这适用于在添加噪点之前;除以该值可以校正不平衡,这适用于在后期处理流程中。

(左)

雾(眩光或朦胧眩光)
(相机的物理特性)

给图像添加雾化效果:相当于添加光晕或朦胧眩光。向图像添加或减去一个恒定值(雾化)。
图像输出= 雾 + ( 1-雾)*图像输入雾通常是一个很小的比例,<0.3。

如果存在黑电平偏移,可以使用负的雾度值来消除黑电平偏移。
单色使用亮度通道方程(通常为 0.2125×R + 0.7154×G + 0.0721×B)或三个通道的平均值,将彩色图像( m × n × 3)转换为单色图像( m × n )。
自动白平衡 (AWB)使用简单的“灰色世界”算法执行自动白平衡,这对于大多数测试图表图像来说足够了,但对于真实世界的图像来说不够,尤其是当它们有主色调时。
线性化(集合) (相当于推荐的 Gamma 目标 1)对图像进行线性化(移除 Gamma 编码)。图像可以进行线性化,应用各种操作,然后在 ISP 流水线的末端附近重新应用最终的 Gamma 编码。对于大多数处理模块,例如标准锐化(锐化页面中描述的 1D 锐化的 2D 版本),建议使用 Gamma = 1。不建议用于 USM 锐化。 
伽马对图像应用伽马编码。伽马值可以通过滑块(如上图所示)和包含“目标”和“倍数”的弹出菜单进行选择。这一点很重要,因为输入和输出可能都经过伽马编码(通常伽马值约为 0.5),但许多操作可能需要使用伽马值 1 执行。对于“倍数”选项,
图像输出= 图像输入γ 。对于目标,其中 gamma 的当前值为γ_current ,
图像输出= 图像输入(γ/γ_current) 。
伽玛值、音调响应曲线及相关概念

添加,校正 cos 4透镜阴影

也称为镜头“渐晕” (建议伽玛值设为 1(线性))

使用标准的 cos 4角方程添加或校正渐晕(光线衰减)。必须使用滑块输入镜头焦距/传感器对角线距离。适用于 ISP 处理流程早期(噪声添加之前)的模拟图像。实际相机图像中已经存在渐晕。

镜头阴影可以在后期处理流程中进行校正,此时伽马值仍为 1。

(左)
反转(集合)反转图像,即将其转换为负片。不常用。最适用于线性图像(建议 gamma = 1(线性))。
调整大小通过将尺寸乘以缩放比例来调整图像大小。可以使用最近邻插值、双线性插值或双三次插值方法。
图像退化:模糊、噪声、几何形状
常见于相机拍摄的图像中,且未经处理。运算过程通常是线性的。

噪声(高斯噪声)

(图像传感器噪声是相机的一种物理特性)

给图像添加噪点。

关键选择是

噪声(高斯噪声)- 简单:与信号无关。散粒噪声和固定模式噪声已禁用。

噪声(高斯)-应用与信号相关的图像传感器噪声。所有设置均已启用。请使用“颜色/色调”中的设置,如下所示。

当亮度占比为 0 时,RGB 通道中的噪声不相关;当亮度占比为 1 时,噪声相关。(我们仍在完善细节。)

如果将噪声应用于原始图像(已进行拜耳马赛克处理后),则设置无关紧要,因为原始图像是单色的。这样就能得到去马赛克图像中亮度噪声和色度噪声的最佳估计值。

图像传感器噪声对模拟图像至关重要。

必须按照以下描述进行计算,并在Simatest 示例(最佳来源)和Color/Tone & eSFR ISO 噪声测量中进行更详细的说明。应选中“使用传感器噪声模型” ,并将两个噪声参数(光子散粒噪声和暗噪声)分别输入到sigma(分数)和sigma(暗噪声)中。

imnoise :向 HSV V 通道添加噪声。参数 sigma [] 和 Luma noise []。
筛选对图像进行滤波(模糊)处理。通常在添加噪点之前进行,但也可以在添加噪点之后进行(这会影响噪点频谱)。有四种类型的噪点可以模拟镜头模糊、运动模糊、失焦或衍射。
高斯模糊(imgaussfilt - 通用模糊)。请输入以像素为单位的标准差(sigma)。
运动模糊(水平),请输入长度(以像素为单位)。
磁盘(失焦)。请输入半径(以像素为单位)。

艾里斑(衍射)。在滑块中输入第一个零值a (以像素为单位),其中

对于波长λ (绿色约为 0.530 μm)和像素间距 p, a = 1.22 λ F# / p。λ 和p的单位必须一致,通常为微米 (μm)。例如,对于像素间距为 2 μm、光圈 f/2.4 的相机,绿色通道(0.530 μm)的a = 0.776 像素。

应用此滤波器时,2D Airy 核(源自 (2*besselj(1,x/a)./(x/a)).^2),其中 a 是第一个空值,会被复制到剪贴板。

imgaussfilt :使用参数 sigma 对图像进行二维高斯滤波, fspecial :创建一个二维核, filter2 , imfilter

维基百科 Airy Disk | 简单的 Airy 图案

径向几何添加或校正光学畸变(使用多种模型中的任何一种)和/或横向色差。

[注:目前, Imatest是Simatest主窗口中的一个独立模块,而不是设置窗口中的一个模块。它会打开处理后的图像,该图像可能失真,也可能未失真。这是一种权宜之计,使我们能够以较小的修改使用径向几何模块。] 我们计划将其部分功能(很可能是横向色差校正)集成到Simatest中。

径向几何
色调增强:校正颜色或应用三种色调映射算法之一,用于
显示高动态范围 (HDR) 图像,可能会使色调响应呈非线性且不均匀。

颜色校正矩阵(CCM)

截至 2025 年 1 月,尚未很好地集成到 Simatest 中:必须在运行Simatest之前计算 CCM。

应用颜色校正矩阵 (CCM) ,该矩阵可在“颜色/色调”中计算并保存。在应用 CCM 的阶段(通常在 ISP 流水线的末端附近),使用Simatest处理后的图像进行计算。CCM 复选框右侧的“设置 CCM”按钮会打开一个窗口(如右图所示;单击缩略图可查看完整尺寸),您可以在其中设置矩阵(从文件中读取或从剪贴板粘贴,并选择选项(线性化等))。

颜色校正矩阵描述了 CCM,它是在Color/Tone中计算的。

截至2025年1月,该功能尚未完全集成到Simatest中。由于颜色/色调功能需要针对色卡进行区域选择,因此完全集成将面临挑战。

请注意,这里有三个色调映射模块:目的相同,但算法不同。
色调映射为动态范围有限的显示器渲染高动态范围 (HDR) 图像。色调映射是一种用于在动态范围较窄的显示器上近似呈现高动态范围图像的技术。非均匀和非线性色调映射:渲染高动态范围图像以供查看
本地色调映射一种使用拉普拉斯滤波的HDR图像替代色调映射算法。它具有不同的调整参数,产生不同的结果(图像饱和度更高)。该算法具有非均匀性和非线性特征。 局部色调图
对比度受限直方图均衡化CLAHE 处理的是图像中的小区域,称为图块,而不是整幅图像。每个图块的对比度都会被增强,使得输出区域的直方图与“分布”参数指定的直方图近似匹配。然后,使用双线性插值将相邻图块合并,以消除人为引入的边界。对比度,尤其是在均匀区域中,可以进行限制,以避免放大图像中可能存在的任何噪声。非均匀和非线性adapthisteq :对比度受限自适应直方图均衡化(CLAHE)
空间增强:锐化和/或降噪。
双边滤波器的输出取决于图像内容——可能具有高度非线性。
锐化 USM(USM 反色蒙版)使用非锐化掩模(USM)方法锐化灰度或RGB输入图像。在边缘处效果最为明显。USM的工作原理是从原始图像中减去高斯模糊函数。如果阈值大于0,则低对比度区域可能不会被锐化。参见 维基百科。

USM 显然并非线性;它似乎对伽马编码图像效果最佳。它导致图像信息指标出现一些不一致的情况。USM 旨在直接处理无需线性化的彩色空间图像。非线性(令人意外;MATLAB 文档中未提及)。

imsharpen :USM锐化
锐化
标准
使用二维版本(类似于“锐化”页面中描述的一维锐化方法)锐化灰度或 RGB 输入图像。锐化效果在边缘最为明显。其工作原理是从原始图像中减去一个振幅降低的副本,该副本位于半径为R 的圆形轨迹上。由于其计算量更小(即速度更快),因此广泛应用于商用相机中。

最适合线性(伽马值=1)图像,因为它能保持线性度。推荐用于测试锐化对 图像信息指标(例如信噪比增强或边缘信噪比增强)的影响。

执行此操作时,2D锐化内核会被复制到剪贴板。由于标准锐化并非MATLAB函数,我们在下面的方框中提供了更多说明。

自定义Imatest功能 (L)

可以使用 USM 或标准锐化(但同时使用两者没有意义)。

双边滤波器 1
imbilatfilt(MATLAB)
双边滤波由Tomasi 和 Manduchi 于 1998 年提出,是一种用于保持边缘平滑的非迭代方法。广泛应用于消费级相机 JPEG 图像。

我们仍在熟悉MATLAB imbilatfilt函数的实现。图中展示了Simatest 示例中,针对高品质小型数码相机,参数为 {0.0025, 0.7, 5} 的情况。参数:

  1. 平滑度
  2. 空间σ
  3. 社区规模。

imbilatfilt (MATLAB)

双边滤波器 2 bfilt2 (Lanman)运行良好,但速度很慢。参数:
  1. 半宽度 w 是高斯双边滤波器窗口的一半大小。
  2. sigma(范围)是空间域标准差。
  3. σ(域)是强度域标准偏差

bfilter2 (来自 Mathworks 文件交换中心):

非局部均值滤波器另一种边缘保持降噪滤波器。速度较慢。我们还在熟悉它。参数:
  1. 平滑程度(MABLAB 默认值 = 估计图像噪声的标准差 ( σ ))
  2. 搜索窗口大小(MATLAB 默认值 = 21)
  3. 比较窗口大小(MATLAB 默认值 = 5)

imnlmfilt (MATLAB)

图像文件保存设置:当图像保存到文件时应用。
保存文件 精确度设置
  1. 保存图像 - 输入文件精度
  2. 最大 8 位深度
  3. 16 位深度
  4. 16 位,全振幅,RAW 格式除外。RGB 文件具有容器的完整振幅(例如,位深度为 16 时为 65535),且无偏移。推荐。
 
保存文件偏移量(DN)要添加到保存文件中的黑电平偏移量(以像素为单位,即数字)。 
保存文件
饱和度(DN)
保存文件的饱和度级别(最大像素或 DN 级别)。用于在n位容器中表示m位数据(例如,对于存储在n = 16 位文件中的m = 12 位数据,饱和度级别为 4095,其中最大 DN 为 65535)。 

 

锐化(标准;非USM)是 Imatest(非 MATLAB)的一个函数,旨在保持线性。

这是锐化页面中描述的一维锐化方法的二维版本。它是在我们尝试确定使用MATLAB实现的 USM 方法是否适用于二维锐化时创建的。 滤波函数是非线性的(确实如此)。它也比计算量更大的超声波磨削(USM)更接近典型的相机锐化。

对于锐化半径R和锐化量A ,定义k sharp = A /( A +1)。滤波器核是一个 2 R +1×2 R +1 矩阵H (单位为像素),计算方法如下:(1)将距离中心r的每个元素设置为 H( r ) = max(|Rr|,0);(2)设置 H = H/∑H,然后将中心元素设置为 H(R+1,R+1) = 1。

对于半径为 2、强度为 3(强锐化)的滤波器,5×5 核为

-0.0092 -0.0409 -0.0535 -0.0409 -0.0092
-0.0409 -0.0222 0 -0.0222 -0.0409
-0.0535 0 1.0000 0 -0.0535
-0.0409 -0.0222 0 -0.0222 -0.0409
-0.0092 -0.0409 -0.0535 -0.0409 -0.0092

理想情况下,标准锐化应该应用于线性(gamma = 1)图像,至少在计算信息度量时是这样,但我们在模拟的相机JPEG图像中观察到了这一点。标准锐化是一种线性操作(只要过度锐化不会导致图像饱和)。

  

图像传感器噪声模型

本节总结了如何测量图像传感器噪声以输入到上面描述的Simatest Noise模块中。

完整详情请参见《图像传感器噪声——测量与建模》 。

更多详情请参见Simatest 示例和颜色/色调/eSFR ISO 噪声。

图像传感器噪声可以通过原始图像进行测量,也可以从EMVA 1288 测量中得出。

图像文件中的每个像素都由一个数字值DN组成。Simatest 使用归一化信号幅度A = DN / DN <sub>max</sub> ,其中DN <sub>max</sub>是文件支持的最大数字值。对于去马赛克图像, DN <sub>max</sub>通常为2 <sup>-1</sup> 位深度,但对于原始图像则通常不同, 2<sup>-1 </sup> ADC 精度是常见值,但并非普遍适用。 

原始图像可能存在黑电平偏移, DN关闭 详细描述见 图像传感器噪声——黑电平偏移。请参见下面的步骤 5 。

噪声模型是

 线性传感器

其中,暗噪声(读出噪声)、光子散粒噪声和光响应不均匀性(PRNU)固定模式噪声的系数, k<sub> dark</sub> 、 k<sub> shot</sub>和k<sub> PRNU </sub>,是Simatest图像传感器噪声模型的关键参数。它们基于James R. Janesick的《光子转移DN→λ》,SPIE出版社,2007年,第5章,并在图像传感器噪声模型——方程中进行了解释。

噪声计算步骤

  1. 获取灰度测试图的图像,最好是用于测量动态范围的 透射式灰度测试图。
  2. 以原始(未去马赛克)格式保存图像。
  3. 将原始图像读入“颜色/色调交互式”模式,无需进行去马赛克处理。(“颜色色调自动”模式也可使用,但灵活性较差。)对于商业 RAW 文件,建议使用Bayer RAW 16 位线性预设。详细信息请参阅“读取商业 RAW 文件和二进制 RAW 文件”部分。
  4. 由于未去马赛克的图像为单色格式,因此会出现“标准单色还是拜耳RAW?”对话框。请为相机选择合适的像素颜色映射(例如,红色位于R1C1 (RG/GB) 等)。(如果图像包含可识别的颜色,您可以在Rawview中打开它以查找映射。)详细信息请参见“处理拜耳RAW图像” 。
  5. 使用“颜色/色调/eSFR ISO 噪点”中详述的方法,估算偏移量、 DN关闭值和饱和度,并将其输入到“颜色/色调设置”窗口(部分内容显示在右侧)。单击“优化”可获得更精确的值,如“黑电平偏移”中所述。
  6. 以下结果来自一台1000万像素、像素尺寸为2.2微米的数码相机拍摄的原始文件。其中,色彩/色调图10-12最为重要,它们展示了噪声和信噪比随像素级的变化。(这些图仅对原始图像有意义。)

2.2 μm 像素的紧凑型相机噪声与输入像素水平的关系

要在Simatest中输入的数值显示在底部附近的一行中,以[Simatest 的 Sark+shot+FP 噪声系数]开头。参考上面的噪声设置,输入暗噪声 = 0.000395,散粒噪声 = 0.009938,固定模式噪声 = 0.006745。

关于暗噪声和光子散粒噪声的计算细节,请参阅“图像传感器噪声——测量与建模”部分。测量结果与模型结果的比较见下文。 Simatest 示例。

暗噪声实际上是几个与信号无关的噪声源的组合,在OnSemi 应用笔记 AND9189/D中进行了描述。电子(约翰逊)噪声与 (4 kT ) 1/2成正比。

使用“更新计算”或Simatest窗口左侧“计算”组(浅蓝色框)中的其他按钮来处理图像。以下是该组中的控件列表。

“计算”组中的控件(图像左侧)
更新计算结果从输入图像开始,处理列表框中显示的每个图像块。处理完成后显示结果。这是最常见的计算。
输入恢复输入图像视图。
更新期间显示结果 1 秒(复选框)运行更新计算时,每个代码块完成后显示结果 1 秒钟。通常建议逐步执行计算。
逐步计算手动逐步完成计算,每个步骤按一次按钮。系统会显示累计结果。
步骤和显示单个模块手动逐步完成计算,每个计算块按一次按钮。每个计算块完成后,只会显示当前计算块的结果(而非累计结果)。

图像处理完成后,会显示输出图像以及图像下方浅绿色的分析和查看区域。点击图像下方(左侧)的“查看输入”或“查看处理后图像”按钮,即可在两者之间切换。由于这两个视图非常相似,我们展示了更直观的并排视图,并放大显示差异。

并排视图

并排视图允许您并排比较输入图像和处理后的图像,即它们紧挨着显示。点击“查看输入”或“查看处理后” (图像下方,左侧)下方的“并排视图”复选框。首次选中该复选框时,两张图像将完整显示。如果您裁剪其中一张图像,另一张图像也会被裁剪成相同的形状。这样可以进行更有意义的比较。

这是Simatest对 36 色块动态范围图表图像的显示(已裁剪并以并排视图显示,左侧为原始图像,右侧为处理后图像)。原始图像直接来自测试图表。处理后的图像添加了模糊、噪点和锐化效果。

Simatest并排视图。左侧为输入图像;右侧为处理后图像。已放大显示。

结果

处理后的图像可以进行多种操作。

您可以尝试不同的处理设置,并且

使用“保存处理后的图像”功能,您可以将处理后的图像保存到文件中,精度可在“设置”窗口中选择(通常建议使用 16/48 位),然后将其导入Imatest模块进行分析。您可以使用剪贴板进行复制和粘贴,但我们不建议这样做,因为imclipboard功能仅支持 8 位文件深度。

Simatest 示例中展示了Color/Tone和Rescharts的主要结果。

保存拜耳原始(已重新马赛克;未去马赛克)图像文件

点击“文件”菜单,选择“保存伪原始(未去马赛克)图像” ,即可将图像保存为合成的拜耳RAW格式或其他几种格式之一。输出可以是标准图像文件格式,也可以是纯二进制文件。此时会弹出一个对话框,其中包含多个选项。请注意,拜耳(重)马赛克和去马赛克功能是作为ISP处理模块提供的。

马赛克或通道选择:无(普通彩色文件输出)、重新马赛克(拜耳格式)、RCCC(红-清-清-清):R 亮、RCCC(红-清-清-清):R = C/3、单色(Y = 亮度)、单色(均值:等权重)、红、绿、蓝。对于重新马赛克(创建拜耳 RAW 文件),应选择重新马赛克(拜耳格式)。

RmCn 中的红色图标允许您选择四种拜耳配置之一。

Gamma 调整功能允许您调整输出曲线的 Gamma 值。将其设置为 1 表示不做任何更改。使用 2(或 2.2)可将典型的色彩空间 Gamma 值转换为线性 Gamma 值(Gamma = 1)。

保存文件格式允许您选择标准图像文件格式(PNG、JPG(90% 质量)、TIF(大尺寸)、BMP、8 位二进制或 16 位二进制)。二进制文件可以读入通用读取原始数据。

绿色通道增强功能允许您增强绿色通道,使合成的 RAW 图像更接近真实的 RAW 图像,而真实的 RAW 图像通常绿色最强。提供多种蓝/红通道级别可供选择。

选择“保存”后,会弹出一个对话框,允许您选择保存位置和文件名。默认文件名是root_file_name_png (带有所选扩展名)。

Simatest窗口底部的控件

分析和视图(浅绿色)框单独列在下方。控件按列优先顺序从左到右排列。“查看图像/处理后图像”和“并排视图”按钮已在前面说明。

Simatest窗口底部附近有一些设置。常用设置以粗体显示。
保存处理后的图像保存处理后的文件,位深度请参考“设置”窗口右下角浅绿色框中的设置。常用功能。
图像统计在图像统计模块中打开图像,该模块可以执行横截面分析、直方图分析、傅里叶变换分析等等。
帮助打开在线帮助窗口。
同时保存设置(复选框)将设置与处理后的图像文件一起保存。
读取图像文件(2)读取第二个图像文件(到 im_processed 中),以便与原始文件(保留在 im_input 中)进行比较。
处理图像 > clipbd将处理后的图像复制到剪贴板。但受限于位深度。
缩小缩小图像(显示完整图像)。当并排显示出现画面构图问题时,这会很有帮助。
放大裁剪这指的是浅绿色“分析和视图”框中的“裁剪”功能(如下所述),该功能用于 MTF 和 SSIM 测量。此按钮可让您放大裁剪区域。您也可以使用标准的点击和拖动操作来放大图像,但仅用于显示,不会影响 MTF 计算。
已处理 > 输入将处理后的图像移到输入端,以便分析从新的(先前已处理过的)图像开始。
保存屏幕查看和/或保存屏幕截图。必须指定图像查看器。
保存设置将当前设置保存到标准的 imatest-v2.ini 文件中。也可以在“设置”窗口中将设置保存到指定名称的文件中。
出口再见!

实用工具和下拉菜单

ISP 模拟器窗口顶部下拉菜单中的几个实用程序与窗口中的按钮重复(故意冗余)。

下拉菜单中的实用工具
下拉菜单姓名描述
文件显示和/或保存屏幕在图像查看器(推荐使用Irfanview )中显示屏幕,并可选择保存。此功能存在于多个交互式模块中。
保存图片保存处理后的图像。通常情况下,图像将以全精度保存(除非选中“8 位最大值(如下)”选项)。
保存伪原始/重新镶嵌图像可将图像保存为伪RAW(重新马赛克)格式或特殊格式,包括拜耳阵列、RCCC格式,也可选择特定通道。选项众多。请参阅“合成RAW图像” 。
保存图像为单色将图像(可能是彩色图像)另存为单色图像。
将图像保存为 HDR 格式将图像保存为HDR (高动态范围)格式
交换字节序(16 位、32 位输入)交换像素内字节的顺序(在极少数情况下字节顺序错误时很有用)
以 8 位最大精度保存图像文件默认情况下未选中(关闭)。如果选中,图像将以 8 位精度保存。(通常应取消选中此项)。
将图像保存为 HDR 格式将图像保存为HDR (高动态范围)格式
看法颜色条(灰度或彩色)灰度或彩色:用于 SSIM 和 PSNR 显示。颜色条中的颜色可在“选项 II”中更改。
庄稼允许您选择图像分析操作(MTF、SSIM 等)的裁剪区域。与分析和查看区域中的“裁剪”按钮相同。
MTF 对数轴在线性轴和对数轴之间切换 MTF 显示。
分析大多数功能与“分析和查看”部分中的按钮重复,但也有一些新增功能。
图像统计调用图像统计模块,查看图像统计信息,例如直方图和横截面轮廓。
径向几何将处理后的图像发送到径向几何模块,该模块可以返回进一步处理的图像,其中包含添加或校正的光学畸变、横向色差和/或旋转。
OCR使用Matlab 的 OCR 函数进行光学字符识别
人脸检测使用下面描述的 Matlab CAMShift例程。
探测人员使用下文所述的 Matlab detectPeopleACF例程。效果不如人脸检测。
帮助打开包含各种 ISP 模拟模块描述的网页。

分析和视图控件(位于 Simatest 窗口底部附近的浅绿色框中)

显示方式可通过图像下方的按钮或“分析”下拉菜单进行控制。您可以选择以可视化方式显示输入图像或处理后的图像,也可以选择以计算结果显示(对输入图像和处理后的图像进行分析比较)。

结果显示摘要:可通过图像下方的按钮或“分析”下拉菜单选择。
图像统计在图像统计模块中打开图像,该模块可以执行横截面分析、直方图分析、傅里叶变换分析等等。
雷沙茨根据图表类型,对处理后的图像进行 MTF(SFR)和其他类型的分析。
颜色/色调(交互式)对处理后的图像中的灰度或彩色图表进行色调、噪声或动态范围分析。
MTF将处理后/输入图像的MTF显示为空间频率的函数。对裁剪敏感。
MTFnn显示处理后/输入图像的 MTF70-MTF10 极坐标图(空间频率,其中 MTF 为低频值的nn %)。
MTFnnP显示处理后/输入图像的 MTF70P-MTF10P 极坐标图(空间频率,其中 MTF 为峰值的nn %)。
SSIM显示处理后图像和输入图像的结构相似性指数(SSIM),该指数在SSIM模块页面中有详细说明。与 PSNR 相比,SSIM 与视觉差异(图像退化)的相关性更高。
PSNR 和差异显示峰值信噪比以及处理后图像与输入图像之间的差异。
OCR使用Matlab 的 OCR 函数对处理后的图像进行光学字符识别的结果
庄稼裁剪图像以进行计算(SSIM、PSNR 和 MTF)以及显示。打开Imatest标准的粗裁剪和精裁剪窗口。此操作会影响 MTF 曲线(与图像相关)或平均 SSIM 计算等结果(但详细的 SSIM 图不受影响)。按下“裁剪”按钮会启用“裁剪”按钮下方的“缩放以裁剪”按钮。要取消裁剪,请按下“裁剪”按钮并选择整个图像。
人脸检测使用 Matlab CAMShift程序进行人脸检测的结果。
探测人员使用下文所述的 Matlab detectPeopleACF函数进行人员检测的结果。效果不如人脸检测。


Simatest窗口底部

左侧图像下方的“查看输入”按钮可在“查看输入” (选中处理后的图像)和“查看处理后的图像”(选中输入图像)之间切换。这样可以快速直观地比较两幅图像,不过并排视图(如上图所示)效果更佳。切换图像时,缩放比例保持不变。 “图像统计” 、 “Rescharts”和“颜色/色调(交互式)”会将处理后的图像直接发送到相应的分析模块(无需保存文件)。此区域中的大多数其他按钮用于显示计算结果。

SSIM显示的是结构相似性指数, SSIM模块页面对此有详细介绍。它的主要用途是衡量图像压缩对文件保存(例如,不同质量的 JPEG 文件)和数据传输造成的可见影响(即图像质量下降)。

MTF (调制传递函数;等效于空间频率响应)使用类似于随机模块中计算的二维傅里叶变换来计算处理图像和输入图像之间的传递函数,但有一个例外:如果需要有效的 MTF 结果,则不应在仿真中添加噪声,因为二维 MTF 计算对噪声极其敏感。

具有非锐化掩蔽的高斯滤波图像的MTF

高频滚降是由高斯滤波器引起的。

您可以通过在Simatest设置中移除噪声和滤波器(高斯) ,然后点击“更新计算” ,来查看仅使用锐化掩模 (USM) 的 MTF(本例中半径 = 1.5,强度 = 2.5)。锐化掩模的频谱响应与“锐化”页面中描述的标准锐化不同:它的响应不是周期性的,而是上升到强度 + 1 的渐近水平并保持较高水平。您可以使用Simatest比较这两种锐化算法。这张散落硬币图表的图像,周围环绕着大片灰色区域,噪声相对较低。有些图像的噪声则要大得多。

这很好地说明了如何使用Simatest来探索加工块对外观和测量结果的影响。

USM(锐化掩模:半径 = 1.5;数量 = 2.5)的 MTF

光学字符识别(OCR)

Imatest 5.0中新增了 OCR 功能,它使用Matlab 的 OCR 函数,该函数是Tesseract-OCR的一个实现。使用方法如下:

  • 阅读包含感兴趣文字的图片。
  • 如有需要,对图像进行处理。处理方法包括对图像进行降级处理(例如模糊、噪声等),以观察其对检测的影响;或者进行图像增强处理(例如锐化掩模、双边滤波等),以观察是否可以提高检测效果。
  • 将图像裁剪到文本区域(如果图像的大部分区域包含除文本以外的其他元素,强烈建议这样做),然后
  • 点击OCR 。

这将打开 OCR 窗口,并对图像的裁剪区域执行文本识别操作。下方显示了右侧示例图像(噪声(高斯)= 0.002;高斯滤波器 2 = 0.7,图像略有劣化)的识别结果。您可以下载此图像并进行实验,以了解各种劣化和增强处理如何影响 OCR 性能。

请注意,Matlab 的 OCR 性能并不出色。即使是看起来清晰易读的文本,识别效果也很差,尤其是在字体小于 12 磅的情况下。其性能与一些免费或低成本的 OCR 程序(例如gImageReader ( Tesseract-ocr 的图形用户界面前端)和TopOCR )相当。

示例图片:点击查看
可供下载的完整版本。

左侧示例图像包含一组字符(QWERTYUIOPASDFGHJKLZXCVBNM1234567890),字号从 20 磅到 7 磅不等,字体为 Calibri 常规、粗体和负粗体。这些字符用于汽车牌照。该文件(此处)使用 Microsoft Word 创建。图像的其余部分是增强型 eSFR ISO图表的一部分,包含楔形区域和两个高对比度正方形。这些区域可用于将 MTF 测量值与 OCR 性能关联起来。

OCR窗口,显示样本图像轻微降级裁剪后的识别结果。

OCR设置

可以通过输入字符子集来限制有效输出字符(如果字符子集为空,则允许所有字符),然后按“计算 OCR”按钮,从而提高字符子集结果。对于示例图像,子集包含拉丁字母大写和数字(汽车牌照上的常见字符)。但改进效果甚微。

QWERTYUIOPASDFGHJKLZXCVBNM1234567890

标准OCR对车牌识别效果不佳。Matlab文件交换中心提供了一些车牌识别程序。如果这些程序效果良好且许可允许,我们可能会添加其中一两个。

默认显示文本(如图所示)。您也可以选择“置信度及单词” ,该选项会显示单词置信度和单个单词。以下是显示内容的几行示例。

0.8545 QWERTYUIOPASDFGHJKLZXCVBNM1234567890
0.8361 QWERTYUIOPASDFGHJKLZXCVBNM123456789O
0.9018 18
0.7842 QWERTVU|OPASDF6HJKLZX(VBNM1234567890
0.8339 16
0.7468 QWEKTYUIOPASDFGHJKLZXCVBNM1234567B90
0.8254 14
0.7252 QWERYYUIOPASDFGI-1JKLZX(\/ENM1Z34567E9(!
0.7784 12
0.5777 QWERTYUWDDASDFGHJI(LZXCVBNM113A567E9u
0.6549 11
0.6276 uwEuHu\onAsur:.r<n<.zxn'aNM:23-4ss7s9u
0.7658 米

复制到剪贴板您可以将当前显示内容复制到剪贴板,以便在文本编辑器或其他应用程序中使用。

保存结果会保存当前显示内容。

可以在“设置”下拉菜单中选择可变宽度或固定宽度字体。

人脸和人物检测

人脸和人物检测功能可从“分析”下拉菜单中调用。目前两者都使用 Matlab 的默认设置。(我们将来可能会添加选项窗口。)参见

使用 CAMShift和detectPeopleACF进行人脸检测和跟踪

人脸检测的效果比人物检测略好。这里有一个例子,图片是从http://epaperpress.com/portfolio/columbia.html盗用的。Imatest 的作者(他看起来有点狼狈)在左边。点击“更新计算”即可移除标注(重置图像)。

人脸检测示例(左边是一位年轻、湿漉漉、快乐的Imatest作者)
人脸识别功能大部分时间都运行良好,但说真的……你怎么能漏掉保罗和约翰呢?

资源——其中大多数需要大量的编程工作。

Ansys SPEOS 仿真器使用 Zemax 输出。

Synopsys ImSym

斯坦福大学 ISET开源图像处理函数需要相当的编程技能

Infinite ISP 文档– 来自10xEngineers

OpenISP