简介
Simatest 是 Imatest 的图像信号处理(ISP)和摄像机模拟工具。它可以模拟摄像机内部的图像处理流程,在一定条件下甚至可以模拟整个摄像系统。Simatest 起初是 Imatest 图像处理模块的一部分,现在它更加强大、灵活,还增加了许多可以任意组合使用的处理模块。使用 Simatest 可以大大加快图像处理流程的开发速度。Simatest 的图像传感器噪声模型是通过测量未经过去马赛克处理的彩色原始图像RAW图像来模拟的。
Simatest 中的图像传感器模型是基于实际测量数据构建的,而不是依靠复杂的物理理论。因为对于开发和测试摄像系统的工程师来说,很多物理细节(比如传感器硅片中掺杂的情况、颜色滤光片阵列的光谱响应)往往很难获得。虽然这些细节对制造图像传感器很重要,但对调试摄像系统来说并不是必需的。所以,这个传感器模型做了简化,但依然能很好地模拟不同光照条件下传感器和图像信号处理对系统性能的影响。由于性能指标是通过传感器输出的电子信号来计算的,因此不需要精确测量传感器接收到的光能(辐射测量),不过我们以后可能会把这项功能加入进去。这也使得 Simatest 非常容易使用。
Simatest 支持的输入图像
包括:
• RAW图像: 从摄像机拍摄的图像,可以是直接获取的原始数据,也可以是经过简单去马赛克处理的图像,并且仅经过了最基本的处理(比如没有做锐化、降噪、白平衡等处理)。不建议使用经过大量后期处理的图像(如大多数消费级摄像机输出的 JPEG 图像)。
• 模拟测试图: 由 Imatest 测试图表模块生成的模拟位图测试图像。
• 含镜头降质效果的图像: 一些经过镜头设计软件(例如 Code V)处理过的模拟位图图像,这类图像已经加入了镜头造成的降质效果,如果有这类图像可用,推荐使用它们。
Simatest 的处理功能
包括:
• 摄像机和镜头降质处理
模拟摄像机和镜头引起的图像降质效果,例如噪点、雾(面纱眩光)和模糊。镜头降质效果经过了简化处理,但足以用于 ISP 的设计和测试。
• 图像调整
包括调整曝光(同时通过增益模拟改变曝光指数)、伽马校正,以及 Beyer 去马赛克/重新生成马赛克处理。
• 图像增强
如应用色彩校正矩阵、进行色调映射(常用于高动态范围(HDR)成像)、锐化(无论是常规锐化还是使用非锐化掩模(USM))和双边滤波等。
• 其他模拟效果
能够模拟运动模糊、失焦、低光环境等各种情况。
Simatest 的输出结果:
• 适用于人眼观察
处理后的图像可以立即在 Simatest 的交互窗口中查看。你可以单独查看输入图像和输出图像,也可以将它们并排显示进行比较。
• 适用于机器视觉
可以直接显示各种定量处理结果,例如结构相似性(SSIM)、峰值信噪比(PSNR)、调制传递函数(MTF)、光学字符识别(OCR)以及人脸或人物检测等指标。你也可以将这些结果导出到其他 Imatest 模块(如 Rescharts、Color/Tone 或 Image Statistics),以获取所有主要的图像质量测量数据(包括图像信息指标)。
Simatest 内置了一个准确的图像传感器噪声模型,这个模型只依赖两个测量参数(最大信号下的井容量和暗噪声)。因此,不需要进行辐射测量(即精确测量传感器上入射的光能),不过以后可能会增加这项功能,以帮助确定摄像机的绝对灵敏度。
扩展性和批量处理
• 可扩展性
Simatest 可以根据客户需求不断扩充更多的处理模块。目前的处理模块主要针对那些影响可见和可测量图像质量的操作。
• 批量处理
Simatest 支持对一批图像进行自动读取、处理和保存,方便处理大量数据。
Simatest 的输入文件
ISP 的输入可以来自任何 Imatest 能够读取的图像文件,无论是原始图像还是已经去马赛克处理的图像,这些文件必须符合 Imatest 支持的图像文件格式和采集设备列表。虽然 Simatest 可以处理各种图像,但测试图表图像能提供最有用的定量结果。输入文件主要有三大来源:
• 测试图表程序
最方便的测试图表图像来源是 Imatest 的测试图表程序。下面是一个示例,展示了如何设置以创建一个 2400×1600 像素的 Enhanced eSFR ISO 2017 测试图表。
虽然我们建议您阅读 Test Charts(测试图表) 和 SVG Test Charts(SVG 测试图表) 的文档,但本页面已经包含了让您快速上手的基本信息。您还可以下载用于 Simatest 开发和测试的 2400×1600 PNG 图像(该图像包含额外的色块)。
Test Charts 介绍
Test Charts 允许您创建 SVG(可缩放矢量图形) 或 位图(TIFF 或 PNG) 格式的测试图表,这些文件可用于打印物理测试图或用于分析图像。该工具提供了多种类型的测试图,可以在左上角的 Pattern(图案) 下拉菜单中选择,并可进行丰富的自定义设置。
关于文件格式:
• 带有连续色调的测试图(如正弦 Siemens Star) 必须以 位图 形式创建,以确保打印或分析时的正确显示效果。
• SVG 文件 可以用 Inkscape(一款优秀的免费软件)打开,可自由调整大小进行打印,或者转换为 PNG 位图文件(支持 8 位或 16 位 色深)。
• eSFR ISO(ISO 12233-2017)测试图 通常需要打印较大尺寸,因此会以 SVG 格式 生成,但您也可以勾选 Save PNG (bitmap) file 选项,并设定所需的图像高度(像素),将其保存为 8 位或 24 位 PNG。
关于色调响应和动态范围测试图:
建议使用 Inkscape 打开 SVG 文件 并转换为 16 位或 48 位 PNG/TIFF 文件,以确保色调信息的完整性。
重要设置:
部分 Test Charts 选项隐藏在下拉菜单中,我们建议在 Settings(设置) 菜单中选择 eSFR LogWedge max = 4000 LW/PH。
创建测试图:
当所有设置完成后,点击 Create Test Chart(创建测试图表),然后将生成的 SVG 和 PNG 文件 保存到一个方便访问的位置。
镜头设计软件的应用
一些 镜头设计软件(如 Code V)可以对测试图像进行处理,模拟 模糊、色差、暗角 等镜头降质效应。这些测试图像可以使用 Imatest Target Generator 生成,该工具是 Test Charts 的后端,负责将 SVG 文件转换为位图文件。
用于镜头设计软件的测试图必须设置 gamma = 1(线性 gamma)。
如果您已经通过镜头设计软件模拟了模糊效果,则 Simatest 的模糊滤波模块 可以忽略,除非您需要模拟 抗锯齿(光学低通)滤波器。
摄像机拍摄的图像
推荐使用:
• Raw 图像或经过最少处理的图像(使用 LibRaw 或 ReadRaw 转换为 RGB 格式)。
这些图像来源于需要调试的开发系统,通常已经包含模糊和噪声信息,因此 Simatest 不需要额外添加模糊或噪声滤波。
不推荐使用:
• 消费级相机拍摄的 JPEG 图像,因为这些图像经过了复杂的后期处理,包括:
• 非线性色调曲线调整(如“肩部”压缩)
• 非线性、非均匀的双边滤波
• 其他难以预测的图像处理
这些处理会影响测试的准确性,使得 Simatest 难以获得有意义的分析结果。
如何打开 Simatest
在 Imatest 主界面,您可以通过以下方式打开 Simatest(ISP/摄像机模拟器):
1. 在 “Utility(工具)” 下拉菜单中点击 Simatest
2. 在 Imatest 主窗口右侧的 Utility 选项卡中点击 Simatest
打开 Simatest 后,您会看到一个初始窗口,其中包含基本的操作说明,并且大部分按钮默认是灰色的(以减少初次使用者的困惑)。该操作说明会定期更新。
进行分析的步骤:
1. 读取图像文件
2. 确保设置正确(系统会保留上次运行的设置,如有需要可在 ISP Settings(ISP 设置) 窗口中修改)
3. 更新计算
4. 选择要查看的输出,可选择:
• 将处理后的图像发送至 Rescharts、Color/Tone 或 Image Statistics
• 直接查看处理后的图像
注意:
读取图像文件(Read image file)和调整 ISP 设置(ISP Settings)可以任意顺序操作,不会影响最终结果。
设置
Simatest 的“设置”窗口允许您配置分析过程:您可以选择处理模块、调整它们的参数以及设定操作的顺序。要打开设置窗口,请点击 Simatest 窗口左上角的 “Simatest Settings(Simatest 设置)” 按钮。由于设置会保存上次的配置,通常不一定需要每次都打开它。设置可以在读取图像前后进行(但在批量处理图像时必须在读取图像前设置好)。
设置窗口包含了大量的处理模块。其中一些模块(例如锐化、色调映射或双边滤波)提供了多种方法(算法)及相应的参数,这类模块通常放在带有矩形边框的区域内;而像曝光或增益这类最多只有一个参数的模块则不会显示在边框内。它们在设置窗口中的排列顺序并不代表实际处理时的操作顺序。
Simatest 的设置分为五个区域:
1. 输入处理与降质
2. 降质(噪点、模糊)
3. 色彩与色调调整
4. 锐化/降噪
5. 图像文件保存设置
需要注意的是,有些类别之间会有重叠,例如:由于 cos4 镜头遮光既会引入又会校正暗角效应,因此我们将其归在“调整”而不是“降质”中。
右上角的图像信号处理 (ISP) 模块区域显示了操作的顺序。其中的空白行是为了方便插入、排列或删除操作项而设置的,这些空白行在将设置传递到主窗口或进行处理时都会被忽略。
选择并排列图像处理模块
1. 选择一个模块:从列表中选择一个要包含到图像处理流程中的模块。
2. 调整参数:根据需要使用滑块、弹出菜单或输入框来调整参数。调整完成后,对应的设置窗口会变成白底红字,并保持这种状态,直到该设置被复制到 ISP 模块列表框中或取消。
3. 使用设置弹出菜单:在每个模块旁边都有一个“Set”弹出菜单按钮,用于将该模块录入到右侧的图像处理模块列表框中。所有的“Set”弹出菜单内容都是一样的:Set, 01, 02, 03, …, 20。点击弹出菜单后,再点击希望放置模块的行号。选择“Set”(而不是具体的行号)则表示取消此次操作。
右侧的图片示例展示了如何将 Filter 模块设置复制到 ISP 模块列表框的 03 行。
4. 复用模块:由于模块的参数会复制到列表框中,您可以修改参数后,将同一模块在不同的行重复使用。
5. 设置窗口的颜色状态:
• 白底绿字表示该模块已经包含在图像处理模块列表框中。
• 白底红字表示该模块已调整参数,但还未被选入列表框。此时请点击“Set”再选择具体行号来选入该模块。
• 如果您点击“Set”后再点击“Set”(而非行号),则会将该窗口重置为黑/白状态。
在上图中,Add 和 Correct cos4 镜头遮光的弹出菜单显示为白底红字,因为它们都受 FL/diag(焦距/传感器对角线)设置的影响;当其中一个被选入后,它们都会重置为黑/白状态。
6. 图像处理模块列表框:
该列表框中包含许多空白行,这些空白行的存在便于您添加和编辑处理模块,计算时这些空白行会被忽略。您可以使用列表框下方的按钮方便地编辑处理模块的顺序,包括:
• Insert:在当前行前插入一个空行,并将下面的行依次下移一行。
• Delete:删除当前行,并将后面的行依次上移一行。
• Move up:将当前行上移,与前一行交换位置。
• Move down:将当前行下移,与后一行交换位置。
• Clear:清空(置空)当前行,但不移动其他行。
• Clear all:清空所有行,即重置列表。如果误按此键,请按“Cancel”取消。
• Enable:启用当前行(移除行前的“%”注释标识,如果存在)。
• Disable (comment out):禁用当前行,将其标记为注释,行首添加“%”。
7. 保存设置:点击 OK 按钮将保存设置,关闭设置窗口,并返回主 Simatest 窗口。此时,已选的图像处理模块(空白行和被禁用的行将被移除)将显示在 Simatest 主窗口中。如果您在设置窗口右下角勾选了“Auto update(自动更新)”,则计算会自动更新,这样可以省去手动点击更新的步骤。
总结:设置操作分为两个步骤:
1. 调整参数;
2. 将模块移到图像处理模块列表框中的合适行(此处可根据需要进行编辑)。
由于有时容易忘记第二步,当相应的参数调整完成但还未选入列表框时,对应的设置窗口会显示为白底红字。
例如,在设置窗口左下角的 Filter 模块,通过点击 Filter 框左侧的 Set 弹出菜单,然后在菜单中选择 03(菜单中显示数字 1-20),就将 Filter 模块复制到了列表框的第 03 行。大多数情况下,参数会与该模块名称一起被复制。请注意,设置窗口中还预留了额外模块的位置,目前计划增加更多模块,我们也非常欢迎客户提供反馈和建议。
图像处理模块
正如之前所提到的,更新计算时会按照选定的顺序应用图像处理模块。根据输入图像的来源,有些降质或增强步骤可能在图像进入 Simatest 前已经执行过。例如,来自消费级相机的 JPEG 图像通常已经经过了非线性、非均匀的双边滤波(我们不推荐在 Simatest 中使用这类图像);而从摄像机获取的图像往往已经隐含了噪点和模糊滤波处理(也就是说,这些图像中已经包含了噪点和模糊效果,无需再额外添加)。
以下是截至 2025 年 1 月可用的处理功能列表。大部分功能都是 Matlab 的标准函数、MATLAB 文件交换中心的资源,或是 Imatest 定制的代码。
注:(L)仅推荐用于线性图像。下面是翻译后的内容,并以图表形式呈现:
处理模块 | 说明 |
---|---|
Input gamma | 输入 gamma:输入图像的 gamma 值。 |
Exposure, Gain | 曝光、增益:设置曝光和增益乘数,模拟曝光指数(ISO 速度)。 |
Mosaic/Demosaic | 马赛克/去马赛克:对图像进行马赛克处理(RGB → 模拟拜耳原始数据)或去马赛克处理。 |
RGB balance | RGB 平衡:设置各 RGB 通道的增益。 |
Fog/flare/veiling glare | 雾/耀斑/面纱眩光:也可用于消除黑电平偏移。 |
Monochrome | 单色处理:将 RGB 图像转换为单色。 |
AWB | 自动白平衡:自动调整图像的白平衡。 |
Linearize | 线性化:将图像进行线性化处理。 |
Gamma | Gamma 调整:改变 gamma(可以调整乘数或目标值)。 |
Cos4 lens shading | Cos4 镜头遮光:应用或校正 cos4 镜头遮光(即“暗角”)。 |
Invert | 反转:反转图像(正片与负片互换)。 |
Noise | 噪声:添加高斯噪声——可以是简单噪声或传感器噪声(包括暗噪声和光子噪声)。 |
Filter | 滤波:对图像进行滤波处理(如高斯滤波、运动模糊、失焦模糊、空气盘效应)。 |
Radial Geometry | 径向几何:添加或校正图像失真或横向色差。 |
CCM | 色彩校正矩阵:使用之前计算好的矩阵进行色彩校正。 |
Tone Mapping | 色调映射:调整 HDR 图像的色调以适应有限动态范围显示(提供三种类型)。 |
Sharpen | 锐化:对图像进行锐化处理,可选择 USM(非锐化掩模)或标准锐化方法。 |
Bilateral filter | 双边滤波:边缘保留型降噪滤波(提供两种类型)。 |
Non-local means filter | 非局部均值滤波:另一种边缘保留型降噪滤波(处理速度较慢)。 |
Save file precision | 保存文件精度:以 8 位、16 位等不同精度保存文件。 |
Save file Offset | 保存文件偏移:保存文件的偏移(DN),用于复制摄像机文件的特性。 |
Save file Saturation | 保存文件饱和度:保存文件的饱和度(DN;最大值)。 |
初始处理与调整
处理模块 | 说明 | 功能说明 |
---|---|---|
Input gamma | 不是一个实际的处理模块。Input gamma 用于记录图像在各个处理阶段的 gamma 值——这很重要,因为某些操作要求图像为线性(gamma = 1,用 (L) 标识)。如果 Input gamma 输入错误,很可能会产生误差。对于(线性)原始图像,Input gamma 通常为 1;而对于可交换色彩空间图像(如 sRGB、Adobe RGB 等),通常在 0.45 至 0.5 之间。对于“黑箱”图像,可用 Color/Tone 模块测量 gamma。 | Gamma、色调响应曲线及相关概念 |
Exposure | 曝光:通过滑块设置的曝光乘数(通常小于 1)通常在添加噪声之前应用于模拟图像,代表实际的曝光变化。同时,Gain = 1/Exposure 通常在噪声添加后应用。通过组合 Exposure 和 Gain,可以调整有效曝光指数(又称“ISO 速度”)。先将图像乘以 Exposure(通常 <1),再乘以 Gain = 1/Exposure,相当于将曝光指数乘以 1/Exposure,从而降低信噪比。例如,基准曝光指数为 100,若在噪声前应用 Exposure = 0.125,之后应用 1/Exposure = 8,则等效于将曝光指数提高 8 倍至 800。 | (L) |
Demosaic | 去马赛克:将图像传感器采集的、经过颜色滤光阵列(CFA)排列(拜耳马赛克)的单色原始图像转换为三色 RGB 图像。此操作使用 MATLAB 的 demosaic 函数,该函数采用著名的 Malvar-He-Cutler 算法(与 Stanford 版本略有不同)。去马赛克是一个复杂过程,可能产生伪影,并会影响噪声功率谱。原始相机文件也可以由 Imatest 的 LibRaw 和 ReadRaw 模块在运行 Simatest 前进行去马赛克处理。 | Imatest 原始处理 / IPOL 参考 / Stanford 参考 |
Bayer mosaic | Bayer mosaic(去马赛克的逆过程):将三色 RGB 图像转换为单色、马赛克排列的伪原始图像。这在模拟图像中添加噪声或研究去马赛克效果时非常有用。该算法简单直接(无伪影),能将 RGB 图像转换为四种 Bayer 排列之一:RGGB、GRBG、GBRG 或 BGGR。 | — |
RGB Balance | RGB 平衡:用于增加或校正原始图像中常见的 RGB 不平衡问题(通常绿通道比红或蓝通道更强)。可以分别在各个输入框中输入 R、G、B 的增益值,数值可在 Color/Tone 模块中获得。乘法操作适合在添加噪声之前引入不平衡,而除法操作适合在后期校正。 | (L) |
Fog (flare or veiling glare) | 雾化(耀斑或面纱眩光):对图像进行雾化处理,相当于添加耀斑光或面纱眩光。其处理方法为对图像加上或减去一个常数(fog),公式为:image_out = fog + (1 – fog) * image_in其中,fog 通常为一个较小的分数(< 0.3);如果存在黑电平偏移,fog 可取负值以抵消该偏移。 | — |
Monochrome | 单色化:将彩色图像(m×n×3)转换为单色图像(m×n)。转换方法可以采用亮度通道公式(通常为 0.2125×R + 0.7154×G + 0.0721×B)或三个通道的均值。 | — |
AWB (Auto White Balance) | 自动白平衡:使用简单的“灰色世界”算法自动调整图像的白平衡。该方法适用于大多数测试图表图像,但对于真实场景图像(尤其是带有主导色的图像)可能效果不佳。 | — |
Linearize | 线性化:等效于将 Gamma target 设为 1(推荐值)。该操作移除图像中的 gamma 编码,使图像变为线性。处理流程中可先对图像进行线性化、应用各种操作,最后在 ISP 管线尾端重新应用编码 gamma。大多数处理模块(例如标准锐化)推荐在 Gamma = 1 的条件下使用,但不适用于 USM 锐化。 | — |
Gamma | Gamma 调整:对图像应用 gamma 编码。可通过滑块和弹出菜单选择,其中弹出菜单中包含 Target(目标 gamma)和 Mult(乘法方式)选项。重要提示:因为输入和输出图像可能已经经过 gamma 编码(通常 gamma ≅ 0.5),但许多处理操作要求在 gamma = 1 条件下执行。对于 Mult 选项:image_out = image_in^γ;对于 Target 选项:假设当前 gamma 为 γ_current,则 image_out = image_in^(γ/γ_current)。 | Gamma、色调响应曲线及相关概念 |
Add, correct cos4 lens shading | 添加/校正 cos4 镜头遮光(暗角):也称为镜头暗角。建议在图像为线性(gamma = 1)的条件下使用。利用标准的 cos4 角度公式添加或校正暗角(光衰减)。需通过滑块输入镜头焦距与传感器对角线的比例。适用于在噪声添加前对模拟图像进行处理;在真实相机图像中,此效应通常已存在。后期也可在保持 gamma = 1 的情况下进行校正。 | (L) |
Invert | 反转:将图像反转,即生成负片。此操作使用频率较低,最好在图像为线性(gamma = 1)时执行。 | — |
说明:
• “(L)” 表示该处理模块建议在图像为线性(gamma = 1)时使用。
• 部分处理模块的“功能说明”中给出了相关概念或参考链接(如 Imatest 原始处理、IPOL 参考、Stanford 参考),详细内容可参见相关文档。
图像退化:模糊、噪声、几何畸变
通常可以在处理之前从相机获取的图像中发现。 操作通常是线性的。
处理模块 | 描述 | 功能说明 |
---|---|---|
Noise (Gaussian) | 为图像添加噪声。- 当 Luma fraction = 0 时,RGB 通道的噪声彼此不相关;当 Luma fraction = 1 时,噪声是相关的。(此处细节仍在完善中。)- 若噪声作用于原始图像(即在应用 Bayer 马赛克之后),则该设置无效,因为原始图像为单色,这样能更准确估计去马赛克图像中的亮度和色度噪声。- 如果未勾选 “Use sensor noise” 选项,则采用简单噪声,其标准差由上方编辑框中的 sigma 指定(下方编辑框则不显示)。- 对于模拟图像来说,图像传感器噪声至关重要。噪声参数必须按照下述说明以及 Simatest 示例(最佳参考资料)和 Color/Tone & eSFR ISO 噪声测量中更详细的描述进行计算。- 应勾选 “Use sensor noise model”,并分别在 sigma (fraction) 和 sigma (dark noise) 中输入光子噪声和暗噪声的参数。- imnoise:使用该函数将噪声添加到 HSV 空间中 V 通道,参数包括 sigma [] 和 Luma noise []。 | 为图像引入高斯噪声,支持不同亮度噪声相关性设置,以及基于传感器噪声模型的精确噪声模拟。 |
Filter | 对图像进行滤波(模糊)处理。- 通常在添加噪声前应用,但也可以在噪声添加后应用(此时会影响噪声频谱)。- 提供四种滤波类型以模拟不同的模糊效果: • 高斯滤波(使用 imgaussfilt 进行二维高斯模糊):输入参数为 sigma(标准差,单位:像素)。 • 运动模糊(水平模糊):输入模糊长度(单位:像素)。 • 圆盘模糊(失焦效果):输入圆盘半径(单位:像素)。 • Airy 盘模糊(衍射效果):输入滑块上显示的首个零点 a(单位:像素),公式为: a = 1.22 λ F#/p,其中 λ 为波长(对于绿光约 0.530 μm),p 为像素间距;λ 与 p 必须采用相同单位(通常为微米)。例如,对于像素间距为 2 μm、f/2.4 的相机(绿光 0.530 μm),则 a ≈ 0.776 像素。- 相关函数包括:imgaussfilt(二维高斯滤波)、fspecial(生成二维滤波核)、filter2、imfilter。- 参考资料:Wikipedia 上的 Airy Disk 条目及 Simple Airy Pattern。 | 提供多种滤波方式以模拟镜头模糊、运动模糊、失焦和衍射效应,通过调整参数实现不同的模糊程度。 |
Radial Geometry | 添加或校正光学失真和横向色差。- 可选择多种模型来添加或校正图像的光学畸变(例如桶形或枕形畸变)和/或横向色差。- 【注意】:目前该模块作为独立的 Imatest 模块存在于主 Simatest 窗口中,而非设置窗口中的一个处理块。它可打开处理后的图像(可呈现失真或校正效果),这种设计是为方便使用 Radial Geometry 模块而做的权宜之计。- 我们计划将其部分功能(最可能是横向色差校正)集成到 Simatest 中。 | 用于模拟或校正镜头产生的光学失真及横向色差,目前以独立模块形式存在,未来可能整合入处理管线中。 |
此图表总结了 Noise (Gaussian)、Filter 以及 Radial Geometry 三个处理块的主要描述和功能说明。
色调增强:
校正颜色或应用三种色调映射算法之一,用于显示高动态范围(HDR)图像,这可能使色调响应非线性和不均匀。
处理模块 | 描述 | 功能说明/算法 |
---|---|---|
色彩校正矩阵 (CCM) | – 用于校正颜色。- 截至2025年1月,CCM 尚未很好地集成到 Simatest 中,必须在运行 Simatest 之前计算好。- 应用颜色校正矩阵时,可在 Color/Tone 模块中利用 Simatest 处理后的图像(通常在 ISP 管线末端)进行计算和保存。- 位于 CCM 复选框右侧的 “Set CCM” 按钮会打开一个窗口(如右图所示,点击缩略图可查看全尺寸),允许您设置矩阵(可从文件读取或从剪贴板粘贴,并选择线性化等选项)。- 颜色校正矩阵在 Color/Tone 模块中计算。- 全面集成 CCM 至 Simatest 中具有挑战性,因为 Color/Tone 模块需要对色卡进行区域选择。 | — |
色调映射 | 将高动态范围 (HDR) 图像渲染为适合在动态范围有限的显示器上显示的图像。色调映射技术用于近似在受限动态范围显示器上呈现 HDR 图像的效果,此方法为非均匀且非线性。 | tonemap:渲染高动态范围图像以供查看 |
局部色调映射 | 使用拉普拉斯滤波的另一种 HDR 图像色调映射算法。该方法具有一套不同的调整选项,产生的效果也不同(图像更饱和)。同样,此方法是非均匀且非线性的。 | localtonemap |
对比受限的直方图均衡化 (CLAHE) | CLAHE 针对图像中的小区域(称为 tiles)进行处理,而不是对整个图像操作。每个区域的对比度会被增强,使输出区域的直方图大致匹配 ‘Distribution’ 参数所指定的直方图。然后,通过双线性插值将相邻区域合并,消除人为产生的边界。在均匀区域中,可限制对比度以避免放大图像中可能存在的噪声。此方法为非均匀且非线性的。 | adapthisteq:对比受限自适应直方图均衡化 (CLAHE) |
这张图表总结了色彩校正矩阵及三种色调映射模块的主要描述和对应功能/算法。
空间增强:锐化和/或降噪
双边过滤器输出取决于图像内容-可能高度非线性。
处理模块 | 描述 | 函数/算法 |
---|---|---|
Sharpen USM (Unsharp Mask) | 使用 unsharp masking (USM) 方法锐化灰度或 RGB 输入图像,边缘部分效果最明显。该方法通过从原始图像中减去一个高斯模糊后的图像来实现锐化。如果设置的阈值大于 0,则低对比度区域可能不会被锐化。参见 Wikipedia。该功能是非线性的,会导致图像信息指标出现不一致。它设计用于直接作用于彩色图像,无需先进行线性化。(非线性:这一点有些意外,MATLAB 文档中并未标明) | imsharpen:Unsharp Masking (USM) |
Sharpen Standard | 使用二维版本的 1D 锐化方法锐化灰度或 RGB 输入图像,边缘部分效果最明显。该方法通过从原始图像中减去一个幅度降低的复制图像(该复制图像在一个半径为 R 的圆形区域上排列)来实现锐化。该方法在商业相机中被广泛使用,因为其计算量比 USM 小(即速度更快),且适用于线性(gamma = 1)的图像,能保持图像的线性特性。推荐用于测试锐化对图像信息指标(如 SNRi 或边缘 SNRi)的影响。二维锐化核在执行操作时会被复制到剪贴板中。由于标准锐化不是 MATLAB 内置函数,此功能为自定义 Imatest 函数(L)。 | Standard sharpen |
Bilateral filter 1 | 使用 MATLAB 的 imbilatfilt 进行双边滤波。双边滤波由 Tomasi 和 Manduchi 于 1998 年提出,是一种非迭代的边缘保留平滑方法,广泛应用于消费级相机 JPEG 图像中。我们仍在熟悉 MATLAB imbilatfilt 的实现。示例参数:{0.0025, 0.7, 5},参数分别代表:平滑程度、空间 sigma 和邻域大小。 | imbilatfilt (MATLAB) |
Bilateral Filter 2 | 使用来自 Lanman 的 bfilt2 进行双边滤波。该方法效果良好,但速度较慢。参数说明:- 半宽 w:高斯双边滤波窗口的半尺寸;- sigma (range):空间域标准差;- sigma (domain):强度域标准差。此版本的双边滤波函数来自 Mathworks File Exchange。 | bfilt2 (Lanman) |
Non-Local Means filter | 另一种边缘保留降噪滤波器,速度较慢,目前我们仍在熟悉其实现。参数包括:- 平滑程度(MATLAB 默认值为估计图像噪声的标准差 σ);- 搜索窗口大小(MATLAB 默认 21);- 比较窗口大小(MATLAB 默认 5)。 | imnlmfilt (MATLAB) |
以上表格总结了 USM 锐化、标准锐化以及两种双边滤波器和非局部均值滤波器的描述和相关函数/算法。
标准锐化(非 USM)是一个 Imatest(而非 MATLAB)函数,设计目的是保持图像的线性。
这是一维锐化方法(详见“锐化”页面)的二维扩展。当初我们在尝试确定由 MATLAB imfilter 函数实现的 USM 是否为非线性操作时(结果是非线性),创建了这种方法。它也比 USM 更接近典型相机的锐化方式,因为 USM 计算量更大。
对于锐化半径 R 和锐化量 A,定义 ksharp = A/(A+1)。滤波核是一个尺寸为 (2R+1)×(2R+1) 的矩阵 H(单位:像素),计算方法如下:
1. 对于离中心距离为 r 的每个元素,设 H(r) = max(|R – r|, 0);
2. 将 H 归一化,即 H = H/∑H;
3. 然后将中心元素 H(R+1, R+1) 设为 1。
例如,对于一个滤波器,其 Radius = 2,Amount = 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 图像中观察到了它的效果。只要不过度锐化以致图像饱和,标准锐化就是一种线性操作。
图像文件保存设置:
将图像保存在文件中时应用。
保存文件参数 | 说明 |
---|---|
保存文件精度 | 保存图像时采用输入文件的精度。可选项包括:- 8 位深度(最大值为8位);- 16 位深度;- 16 位,全幅度(除原始文件外)。对于 RGB 文件来说,采用 16 位全幅度时,图像将使用容器的完整幅度(例如,对于 16 位深度,最大值为 65535)且不添加偏移,推荐使用此设置。 |
保存文件偏移 (DN) | 保存文件时所添加的黑电平偏移(以像素数字,即数字量 DN 表示)。 |
保存文件饱和度 (DN) | 保存文件的饱和度(最大像素值或 DN 值),用于在 n 位容器中表示 m 位数据。例如,对于 m = 12 位的数据存储在 n = 16 位文件中(最大 DN 为 65535),可设置饱和度为 4095。 |
图像传感器噪声
本节总结了如何测量图像传感器噪声,并将测量结果输入到前面描述的 Simatest 噪声模块中。详细示例请参见 Simatest 示例,更多背景知识可参考 Color/Tone/eSFR ISO Noise。
对于线性(非 HDR)图像传感器,噪声可以从图像传感器上信号加噪声的数字量(像素级 DN)中推导出来:
DN = DNmeas – DNoff
其中,DNoff 是常常出现在未去马赛克图像中的偏移值。
估计 DNoff 时需要注意(因为它通常存在于未经去马赛克处理的原始文件中),不过不必非常精确也能获得较好的噪声估计。
对于暗噪声功率 Nd²,其计算公式为:
预期噪声电压 VN = (Nd² + kN DN)^(1/2) = (Nd² + kN (DNmeas – DNoff))^(1/2) —— 或 ——
预期噪声功率 PN = VN² = Nd² + kN (DNmeas – DNoff) (适用于线性传感器)
其中,Nd² 和 kN 是 Simatest 图像传感器噪声模型的关键参数,该模型是 EMVA 1288 标准中线性传感器噪声模型(第 2.4 节)的一个变体。
噪声计算步骤
1. 采集一幅灰阶测试图的图像,最好选择专为测量动态范围设计的透射式测试图。
2. 将图像保存为原始格式。
3. 将原始图像读入 Color/Tone Interactive(不进行去马赛克处理)。(也可以使用 Color Tone Auto,但灵活性较差。)对于商业原始文件,推荐使用 Bayer RAW 16-bit linear 预设。详细说明参见 Color/Tone/eSFR ISO Noise。
4. 由于未经去马赛克的图像是单色格式,因此会出现 “Standard monochrome” 或 “Bayer RAW?” 选择框。根据相机情况选择适当的像素色彩映射(例如:Red 对应于 R1C1(RG/GB)等)。如果图像中包含明显颜色,可在 Rawview 中打开图像以确定映射关系。
5. 使用 Color/Tone/eSFR ISO Noise 中详细描述的方法估计偏移值 DNoff 和饱和值,并将其输入到 Color/Tone 设置窗口中(部分窗口如右图所示)。这些数值通常可以在原始图像(而非 JPEG)的 EXIF 元数据中找到,不过不同厂商名称各异。
6. DNoff 总是小于最低的测试色块电平,但可能大于最低像素值。如果输入的 DNoff 数值过大,则在较暗的色块中响应会被截断(DN 将为 0)。上面显示的数值取自 Canon EOS-6D 全画幅 20.2 MP DSLR 的原始(CR2)文件,该相机具有较大的像素间距(6.5 μm)。
7. Color/Tone 的图表(10-12 图),展示了噪声和信噪比(SNR)随像素级变化的关系,这些图表对原始图像尤为有意义。
下列是需要输入到 Simatest 中的关键数值,见左下角:
噪声 = 0.005324,暗噪声 = 0.00026。
关于暗噪声和光子散粒噪声的详细计算方法,请参见 Simatest 示例以及 Color/Tone/eSFR ISO Noise 文档。
实际上,暗噪声是由几种与信号无关的噪声源组合而成,这些噪声源在 OnSemi 应用说明 AND9189/D 中有描述,其中电子(约翰逊)噪声与 (4kT)^(1/2) 成正比。
右侧显示的 EOS-6D(6.5 μm 像素)对应的 Plot 2(信噪比与输入密度关系图)与 OnSemi 应用说明中的光子传递曲线非常接近,其中信噪比约等于噪声(以电子数计)。满井容量 = (信噪比)²_max = 33882。所选的噪声图为 Plot 2:信噪比与输入密度(RGBY)的关系,测量结果与模型结果在 Simatest 示例中进行了比较。
我们预计在未来的版本中会对噪声模型添加更多细节。
运行 Simatest
如果尚未读取输入图像文件,请先读取。图像不必一定是测试图表;任何图像都可以使用。读取图像和更新设置的顺序无关紧要。大多数类型的图像都适用,但如上所述,我们不推荐使用经过高度处理的消费级相机 JPEG 图像。
批量处理文件
如果选择了多个文件,它们将被批量读取、处理并自动保存,所用的设置是之前存储的设置。(大多数输出不会显示,但当然您可以打开保存的文件进行检查。)在您选择文件后,右侧会弹出一个对话框。
在运行批量图像前,您应该先处理单张图像以确保设置正确。请注意,批量计算并未针对速度进行优化,所以批量处理每张图像通常需要几秒钟,不适合处理大量图像。
更新设置,如上文所述。无论是在读取图像之前还是之后进行更新都可以。输入图像以及在设置窗口中选择的处理模块将会显示出来。
使用更新计算或ISP模拟器窗口左侧计算组(浅蓝色框)中的另一个按钮处理图像。 下面是组中控件的列表。
计算组中的控件(位于图像左侧)
控件名称 | 描述 |
---|---|
Update calculations | 从输入图像开始,依次处理列表框中显示的每个模块,处理完成后显示结果。这是最常用的计算方式。 |
Input | 恢复显示输入图像。 |
Display results for 1s during updates (checkbox) | 在运行“Update calculations”时,每个模块处理完后显示结果 1 秒。通常更推荐使用逐步计算。 |
Step through calculations | 手动逐步执行计算,每处理完一个模块按一次按钮,显示累计的处理结果。 |
Step & show single block | 手动逐步执行计算,每处理完一个模块按一次按钮,仅显示当前模块的结果(不显示累计结果)。 |
处理完图像后,将显示输出图像以及图像下方的浅绿色分析和查看区域。 按下图像下方的View input或View processed(左侧)可在它们之间切换。 因为这两个视图非常相似,我们显示了更有趣的并排视图,放大以使差异可见。
并排显示视图
并排显示视图允许您将输入图像和处理后的图像并排进行比较,也就是紧挨着显示。只需点击位于“View input”或“View processed”(图像下方左侧)下方的“Side-by-side view”复选框。当您第一次选中该复选框时,两幅图像将完整显示;如果您裁剪其中一幅图像,另一幅图像也会应用相同的裁剪,从而便于进行有意义的比较。
下面展示的是 ISP 模拟器对 36 色块动态范围测试图表图像的显示效果(图像已裁剪,并在并排视图中显示:左侧为输入图像,右侧为处理后的图像)。输入图像直接来自 Test Charts,而处理后的图像则添加了模糊、噪声和锐化效果。
结果
对处理后的图像可以进行多种操作。
您可以尝试不同的处理设置,并:
• 使用各种图像显示方式(特别是并排显示视图)立即观察它们对图像视觉质量的影响,或
• 直接在以下程序之一中以 16/48 位 uint16 格式打开处理后的图像,以获得定量性能测量结果:
• Image Statistics:用于多种类型的分析,包括截面、直方图和傅里叶变换。
• Rescharts:用于 MTF(SFR)及相关分析,根据图表类型可用于获得图像信息指标,特别适用于斜边和 Siemens 星图,这对于预测机器视觉/人工智能系统的性能尤为重要。
• Color/Tone Interactive:用于灰阶或彩色图表的色调、噪声或动态范围分析。
利用“Save processed image”功能,您可以将处理后的图像以设置窗口中选定的精度(一般推荐 16/48 位)保存到文件中,然后再读入 Imatest 模块进行分析。虽然也可以使用剪贴板进行复制和粘贴,但我们不推荐这种方式,因为 imclipboard 函数仅支持 8 位文件深度。
Color/Tone 和 Rescharts 的关键结果在 Simatest 示例中都有展示。
点击 File → Save pseudo-raw (undemosaiced) image 后,您可以将图像保存为合成的拜耳 RAW 格式或其他几种格式之一。输出格式可以是标准的图像文件格式,也可以是纯二进制格式。此时会弹出一个对话框,提供多种选项。请注意,Bayer (Re)mosaic 和 Demosaic 也可以作为 ISP 处理模块使用。
马赛克处理或通道选择:
• None:正常彩色文件输出;
• Remosaic (Bayer format):用于重新生成拜耳格式;
• RCCC (Red-Clear-Clear-Clear):红色通道较亮;
• RCCC (Red-Clear-Clear-Clear):红色通道设置为 C/3;
• Monochrome (Y = luminance):使用亮度值;
• Monochrome (mean: equal weights):各通道取平均;
• Red, Green, Blue:分别选择单一通道。
对于重新马赛克(生成拜耳 RAW 文件),应选择 Remosaic (Bayer format)。
Red in RmCn 允许您选择四种拜耳排列配置中的一种。
Gamma adjust 允许您调整输出曲线的 gamma 值。若保持为 1,则表示不改变;如果使用 2(或 2.2),则可将典型色彩空间的 gamma 转换为线性(gamma = 1)。
Save file format 选项允许您选择标准的图像文件格式,如 PNG、JPG(90% 质量)、TIF(大文件)、BMP,或者 8 位二进制、16 位二进制格式。二进制文件可用 Generalized Read Raw 读取。
Green channel emphasis 允许您强调绿色通道,使合成的 RAW 图像更接近实际原始图像(后者通常绿色最强)。此选项提供了多个蓝色/红色级别的选项。
当您点击 Save 后,会弹出一个对话框,让您选择保存位置和文件名。默认的文件名为 root_file_name_png(带所选扩展名)。
Simatest 窗口底部的控件
下面单独列出了“Analysis and view(浅绿色)”区域的控件。控件按列优先(从左到右)排列。“View image/processed”和“Side-by-side view”按钮已在前文描述。
在 Simatest 窗口底部附近是设置项,其中常用的设置项以粗体显示。
控件名称 | 描述 |
---|---|
Save processed image | 按照设置窗口右下角浅绿色框中指定的位深度,保存处理后的文件。此功能使用频率较高。 |
Image statistics | 在 Image Statistics 模块中打开图像,该模块可进行截面、直方图、傅里叶变换等多种分析。 |
Help | 打开在线帮助窗口。 |
also save settings (checkbox) | 将当前设置一并保存到处理后的图像文件中。 |
Read image file (2) | 读取第二个图像文件(加载到 im_processed 中),以便与原始文件(保留在 im_input 中)进行比较。 |
Proc img > clipbd | 将处理后的图像复制到剪贴板。不幸的是,该功能仅支持有限的位深度。 |
Zoom out | 缩小图像显示(显示整个图像)。当并排显示存在取景问题时,这一功能非常有用。 |
Zoom to crop | 指的是位于浅绿色“Analysis and view”区域中的 Crop 功能(详见下文),用于进行 MTF 和 SSIM 测量。该按钮允许您将视图缩放至裁剪区域。您也可以通过标准的点击拖动操作进行仅显示缩放,而不影响 MTF 计算。 |
Processed > input | 将处理后的图像移动到输入区域,从而使后续分析以新的(原先处理过的)图像开始。 |
Save screen | 查看和/或保存当前屏幕。需要指定一个图像查看器。 |
Save settings | 将当前设置保存到标准的 imatest-v2.ini 文件中。也可以在设置窗口中保存到一个指定的文件中。 |
Exit | 退出程序。再见! |
实用程序和工具菜单
ISP模拟器窗口顶部的菜单中的几个实用程序是窗口中按钮的副本(故意冗余)。
菜单中的实用程序
下拉菜单 | 名称 | 描述 |
---|---|---|
File | Display and/or Save screen | 在图像查看器中显示屏幕(推荐使用 Irfanview),并可选择保存。此功能存在于多个交互模块中。 |
Save image | 保存处理后的图像。通常图像将以全精度保存(除非勾选下面的 8-bit max)。 | |
Save pseudo-raw/remosaiced image | 以伪原始(重新马赛克)或特殊格式保存图像,可选择 Bayer、RCCC 或特定通道。选项众多,详见 Synthetic RAW images。 | |
Save image as monochrome | 将图像(可能为彩色)保存为单色图像。 | |
Save image as HDR | 以 HDR(高动态范围)格式保存图像。 | |
Swap Endian (16, 32-bit input) | 交换像素内部字节顺序(适用于某些罕见情况,字节顺序不正确时使用)。 | |
Save image files with 8-bit max precision | 默认未勾选。如果选中,图像将以 8 位精度保存。(通常应保持未勾选状态。) | |
Save image as HDR | 以 HDR(高动态范围)格式保存图像。 | |
View | Colorbar (grayscale or color) | 灰度或彩色:用于 SSIM 和 PSNR 显示。色条中的颜色可在 Options II 中更改。 |
Crop | 允许您为图像分析操作(如 MTF、SSIM 等)选择裁剪区域,与 Analysis and View 区域中的 Crop 按钮功能相同。 | |
MTF log axes | 切换 MTF 显示的坐标轴,在线性和对数之间转换。 | |
Analysis | Image Statistics | 调用 Image Statistics 模块以查看直方图、截面曲线等图像统计信息。 |
Radial Geometry | 将处理后的图像发送到 Radial Geometry 模块,该模块可以返回进一步处理过的图像,添加或校正光学失真、横向色差和/或旋转。 | |
OCR | 使用 MATLAB 的 OCR 函数进行光学字符识别。 | |
Detect faces | 使用 MATLAB 的 CAMShift 例程进行面部检测。 | |
Detect people | 使用 MATLAB 的 detectPeopleACF 例程进行人物检测。效果略逊于面部检测。 | |
Help | (Help) | 打开包含各 ISP 模拟块描述的网页。 |
分析和查看控件
(位于Simatest窗口底部附近的浅绿色框中)
显示由图像下方的按钮或分析菜单控制。 您可以选择输入或已处理图像的视觉显示或计算显示(比较输入和已处理图像的分析)。
结果显示摘要:通过图像或分析菜单下方的按钮选择
模块 | 描述 |
---|---|
Rescharts | 根据测试图表类型,对处理后的图像进行 MTF(SFR)及其他类型的分析。 |
Color/Tone (Interactive) | 对处理后的图像中灰阶或彩色测试图进行色调、噪声和动态范围的分析。 |
MTF | 显示处理后/输入图像的 MTF(调制传递函数)曲线,作为空间频率的函数。此功能对图像裁剪非常敏感。 |
MTFnn | 显示处理后/输入图像中 MTF70 与 MTF10 之间的极坐标图,表示 MTF 降至低频值的 nn%时所对应的空间频率。 |
MTFnnP | 显示处理后/输入图像中 MTF70P 与 MTF10P 之间的极坐标图,表示 MTF 降至峰值的 nn%时所对应的空间频率。 |
SSIM | 显示处理后与输入图像的结构相似性指数(SSIM),详细说明请参见 SSIM 模块页面。SSIM 与视觉差异(降质)相关性更好,比 PSNR 更贴近视觉感受。 |
PSNR & DIff | 显示处理后与输入图像之间的峰值信噪比(PSNR)以及两者之间的差异。 |
OCR | 使用 MATLAB 的 OCR 函数对处理后的图像进行光学字符识别,并显示识别结果。 |
Crop | 对图像进行裁剪以用于计算(如 SSIM、PSNR 和 MTF)以及显示,同时打开标准的 Imatest 粗裁剪和细裁剪窗口。此方法会影响 MTF 曲线(与图像相关)及平均 SSIM 的计算(但详细 SSIM 图不受影响)。点击 Crop 按钮后,下方会启用“Zoom to crop”按钮;要取消裁剪,请点击 Crop 并选择整个图像。 |
Detect faces | 使用 MATLAB 的 CAMShift 算法对图像中的人脸进行检测,并显示检测结果。 |
Detect people | 使用 MATLAB 的 detectPeopleACF 算法对图像中的人物进行检测,效果略逊于面部检测。 |
位于图像下方左侧的 “View input” 按钮可在“View input”(当选中处理后的图像时)与 “View processed”(当选中输入图像时)之间切换。这使得两幅图像能够迅速进行视觉比较,尽管并排视图(如上所示)效果更佳。切换图像时,缩放比例会保持不变。Image Statistics、Rescharts 和 Color/Tone (Interactive) 模块会直接将处理后的图像发送到相应的分析模块(无需保存文件)。该区域中的大多数其他按钮则用于显示计算结果。
SSIM 显示结构相似性指数,详细内容请参见 SSIM 模块页面。它主要用于测量由于文件保存(例如不同质量的 JPEG 文件)和数据传输所引起的图像压缩对图像造成的可见效应(即降质)。
MTF(调制传递函数,等同于空间频率响应)使用二维傅里叶变换计算处理后图像与输入图像之间的传递函数,其计算方法与 Random 模块中的类似,但有一个注意事项:如果需要获得有效的 MTF 结果,则不应在模拟中添加噪声,因为二维 MTF 计算对噪声极为敏感。
高频衰减是由高斯滤波器引起的。
通过在 Simatest 设置中去除 Noise 和 Filter (Gaussian) 模块,然后点击 Update calculations,就可以查看仅使用 Unsharp Mask (USM) 的 MTF(在此例中,Radius = 1.5,Amount = 2.5)。Unsharp Masking 的光谱响应与“锐化”页面中描述的标准锐化不同:其响应不是周期性的,而是上升到一个近似于 Amount+1 的水平并保持高位。您可以使用 Simatest 对这两种锐化算法进行比较。这幅图展示的是带有大面积灰色背景的溢出硬币测试图,其噪声相对较低,而其他一些图像则噪声更大。
这是一个很好的例子,说明了 Simatest 如何用来探索处理模块对图像外观和测量结果的影响。
光学字符识别(OCR)
在 Imatest 5.0 中添加了 OCR 功能,采用 MATLAB 的 OCR 函数实现,该函数基于 Tesseract-OCR。使用方法如下:
1. 读取包含所需文本的图像。
2. 如有需要,对图像进行处理。处理可以包括图像降质(例如模糊、噪声等,以观察它们如何影响检测)或图像增强(如非锐化掩模、双边滤波等,以观察是否能改善检测效果)。
3. 裁剪图像至文本区域(如果较大区域包含除文本外的其他内容,强烈建议进行裁剪),然后
4. 点击 OCR 按钮。
这将打开 OCR 窗口,并对裁剪区域中的图像执行文本识别操作。右侧示例图像(轻微降质:噪声(高斯)= 0.002;Gaussian filter 2 = 0.7)的识别结果如图所示。您可以下载此图像并进行实验,观察各种降质和增强操作如何影响 OCR 性能。
请注意,MATLAB 的 OCR 性能并不理想。即使看起来相当清晰的文本,其识别效果也不佳,尤其对于小于 12 号的字体。其性能与一些免费或低成本的 OCR 程序(例如 gImageReader(Tesseract-OCR 的图形前端)和 TopOCR)相当。
OCR 设置
字符子集
通过输入字符子集来限制允许输出的字符(如果字符子集留空,则允许所有字符),然后点击 CALCULATE OCR,可以改善识别结果。对于示例图像,字符子集包含拉丁大写字母和数字(典型的汽车牌照字符),虽然改进不大。
QWERTYUIOPASDFGHJKLZXCVBNM1234567890
标准 OCR 对车牌的识别效果并不理想。MATLAB 文件交换中心中有几种车牌检测例程,如果效果良好且许可允许,我们可能会添加一两个。
显示
默认显示为“Text (shown)”文本。您也可以选择“Confidence & words”,该选项会显示单词置信度和各个单词。以下是显示中的几行示例:
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 m
复制到剪贴板
您可以将当前显示内容复制到剪贴板,以便在文本编辑器或其他应用程序中使用。
保存结果
保存当前显示的结果。
在设置的下拉菜单中可以选择可变宽度或固定宽度字体。
Was this helpful?
0 / 0