说明和参考
|
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 的输入包括:
- 图像——来自相机或模拟图像(如下所述)
- 相机系统的物理特性包括镜头模糊、图像传感器噪声(以及MTF,由于难以测量且属于二阶效应,稍后添加)和色彩平衡(取决于照明和传感器/CFA光谱响应)。在模拟特定相机时,这些特性不应更改,但可以进行调整以探索“假设”场景。
图像传感器噪声或许是相机最重要的物理特性。Simatest的图像传感器噪声模型基于对灰度动态范围图原始图像的测量,并由Color/Tone进行分析。 或者基于EMVA 1288 的结果。它具有很高的精度,能够针对各种 ISP 设计和环境(包括低照度环境)计算图像系统性能。由于性能是根据以电子为单位测量的传感器和噪声信号计算得出的,因此无需进行辐射测量(入射到传感器上的精确光能量) ,尽管我们计划在不久的将来将其作为可选功能添加。这简化了Simatest 的操作。 图像传感器噪声模型在Simatest 概述底部的附录中进行了总结,并在图像传感器噪声——测量和建模中进行了详细描述。 |
我们将重点介绍(相对较少的)物理属性,这些属性与设置窗口中(众多的)ISP 调整项混合在一起。
- 可以自由进行的调整——其中大多数执行图像信号处理(ISP)。
Simatest框图
- 从相机获取的未经或经过最少处理的相机图像,无论是否经过去马赛克处理,都应尽量减少处理(最好不要进行锐化、降噪等处理)。
- 原始图像用于测量图像传感器噪声以及 RGB 颜色不平衡。
- 使用经过最小处理的去马赛克图像,通过将测量的 MTF 与Simatest高斯滤波结果进行匹配来估计镜头模糊。
- 不建议将经过高度处理的图像(大多数消费级相机拍摄的 JPEG 图像)用于Simatest输入。
- 由Imatest测试图表模块生成的模拟位图测试图表图像,
- 模拟位图图像文件,这些文件已经过镜头设计程序(例如Code V或Zemax OpticStudio)的处理,以包含镜头退化——如果可用,建议使用。
虽然Simatest可以处理任何图像,但如果需要定量结果(例如 MTF、色调响应、信息容量等),建议使用测试图表图像。推荐的测试图表图像如下所示。
Simatest 处理包括
- 相机和镜头图像劣化,如噪声、雾(眩光)和模糊,镜头劣化被高度简化,但足以设计和测试 ISP。
- 图像调整,例如曝光(以及增益以模拟改变曝光指数)、伽玛和拜耳去马赛克/马赛克处理,
- 图像增强,例如应用颜色校正矩阵、色调映射(用于高动态范围 (HDR) 成像)、锐化(标准或 USM)和双边滤波;
- 能够模拟运动模糊、失焦、低光照条件等。
Simatest 结果
- 对于人类视觉——结果可以立即在Simatest中查看。 交互式窗口。您可以单独查看输入和输出图像,也可以并排查看。
- 对于机器视觉——可以在Simatest中查看处理结果,或者直接打开下面列出的Imatest模块,以获得所有主要的图像质量测量结果。
Simatest包含一个精确的图像传感器噪声模型,该模型基于原始图像测量值或 EMVA 1288 测试结果。虽然辐射度计算有助于确定相机的绝对灵敏度,但目前无需进行此类计算。未来可能会添加辐射度计算功能。
Simatest 具有可扩展性。我们将根据客户需求随时添加处理模块。初始模块集主要侧重于影响可见且可测量图像质量的操作。
Simatest可以处理批量图像,自动读取、处理和保存批量图像。
Simatest 输入文件
Simatest 的输入文件可以是任何图像文件,无论是原始图像还是去马赛克图像,只要是Simatest可读取且列于“图像文件格式和采集设备”列表中的文件即可。虽然Simatest可以处理任何图像,但测试图表图像能产生最有用的定量结果。输入文件主要有三种来源。
测试图表程序——Imatest测试图表程序是获取理想测试图表图像进行完整相机模拟的最便捷来源。以下示例展示了如何设置以创建 2400×1600 像素的增强型 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窗口中,按“文件” (下拉菜单), “导出...”按钮。这将在窗口右侧打开一个包含导出设置的区域。
- 将高度(px)设置为所需的像素高度。宽度将保持比例。(当然,您也可以选择宽度)。
- 在图像缩略图下方的框中编辑文件名,然后在右侧的框中选择文件格式。我们推荐使用 PNG (*.png) 或 TIFF (*.tiff) 格式。
- 点击右下角的小齿轮(设置)图标。这将打开“导出格式选项”窗口。我们建议将位深度设置为RGB 16 。
- 按导出按钮保存(导出)位图图像。

镜头设计程序(例如Code V或Zemax OpticStudio)允许您处理测试图图像,并使用逼真的镜头模型对其进行降级处理(添加模糊、色差和暗角)。测试图图像可以使用Imatest Target Generator创建,它是Test Charts的后端,可将 SVG 图表转换为位图文件。 [必须验证:输入到 Code V 的图表必须具有 gamma = 1(线性 gamma)。在Simatest中使用这些图像时,请将输入 gamma 设置为 1。 ]使用镜头设计程序后,除非需要模拟抗锯齿(光学低通)滤波器,否则不需要 Simatest(模糊)滤波器。
从相机获取的图像——RAW格式或经过最少处理的图像,使用LibRaw或ReadRaw转换为 RGB 格式——效果很好。这些图像包括需要调整的开发系统中的实际图像。这些图像本身就存在模糊和噪点,因此不需要使用(模糊)滤镜和降噪模块。
推荐测试图表
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 图像,因为它们经过大量处理,包括复杂的色调响应曲线(带有“肩部”)和非线性、非均匀的双边滤波,使得难以获得有用的结果。

运行 Simatest
在“实用工具”下拉菜单或Imatest主窗口右侧的“实用工具”选项卡中,按下“Simatest”按钮(如图右侧所示)。要执行分析,
- 读取图像文件,支持批量(多个)文件。
- 设置将沿用上次运行的设置。如有需要,您可以从下文所述的Simatest 设置窗口更新这些设置。
- 更新计算结果。如果在设置窗口右下角勾选了“自动更新”,则计算结果将自动更新。
- 选择感兴趣的结果显示,包括将处理后的图像发送到Rescharts 、颜色/色调或图像统计。
按下“读取图像文件”和“Simatest 设置”的顺序无关紧要。
这是更新后的Simatest窗口。在这种情况下,未放大查看的处理后图像与输入图像非常接近。但放大后并排查看时,它们看起来会截然不同,如下所示。
Simatest 设置窗口允许您设置分析:您可以选择处理模块,并调整其参数和操作顺序。要打开设置窗口,请按Simatest窗口左上角的“Simatest 设置”按钮。由于设置会从上次运行中保存,因此您可能无需打开它。设置可以在读取图像之前或之后进行(但如果要批量处理图像,则必须始终在读取图像之前进行)。
“设置”窗口包含大量处理模块。其中一些模块,例如“锐化” 、 “色调映射”或“双边滤波器” ,具有多种方法(算法)和相关参数,并以矩形框显示。而另一些模块,例如“曝光”或“增益” ,最多只有一个相关参数,因此不会显示在框内。它们在“设置”窗口中的顺序与选择操作的顺序无关。
Simatest 设置分为五个区域: 1.输入处理和降级,2.降级(噪点、模糊) ,3.色彩和色调调整,4.锐化/降噪,以及5.图像文件保存设置。某些类别存在重叠,例如,由于 cos 4镜头阴影既可以添加也可以校正暗角,因此我们将其放在“调整”而不是“降级”中。

右上角的“图像信号处理 (ISP) 模块”框包含操作顺序。空白行旨在方便插入、排列和删除条目,当设置传输到主窗口或进行处理时,这些空白行将被忽略(不显示)。
图像处理模块
如前所述,更新计算会按照选定的顺序应用图像处理模块。根据输入图像源的不同,某些降级或增强步骤可能在将图像输入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}。 | |||||
| 添加或校正 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) 。 | 伽玛值、音调响应曲线及相关概念 | ||||
也称为镜头“渐晕” (建议伽玛值设为 1(线性)) 使用标准的 cos 4角方程添加或校正渐晕(光线衰减)。必须使用滑块输入镜头焦距/传感器对角线距离。适用于 ISP 处理流程早期(噪声添加之前)的模拟图像。实际相机图像中已经存在渐晕。 镜头阴影可以在后期处理流程中进行校正,此时伽马值仍为 1。 | (左) | |||||
| 反转(集合) | 反转图像,即将其转换为负片。不常用。最适用于线性图像(建议 gamma = 1(线性))。 | |||||
| 调整大小 | 通过将尺寸乘以缩放比例来调整图像大小。可以使用最近邻插值、双线性插值或双三次插值方法。 | |||||
| 图像退化:模糊、噪声、几何形状 常见于相机拍摄的图像中,且未经处理。运算过程通常是线性的。 | ||||||
噪声(高斯噪声) (图像传感器噪声是相机的一种物理特性) | ![]() 关键选择是 噪声(高斯噪声)- 简单:与信号无关。散粒噪声和固定模式噪声已禁用。 噪声(高斯)-应用与信号相关的图像传感器噪声。所有设置均已启用。请使用“颜色/色调”中的设置,如下所示。 当亮度占比为 0 时,RGB 通道中的噪声不相关;当亮度占比为 1 时,噪声相关。(我们仍在完善细节。) 如果将噪声应用于原始图像(已进行拜耳马赛克处理后),则设置无关紧要,因为原始图像是单色的。这样就能得到去马赛克图像中亮度噪声和色度噪声的最佳估计值。
| imnoise :向 HSV V 通道添加噪声。参数 sigma [] 和 Luma noise []。 | ||||
| 筛选 | 对图像进行滤波(模糊)处理。通常在添加噪点之前进行,但也可以在添加噪点之后进行(这会影响噪点频谱)。有四种类型的噪点可以模拟镜头模糊、运动模糊、失焦或衍射。
| imgaussfilt :使用参数 sigma 对图像进行二维高斯滤波, fspecial :创建一个二维核, filter2 , imfilter | ||||
| 径向几何 | 添加或校正光学畸变(使用多种模型中的任何一种)和/或横向色差。 [注:目前, Imatest是Simatest主窗口中的一个独立模块,而不是设置窗口中的一个模块。它会打开处理后的图像,该图像可能失真,也可能未失真。这是一种权宜之计,使我们能够以较小的修改使用径向几何模块。] 我们计划将其部分功能(很可能是横向色差校正)集成到Simatest中。 | 径向几何 | ||||
| 色调增强:校正颜色或应用三种色调映射算法之一,用于 显示高动态范围 (HDR) 图像,可能会使色调响应呈非线性且不均匀。 | ||||||
截至 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} 的情况。参数:
| imbilatfilt (MATLAB) | ||||
| 双边滤波器 2 bfilt2 (Lanman) | 运行良好,但速度很慢。参数:
| bfilter2 (来自 Mathworks 文件交换中心): | ||||
| 非局部均值滤波器 | 另一种边缘保持降噪滤波器。速度较慢。我们还在熟悉它。参数:
| imnlmfilt (MATLAB) | ||||
| 图像文件保存设置:当图像保存到文件时应用。 | ||||||
| 保存文件 精确度 | 设置
| |||||
| 保存文件偏移量(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 理想情况下,标准锐化应该应用于线性(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章,并在图像传感器噪声模型——方程中进行了解释。 噪声计算步骤
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 色块动态范围图表图像的显示(已裁剪并以并排视图显示,左侧为原始图像,右侧为处理后图像)。原始图像直接来自测试图表。处理后的图像添加了模糊、噪点和锐化效果。

结果
处理后的图像可以进行多种操作。
您可以尝试不同的处理设置,并且
- 使用各种图像显示方式,特别是并排视图,可以立即看到它们对视觉图像质量的影响,或者
- 直接在下列程序之一中以 16/48 位 uint16 格式打开处理后的图像,以获得定量性能测量结果。
使用“保存处理后的图像”功能,您可以将处理后的图像保存到文件中,精度可在“设置”窗口中选择(通常建议使用 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窗口底部的控件
分析和视图(浅绿色)框单独列在下方。控件按列优先顺序从左到右排列。“查看图像/处理后图像”和“并排视图”按钮已在前面说明。
| 保存处理后的图像 | 保存处理后的文件,位深度请参考“设置”窗口右下角浅绿色框中的设置。常用功能。 |
| 图像统计 | 在图像统计模块中打开图像,该模块可以执行横截面分析、直方图分析、傅里叶变换分析等等。 |
| 帮助 | 打开在线帮助窗口。 |
| 同时保存设置(复选框) | 将设置与处理后的图像文件一起保存。 |
| 读取图像文件(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函数进行人员检测的结果。效果不如人脸检测。 |
左侧图像下方的“查看输入”按钮可在“查看输入” (选中处理后的图像)和“查看处理后的图像”(选中输入图像)之间切换。这样可以快速直观地比较两幅图像,不过并排视图(如上图所示)效果更佳。切换图像时,缩放比例保持不变。 “图像统计” 、 “Rescharts”和“颜色/色调(交互式)”会将处理后的图像直接发送到相应的分析模块(无需保存文件)。此区域中的大多数其他按钮用于显示计算结果。
SSIM显示的是结构相似性指数, SSIM模块页面对此有详细介绍。它的主要用途是衡量图像压缩对文件保存(例如,不同质量的 JPEG 文件)和数据传输造成的可见影响(即图像质量下降)。
MTF (调制传递函数;等效于空间频率响应)使用类似于随机模块中计算的二维傅里叶变换来计算处理图像和输入图像之间的传递函数,但有一个例外:如果需要有效的 MTF 结果,则不应在仿真中添加噪声,因为二维 MTF 计算对噪声极其敏感。
高频滚降是由高斯滤波器引起的。
您可以通过在Simatest设置中移除噪声和滤波器(高斯) ,然后点击“更新计算” ,来查看仅使用锐化掩模 (USM) 的 MTF(本例中半径 = 1.5,强度 = 2.5)。锐化掩模的频谱响应与“锐化”页面中描述的标准锐化不同:它的响应不是周期性的,而是上升到强度 + 1 的渐近水平并保持较高水平。您可以使用Simatest比较这两种锐化算法。这张散落硬币图表的图像,周围环绕着大片灰色区域,噪声相对较低。有些图像的噪声则要大得多。
这很好地说明了如何使用Simatest来探索加工块对外观和测量结果的影响。
光学字符识别(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”按钮,从而提高字符子集结果。对于示例图像,子集包含拉丁字母大写和数字(汽车牌照上的常见字符)。但改进效果甚微。
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 的作者(他看起来有点狼狈)在左边。点击“更新计算”即可移除标注(重置图像)。


资源——其中大多数需要大量的编程工作。
Ansys SPEOS 仿真器使用 Zemax 输出。
斯坦福大学 ISET开源图像处理函数需要相当的编程技能










