介绍
图像传感器的未经处理的数字输出称为RAW图像数据。在本文档中,我们有时将来自商用相机或显影系统的 RAW 文件称为“相机 RAW” ,以区别于Bayer RAW文件。Bayer RAW 文件是包含未去马赛克(Bayer)数据的标准单色图像文件。
Imatest模块可以直接分析原始文件,也可以在去马赛克后进行分析。
| 拜耳彩色滤光片阵列 (CFA)大多数数字图像传感器中的像素都覆盖着拜耳彩色滤光片阵列,这使得每个像素对单一原色(红、绿、蓝)敏感。颜色的顺序为 RGRGRG...、GBGBGB... 等,交替排列。绿色像素的数量是红色或蓝色像素的两倍,因为人眼对绿色最为敏感。右侧显示了四种可能的像素排列方式(红色位置),像素位置从左上角的第 1 行第 1 列 ( R1C1 ) 开始。目前没有通用的颜色( R 、 G或B )到像素位置 ( RmCn )映射标准。可以通过使用Rawview 工具检查包含可识别颜色的拜耳原始图像文件来确定像素排列方式,Rawview工具可以从“实用工具”菜单打开。 |
|
| 除了众所周知的拜耳 CFA 传感器外,Imatest 还支持RCCC (红-清-清-清)传感器,这种传感器广泛应用于汽车行业(红色在汽车行业中具有特殊意义)。与拜耳传感器类似, RCCC传感器的红色通道可以位于四个位置中的任意一个(右侧显示了其中两个)。Rawview 可以帮助确定红色通道的位置。RCCC 图像并非以传统方式进行去马赛克处理,而是转换为单色图像。单色设置和通用读取原始图像窗口(如下所示)包含从整个图像中移除红色通道或仅选择红色通道的选项。这些方法在 Analog Devices 的“红/清传感器接口... ”一文中有详细描述。 |
| ||||||||||||||||||||||||||||||||||||
| RCCB (红-清-清-蓝)传感器可以像拜耳CFA图像一样进行去马赛克处理。在图像处理的早期阶段,它们可以采用相同的方法进行分析。在应用强色彩矩阵(以去除清光通道中的红色和蓝色分量)之前,其颜色不会类似于常规的RGB彩色图像。 | |||||||||||||||||||||||||||||||||||||
| RGBIR |
| ||||||||||||||||||||||||||||||||||||
为了在大多数应用程序中使用,RAW 文件必须经过去马赛克处理(尽管许多Imatest模块可以直接分析 RAW 文件)。去马赛克(有时拼写为demosaicking )是一种插值方法,用于填充每个像素缺失的颜色。它是RAW 转换程序的主要功能(这些程序可能内置于相机中,也可能安装在单独的计算机上)。在去马赛克过程中,缺失颜色的细节是通过相邻颜色的细节来推断的。算法可能非常复杂。微软的 Henrique S. Malvar、Li-wei He 和 Ross Cutler 合著的《 用于拜耳阵列彩色图像去马赛克的高质量线性插值》一文就是一个很好的例子(这也是Matlab 的梯度校正线性插值去马赛克例程的基础)。
除了去马赛克之外,将原始图像转换为标准可互换图像格式可能还包括
- 应用伽玛曲线,通常还会添加一条色调响应曲线(该曲线通常有一个“肩部”,即一个圆润的区域),
- 白平衡和色彩(矩阵)调整,
- 锐化,通常是在对比度高的特征附近进行,
- 软件降噪,通常用于缺乏对比鲜明特征的情况。
所有这些步骤都可能影响Imatest 的测量结果。为了最大限度地减少这些影响(在不进行锐化、降噪和色调响应曲线处理的情况下转换原始文件), Imatest采用了以下技术:
- 对于相机制造商专有的商业RAW文件(例如佳能的CR2格式和尼康的NEF格式),其中包含可能被压缩( m像素压缩成n位)的专有元数据, Imatest使用LibRaw。LibRaw是一款免费程序,可将商业RAW图像转换为有用的文件格式,且处理量极少。LibRaw可以选择性地应用简单的伽玛曲线(不包含额外的色调响应曲线)和白平衡(基于相机设置),但它不会进行锐化或降噪处理。
- 对于厂商开发系统的输出(通常是纯二进制数据,每个像素 1 或 2 个字节),Imatest 使用下文所述的通用读取原始数据 ( Generalized Read Raw )。通用读取原始数据可以选择性地应用简单的伽马曲线和白平衡(基于粗略的“灰度世界”算法)。输出图像可以在“颜色/色调交互式”或“颜色/色调自动”模式下进行颜色校正(使用矩阵),并在“图像处理”模式下进行锐化或降噪。必须指定与文件格式(最重要的是行数、列数和位深度)相对应的扩展名。
Imatest 中的原始文件
Imatest可以通过两种方式使用 RAW 文件。
- 它可以对原始文件进行去马赛克处理,生成标准的 3 色 RGB 图像文件,格式包括 TIFF、PPM、PNG 和 JPEG,默认格式为 TIFF。使用 LibRaw 或通用读取原始图像的优势在于它们不会进行锐化和降噪处理,并且使用直线伽马曲线。LibRaw 提供多种伽马值选项,包括 1/2.2(适用于典型显示器)、sRGB(接近伽马值 2.2,但在暗部区域具有线性过渡)和 1.0(真正的线性)。如果可以使用原始文件,则可以对不同制造商的相机和镜头进行一致且公平的比较。在 Colorcheck 和 Stepchart 中使用 LibRaw 时应谨慎,因为它默认会执行自动曝光(自动白电平调整)。应取消选中“自动白电平”按钮以获得正确的色阶。根据dcraw 常见问题解答,“无论图像有多暗,dcraw 的自动曝光功能都会将其拉伸,使其中 1% 的像素显示为白色。“-W”选项可以避免这种情况。”
- 它可以将相机原始文件转换为以标准单色图像文件格式(TIFF、PNG 或 PGM)存储的拜耳原始(未去马赛克)文件。大多数Imatest Master模块都可以分析拜耳原始文件。拜耳原始文件对于测量横向色差非常有用,因为去马赛克过程会严重扭曲横向色差。它还允许分别分析两个原始绿色通道(Gr 和 Gb)。注意: LibRaw 可能会进行一些色调处理,即使文档中指出它不会,也就是说,Stepchart 和其他模块测量的伽马值可能与预期值 1 相差甚远。(这可能是由于原始文件本身存在未校正的偏移量造成的。)
要在 Imatest 中使用原始文件,可以这样做:
- 点击 Imatest 模块(SFR、Stepchart 等),然后像打开其他图像文件一样打开文件。如果文件扩展名表明它是 LibRaw 支持的相机原始图像文件(CR2、NEF 等,甚至包括 Phase One RAW TIF 文件),则会打开如下所示的对话框,用于设置Libraw (以前称为 dcraw)参数。如果文件扩展名已输入到“通用读取原始图像”设置中,则文件将根据“读取原始图像”设置进行读取和解码。
- 点击“实用工具”菜单中的LibRaw 复选框,即可将 LibRaw 作为独立应用程序运行:输出文件将被保存,但 Imatest 模块将不会运行。下方 LibRaw 部分显示的对话框是 LibRaw 的图形用户界面 (GUI) 前端,允许您选择 LibRaw 的多个选项。
使用 LibRaw 处理商业 RAW 文件
注意: Imatest 2021.1版本新增了对LibRaw的支持。dcraw已于2021.2 版本弃用。它提供最新的相机支持。 dcraw在 2021.2 版本之前是一个可选功能,但它不支持 2019 年之后发布的 RAW 文件格式。在 LibRaw 出现之前,要转换 dcraw 不支持的 RAW 图像,需要先使用免费的Adobe DNG 转换器将其转换为 DNG 格式。 |
确保Imatest使用的图像文件忠实还原原始文件(即具有直线伽马曲线、未锐化、未降噪)的最佳方法是将原始文件读入Imatest ,并使用LibRaw (或在 2021.1 版本之前使用Dave Coffin 的 dcraw)将其转换为标准格式(TIFF、PPM 等)。如果您选择任何标准原始格式(CR2、CR3、NEF 等)或检测到原始数据(例如 Phase One TIF 文件),则会弹出一个对话框。这是 LibRaw 的一个前端,允许您在多个原始转换选项之间进行选择。预设位于右侧的粉色框中。

已不再需要的“程序”下拉菜单已被移除。
LibRaw可以 (A) 对相机 RAW 文件进行去马赛克处理,仅进行最小程度的处理——不进行锐化、不进行降噪,仅应用简单的伽马曲线;或者 (B) 将其转换为包含 Bayer RAW(未去马赛克)数据的标准 8 位或 16 位单色文件格式(TIFF 或 PGM),这些数据可供多个 Imatest Master 模块进行分析。此转换提供以下选项:
| 去马赛克 | 普通原始转换(去马赛克) |
| Raw 8 位(Bayer raw;无去马赛克) | |
| Raw 16 位(Bayer raw;无去马赛克) |
如果选择上述第二个或第三个选项(原始 8 位或原始 16 位),则大部分去马赛克区域(如上所示)将变为灰色,LibRaw 的输出是一个单色 TIFF 或 PGM 文件,其中包含来自图像传感器的未去马赛克(拜耳原始)数据。
注意:截至 2009 年 7 月,未去马赛克(拜耳 RAW)文件的像素级别和伽玛值似乎不太可靠,这显然是因为 RAW 图像中的偏移量未被消除。如果取消选中“自动白电平”,则级别会过暗,并且伽玛值不正确(针对佳能 CR2 RAW 文件)。使用正常的 RAW 转换(去马赛克)后,曝光和伽玛值则较为可靠。
Imatest 2021.1 版本新增了对 LibRaw 的支持,并支持多种相机。LibRaw 选项在 2021.1 版本中仍然可用,但在 2021.2 版本中已被弃用。
如果选择了“普通原始转换(去马赛克)” ,则“去马赛克”框中包含多个选项,其中大部分选项在dcraw 手册页中有更详细的说明( LibRaw网站上没有找到相应的页面)。以下输出颜色空间可用于去马赛克输出。
| 原始数据(并非真正的原始像素)。 未经色彩空间转换或白平衡调整的去马赛克图像。 需要使用相机的色彩配置文件来正确解读颜色。Gamma = 0.45。 |
| sRGB、Adobe RGB (1998)、广色域 RGB、ProPhoto RGB 和 XYZ。 |
输出文件中嵌入了四种标准色彩空间的配置文件标签。有多种去马赛克质量级别(使用不同的算法)可供选择(值得探索)。详情请参阅dcraw 手册页。默认启用自动白电平。在进行色调测量时,可以将其关闭。
LibRaw 默认将 RAW 文件转换为 TIFF 文件,并提供不太常见的 PPM 格式作为选项。如果选中删除转换后的 (TIFF) 文件复选框,则可以将图像保存为两种压缩格式之一:PNG(无损压缩;耗时较长)或 JPEG(有损压缩;最高质量;仅限 24 位)。
LibRaw网站上列出了支持的相机列表。
相机内JPEG文件与LibRaw转换文件之间的差异 这两种文件类型通常外观不同,因为
原始文件的 EXIF 元数据中包含色调响应曲线、锐化和降噪等信息。LibRaw 会忽略这些信息,但某些能够读取原始文件的程序(例如 Irfanview 或 Photoshop)可能会使用这些信息。 |
单色/拜耳RAW(或RCCC)文件选择
当支持拜耳RAW分析的Imatest Master模块打开单色文件时,会出现如下所示的对话框。(如果选中了“不显示此窗口...”选项,则不会出现此对话框。可以在“设置”的“单色读取对话框”下恢复显示。)
左侧的四个按钮会立即执行操作(窗口关闭,处理继续):、 、去以及 。
对于不包含 Bayer RAW 或 RCCC 数据的普通单色图像文件,应选择。
对于拜耳RAW和RCCC文件,色彩解释取决于像素颜色映射的选择(佳能相机为R1C1红色;松下相机为R1C2红色,等等)。可以通过对一张颜色清晰的图像运行Rawview工具来找到拜耳RAW图像的正确设置。对于通常偏暗的16位图像,位移操作可能很有用。
处理的图像包含四个通道(红色、绿色(红色行)、蓝色和绿色(蓝色行)——简写为 R、G(r)、B、G(b)),不进行去马赛克处理。要显示(在某些情况下也用于分析)的主要通道在“要分析的主要通道”下拉菜单中选择。此设置可在各个模块中进行覆盖(并非至关重要)。
可以对图像进行去马赛克处理(适用于拜耳传感器),也可以将其处理为 RCCC 格式。必须在“去按钮右侧的下拉菜单中选择去马赛克或 RCCC 处理算法。选项如下所示。
Demosaic下拉菜单包含以下选项。
| 推荐使用 Matlab(梯度相关线性插值) | 适用于拜耳传感器。输出为彩色图像。使用 Matlab 的中等高质量去马赛克算法,该算法源自 Malvar、He 和 Cutler 的论文《用于拜耳图案彩色图像去马赛克的高质量线性插值》 。 |
| 双线性插值(简单、低质量、 清晰度较低;不推荐) | 适用于拜耳传感器。输出为彩色图像。通常不建议选择此方案。 |
| RCCC传感器:红色通道去除(简单;全分辨率) | 输出为清晰像素的全分辨率单色图像。红色通道通过插值去除,插值采用Analog Devices 白皮书图 4 中的 4 像素平均核。 |
| RCCC传感器:仅红色通道 (简单;半(线性)分辨率) | 输出结果为仅包含红色通道的单色图像,其线性分辨率为输入图像的一半。 |
| RCCC传感器:红色行移除 (改变宽高比) | 输出结果为清晰像素的单色图像,行数是原始图像的一半。 |
| RCCC传感器:红色列移除 (改变宽高比) | 输出结果为清晰像素的单色图像,列数是原始图像的一半。 |
| RCCC传感器:红色去除并进行校正;更锐利 | 采用Analog Devices公司“红/透明传感器接口…… ”一文中描述的处理方法。输出为单色图像。 |
两种去马赛克选项均支持白平衡调节,但不支持 RCCC 模式。
识别拜耳原液模式
拜耳原始图像通常是单色文件(但如果使用屏幕截图——快捷键 Alt-PrtSc——获取,则可能是彩色的)。它们有时会在开发/原型系统中意外出现。如果您能识别它们,就能避免很多麻烦。它们的特征是类似右图所示的方形图案。


拜耳原始特征模式
如果选择了拜耳原始颜色,则会根据像素颜色映射和按下的按钮(、等)选择四个图像平面之一。(图像平面与颜色之间没有通用的映射标准。)下图显示了按下按钮时可以分析的四个平面。请注意,每个平面中图像的高度和宽度(以像素为单位)是整个图像高度和宽度的一半,像素间距是传感器像素间距的两倍。
↓
|
↓
|
↓
|
↓
|
(目前没有将颜色映射到图像平面的通用标准。)
拜耳频率单元
在SFR或任何Rescharts MTF 模块(斜边等)中分析 Bayer 原始(未去马赛克)图像的 MTF 时,“更多设置”窗口提供了一个名为“Bayer 频率单位”的设置,位于“MTF 图单位”附近。此设置有两个选项:“每总像素的周期数”和“每通道像素的周期数”:
-
循环次数/总像素数——生成的空间频率将根据完整尺寸图像中的像素数进行缩放。此选项可提供空间频率的自然缩放,其结果与去马赛克图像的结果相当。这是默认设置。
-
每通道像素循环数——生成的空间频率会根据子采样单通道图像的大小进行缩放,该图像的高度和宽度是完整图像的一半(像素数是完整图像的四分之一)。因此,使用此选项时,奈奎斯特频率将减半。此选项仅适用于与图像大小相关的“MTF 图单位”(空间频率单位)(例如图像高度和裁剪高度)。对于所有其他空间频率单位,“拜耳频率单位”设置将被禁用,并默认为“每总像素循环数”选项。
阅读更多关于此知识库文章的内容: 拜耳原始图像的 SFR 结果
直接读取 DNG(Adobe 数字底片)
|
推荐用于读取原始文件以测量图像传感器噪声或眩光(光晕)。 我们也推荐使用 DNG 格式,因为 LibRaw 不支持这种较新的商业 RAW 格式。 |
Imatest可以直接读取DNG(Adobe 数字负片)文件。
尽管DNG格式在文件去马赛克后优势不大,但它在测量方面却具有显著优势。
- 图像传感器动态范围,需要线性未去马赛克(拜耳)原始文件数据,像素级别范围从 0(纯黑)到位格式的最大值(通常 16 位深度为 65535)。
- 眩光会造成测量误差,任何像素级的偏移(基线)都可能导致测量结果不准确。
- LibRaw 不支持商业 RAW 文件格式。
问题在于不同相机的黑电平偏移(最小像素值)和白电平(饱和度)各不相同,而且由于制造商使用不同的 EXIF 标签(甚至根本不记录)来记录这些值,因此很难确定这些值。这些值通常在图像去马赛克时应用于 LibRaw 处理,但在图像未去马赛克时(且未保存在 EXIF 数据中)通常会被忽略,也就是说,LibRaw 在存在偏移时不够稳健。为了获得有效的传感器动态范围计算结果,需要应用这些偏移值。对于已转换为 DNG 格式的原始文件,此过程会自动完成。DNG 是一种特殊的 TIFF 文件,它使用标准标签进行线性化和黑白电平校正。有关概述,请参阅“在 MATLAB 中处理原始图像” 。
任何商业RAW文件(CR2、RW2、NEF等)都可以使用Adobe的免费DNG转换器转换为DNG格式。点击此处下载并按照说明操作。Adobe Digital Negative Converter在图形用户界面(GUI)窗口中运行。要将其用于未去马赛克的文件,请打开它并单击“更改首选项”打开“首选项”窗口,然后在“兼容性”下拉窗口中选择“自定义...”打开“自定义DNG兼容性”窗口。 “线性(去马赛克)”应取消选中, “未压缩”应选中,如右图所示。
DNG转换器的操作简单易懂。请注意,文件夹中的所有文件都将被转换,因此如果您只想转换部分文件,则需要将它们移动到单独的文件夹中。
要使用此功能,必须在“设置”中选择右侧所示的选项“3. 直接读取 DNG 文件,然后线性化并校正黑电平偏移” 。选择此设置后, Imatest读取的 DNG 文件在纯黑状态下像素级别为 0,最大像素级别为 2位深度- 1(位深度为 16 时为 65535),因此非常适合用于测量传感器动态范围。
Rawview 实用程序
Rawview实用程序允许您通过尝试每种颜色排列方式(红色位于 R1C1、R1C2、R2C1 或 R2C2 中)并选择看起来最好的颜色排列方式来确定 Bayer raw 文件的颜色排列方式。
Rawview 无法直接处理二进制 raw 文件或制造商提供的 raw 文件。
这些文件应该转换为标准图像文件格式(PNG、JPEG 等)。
通常不使用去马赛克处理,而是使用 Read Raw 或 LibRaw。
如有需要,图像可以保存为 RGB 文件。可以从“实用工具”菜单打开它。首次打开Rawview时,会显示类似如下所示的说明。(这些说明可能更新。)
欢迎使用 Rawview:预览拜耳 Raw 文件。 |
读取图像文件后, Rawview窗口如下所示:
Rawview 窗口(未缩放)
缩放功能始终处于激活状态:可以放大图像以更好地查看关键细节。 ”按钮会在“R m C n中的红色”选择更改时启用。它会设置Imatest模块中打开 Bayer 原始文件的默认设置,这会影响某些显示器。
请注意, Rawview不会进行白平衡调整,因此您看到的色彩平衡代表的是传感器中的色彩平衡,这可能很有意思。它很少是中性的。
| 要确定哪个位置 (RmCn) 包含红色通道,请点击左下角下拉菜单中每个仅包含 RmCn 的设置(例如:仅 R1C1(用于 RCCC))(上方显示的是R1C2 中的红色)。包含红色通道的位置看起来会与其他位置不同——更暗。此位置可用于单色(拜耳原始)和通用读取原始设置窗口。 |
有两种方法可以将图像保存为 RGB 文件:会将图像保存为低分辨率 RGB 文件,仅使用 R、(其中一个)G 和 B 通道,而不进行适当的去马赛克处理。垂直和水平分辨率均为原始文件的一半(总像素数为原始文件的 1/4)。则使用 Matlab 的标准梯度校正线性插值去马赛克算法,将图像保存为全分辨率 RGB 文件。
Rawview 下拉菜单包含显示选项和保存命令。
文件
- 读取拜耳原始文件读取拜耳原始文件(必须为标准图像文件格式:TIFF 等)
- 保存屏幕:保存屏幕内容。如果选中“显示屏幕”复选框,则可以选择显示屏幕内容。首次使用此方法显示屏幕之前,需要先设置查看器。Irfanview 是一款优秀的免费查看器。
- 将图像另存为 RGB 文件。该 RGB 文件具有原始文件的一半像素尺寸(分辨率)。此过程不涉及去马赛克算法。R 通道、选定的 G 通道(G(R) 或 G(B))以及 B 通道的内容与未去马赛克的通道相同。
设置
- 调整 16 位图像如果需要增强显示效果,可以提亮 16 位图像(线性或接近线性,即伽马值接近 1.0)。
- 更明亮的 16 位图像进一步提高 16 位图像的亮度,以获得额外的显示效果。
帮助
- 在线帮助页面将在您的默认浏览器中打开。
Generalized Read Raw
Read Raw lets you read and decode binary raw files created in engineering development systems, which are not supported by LibRaw. It has a great many options. For example, you can demosaic a file or leave it undemosaiced in order to measure MTF of any of the four channels (R, GR, B, GB) of undemosaiced (Bayer raw) files. Options are listed below.
Generalized Read Raw is primarily for binary files taken directly from manufacturer's development systems. For the proprietary RAW formats from commercial cameras, which contain metadata and packed data, LibRaw should be used.
To read Generalized Raw files you must specify a file extension (up to 16 can be registered) and associate read settings with that extension. This can be done in the following steps.
Click the button in the Utility menu. The following dialog box opens. Entries should be based on manufacturer's data sheets where possible, but some trial-and-error is often required. If you know the image width and height (in pixels) setup is usually very fast. If you make an incorrect choice, a plot will be displayed (below) to help determine the correct width and height values.
- File extension— Select one of the 16 extensions in the dropdown menu on the upper-left to edit. To recognize a new extension, enter the extension (3 or more alphanumeric characters) in the box to the right of the dropdown menu, and hit Enter. If possible, it should be one of the extensions not recognized by LibRaw. The settings for this extension will be saved when you click OK or Convert/Test (which tests extension settings by reading and displaying a file).
As of October 2009, the following extensions (in rawphoto.c, linked from www.dechifro.org/dcraw/) are recognized by LibRaw/dcraw: 3fr, arw, bay, bmq, cine, cr2, crw, cs1, dc2, dcr, dng, erf, fff, hdr, ia, jpg, k25, kc2, kdc, mdc, mef, mos, mrw, nef, nrw, orf, pef, pxn, qtk, raf, raw, rdc, rw2, sr2, srf, sti, tif, and x3f.
- Input pixel size— How pixels are stored in the file. Choices are uint8, uint16, and uint32 (unsigned 8, 16, and 32-bit formats, for 1, 2, or 4 bytes per pixel). Packed formats (for example where 2 12-bit pixels stored in 3 bytes) are handled in the Unpack dropdown menu.
- Output pixel size— How pixels are stored in Imatest. Choices are uint8, uint16, or uint32 (for HDR files).
- Bit shift— The number of bits to shift so the lightest pixels aren't too dark or saturated: Auto or 0, ±2, ±4, ±6, or ±8 are the choices for uint8 or uint16 output. Uses the very fast Matlab bitshift function. Often needed to get correct levels for analysis. Negative numbers darken the image. Auto is recommended unless absolute levels are required.
| Warning: be cautious in applying bit shift, and especially Auto bit shift, to measurements that require absolute levels, particularly with 16-bit output files where the original sensor has 10-14 bits of data (resulting in padded files). Such measurements include hot/dead pixels (in Uniformity and Blemish Detect), which will be shifted along with the image, Color Correction Matrix (in Color/Tone Interactive), etc. |
Auto bit shift works by finding the maximum pixel value m in the image excluding the two outer rows and columns (closest to the edge of the image), comparing the maximum to the maximum level for the output pixel size (255 for uint8, 65535 for unit16, etc.) then shifting the pixel levels so the maximum pixel value is between half the maximum and the maximum for the output pixel size. For example, if the maximum pixel level m for a uint16 image is 9120, the bits will be shifted by 2 pixels (equivalent to multiplication by 4) to make the maximum 36480.
- Pixel offset— An integer number to subtract from the pixel levels. Used when there is a black level offset or "pedestal". Test carefully, especially if Bit shift is applied (it is applied before Bit shift). Note that the pedestal subtraction is applied after the decompanding (addressed in the Decompanding section). If pedestal subtraction is desired prior to decompanding then it must be set in the JSON decompanding file instead.
Auto offset will be deprecated in 2021.1. Auto offset finds the minimum pixel level (which is a function of pedestal, image content, and veiling glare) and subtracts it from the image. This ruins veiling glare measurements. We strongly discourage selecting Auto offset. An appropriate manual pixel offset is far more consistent.
- Byte ordering—I EEE Little or Big-Endian. Affects results when Input pixel size is uint16. See wikipedia.org/wiki/Endian.
- Width— Image width in pixels. Can usually be obtained from manufacturer's data sheets. If you enter an incorrect number for width and height (if Width x Height × bytes per pixel ≠ file size in bytes), an additional plot is displayed (see below) to help you estimate the width.
- Height— Image height in pixels.
- Transpose— Switches rows and columns. Usually checked.
- Rotate/Mirror— Allows the image to be rotated by multiples of 90 degrees and/or mirrored.
- Pixels to skip— The number of pixels to skip at the start and end of the file.
- White balance— None or Simple White Balance (gray world; darken or lighten). Simple WB sets the gain on the four channels so their mean is identical (the lowest of the four means if "darken" is selected; the lightest if "lighten" is selected). It's not a sophisticated algorithm— it only works for mostly gray test charts (some color is tolerated as long as the average is close to neutral gray). WB allows you to interpret the image as a standard monochrome file (rather than a Bayer RAW channel with only 1/4 the pixels) that can be analyzed for MTF with any of the sharpness modules (SFR, SFRplus, Log F-Contrast, Star Chart). An undeomsaiced slanted edge without and with WB is shown below. In this case, white balance was not far off to begin with. For full color correction, we recommend calculating a Color Correction Matrix (CCM) using the decoded image.
![]() | ![]() |
|---|---|
| SFR edges: without and with White Balance | |
- White level— No change or Auto: 99% of saturation. The Auto: 99% setting sets the highest pixel to 99% of the saturation level (252 for 8-bit files; 64880 for 16-bit files). This usually lightens the images, especially if Bit shift is not set to the optimum value.
- Unpack— Settings for unpacking specialized packed files (MIPI, Android). Updated on user request.
- Gamma— Apply gamma encoding to the image. Gamma = 1 is standard: it maintains the gamma (around 1) of the raw image. 0.4545 (1/2.2) (or 0.5) is close to standard color spaces.
- Decompanding— Provides the user with the option to apply decompanding on a raw image using the drop-down menu. To apply decompanding, the user must input their sensor’s companding data using a JSON file. Shown below is an example of a 16-bit to 12-bit companding for the AR0331 sensor. Clicking on the ? button to the right of the drop-down menu opens a window with brief instructions.
|
Imatest decompanding is based on manufacturer's specifications. See, for example: https://www.onsemi.com/pub/Collateral/AR0331-D.PDF, Figure 19 and Table 9, pages 20-21. Decompanding is performed in piecewise-linear segments (different algorithms can be added). You will need a decompanding file based on entries in the Companding table (Table 9 in the above link) or "knee points" provided by the customer. Input is in JSON format, which has rigid syntax. See below for an example, using the input/output code ranges taken from the Table 9 in the above link. Fields with peach backgrounds are optional and treated as comments. You are free to add additional comment lines. They will be ignored, as long as they are not considered user data. Decompanding file based on the companding table in the above link {
"dcData": {
"decompanding_data_source": "https://www.onsemi.com/pub/Collateral/AR0331-D.PDF",
"decompanding_data_details": "Fig. 19 and Table 9, pp. 20-21",
"user_comment": "",
"decompand_type": "piecewise linear",
"input_code_range_low": [0, 1024, 4096, 32768],
"input_code_range_high": [1023, 4095, 32767, 65535],
"output_code_range_low": [0, 1024, 2560, 3456],
"output_code_range_high": [1023, 2559, 3455, 3967],
"pedestal": 0
}
}
Customers often send us "knee points" for decompanding. We have found that these are simpler to use and less error-prone than the input/output code ranges (see above). A decompanding file based on "knee points is shown in the example below. Note that a bit shift (-4 bits; equivalent to dividing by 16) has been applied before decompanding. Decompanding file based on the customer-supplied "knee points" {
"dcData": {
"decompanding_data_source": "Customer-supplied data",
"decompanding_data_details": "Input is uncompanded; output is companded",
"user_comment": "",
"decompand_type": "piecewise linear",
"bitshift_first": -4,
"kneePoints_input": [0, 2048, 65536, 1048576],
"kneePoints_companded": [0, 2048, 3040, 4001],
"pedestal": 16
}
}
INI decompanding fileWe have added an alternate INI input format, which is quite robust and easy to get right. To read with the INI format, the decompanding file extension must be INI. Here is an example of the INI formatted for the same data as the above box.
We recommend the resource folder for storing this file (though any convenient folder will work). To locate it on your computer, open Settings, press Manage settings, and click Open Resources folder at the bottom. Note: The ReadRaw Output Pixel Size should be set for the decompanded image size. E.g., if you are decompanding a 16 bit image into a 20 bit image, select 32 bit as the Output Pixel Size. If the Output Pixel Size is less than the decompanded size, then imatest will bitshift the data down to the Output Pixel Size. |
The JSON format data above are based on entries in Table 9 of the AR0331 link. The JSON format data above are based on entries in Table 9 of the AR0331. The “input_code_range_…” refers to the image sensor data and the “output_code_range_…” refers to the companding data in the JSON file. For more information, refer to tables 9 and 10 in the AR0331 documentation. The Decompand plot button produces a plot of the decompanding file, useful to check on the JSON settings, which have a rather inflexible format. Either Decompanding or Companding can be selected (Decompanding is shown below). There is a small image in the center of the plot showing the approximate shapes of the two curves— important for avoiding errors caused by confusing input and output data.
Decompanding plot preview, showing contents of the JSON file- 去马赛克——可选择“无”(单色输出)、去马赛克程序(用于拜耳图像;彩色输出)或 RCCC 处理(单色输出)。选项与“单色”窗口(上图;此处重复)类似。
| 无(拜耳原始输出) | 单色输出:与输入相同。 |
| Matlab(梯度校正线性插值) | 色彩输出:高质量去马赛克,使用Matlab 的去马赛克函数。推荐用于拜耳阵列原始文件。 |
| 双线性插值(简单、低质量;清晰度不高) | 色彩输出:质量差;清晰度低。(应客户特殊要求。)不推荐。 |
| RCCC传感器:红色通道移除 (简单;全分辨率) | 通过插值去除红色通道的单色输出。请参阅Analog Devices 的“红色/透明传感器接口... ”文档。您可以选择“无”,稍后在“单色/拜耳原始图像”窗口中执行 RCCC 处理。如果红色通道的位置未知,请选择“无”,然后使用Rawview查找其位置。 |
| RCCC传感器:仅红色通道(简单;半(线性)分辨率) | 单色输出:仅红色通道。输出的线性分辨率是输入的一半(像素数为 1/4)。 |
| RCCC传感器:红色行移除 (改变宽高比) | 输出结果为清晰像素的单色图像,行数是原始图像的一半。 |
| RCCC传感器:红色列移除 (改变宽高比) | 输出结果为清晰像素的单色图像,列数是原始图像的一半。 |
- 拜耳排列(红色通道的位置)。
- 输出文件:保存文件。文件格式可选:无(不保存;只读)、 PNG 、 JPEG、TIFF 或 HDR(Radiance) 。未去马赛克的文件可以使用Rawview打开。
- 转换/测试功能会保存设置,然后读取并显示原始图像文件或一批文件(示例见右图)。如果读取的文件实际大小不等于像素宽度 x 高度,则图像将以相同的宽度显示,但高度会进行调整,并显示两张诊断图像(如下所示;用于估算正确的宽度)。图表下方的文本会显示指定的宽度、高度和宽度 x 高度,以及返回的实际像素数(如果选择了正确的值,则该值将等于宽度 x 高度)。可用的输出格式包括 PNG、JPEG、TIFF 和 HDR。
- 保存设置,但不关闭“读取原始图像”窗口。此功能可用于通过将图像直接读取到Imatest模块来测试“读取原始图像”功能。
- 确定保存设置并关闭“读取原始数据”设置窗口。
- 点击右上角的“帮助”按钮即可打开此网页。
“操作顺序”窗口会显示正常的操作顺序(如下所示)。这有助于解答常见问题。请注意,所有操作都是可选的:只有在指定的情况下才会执行。令人惊讶的是,在去马赛克之前,拜耳图像需要执行如此多的操作。
|
估算图像宽度和高度
如果从文件中读取的像素数(不包括文件开头或结尾跳过的像素)不等于指定的图像宽度 x 高度,则诊断图会显示估计的文件周期(最大周期通常等于图像的像素宽度)以及几个图像尺寸的猜测值。下图是通过故意输入错误的宽度值得到的。
周期性是通过计算一维图像数据的傅里叶变换,求出绝对值(即去除相位),然后进行傅里叶逆变换得到的。最大峰值(大于 0)的位置即为最可能的周期性。在本例中,周期性为 4096,显示在右上角。由于此估计可能不适用于所有图像,因此还显示了其他可能的宽度(周期性)。
如果像素宽度和高度的估计值是整数(没有小数部分),则这些估计值是有用的。在本例中,第一个估计值(4096 * 3072,基于将总像素数除以最可能的周期)被证明是正确的,并且4:3宽高比也出现了相同的尺寸。其他宽高比显然是错误的。此图中的信息可用于改进“读取原始图像”设置窗口中的“宽度”和“高度”设置。
创建合成RAW图像
有时需要原始图像来分析信号处理算法的性能,但可能无法获得真实的原始图像(来自相机)。在这种情况下, Rescharts 、 Color/Tone Interactive 、 Uniformity-Interactive和Image Processing中使用的图像可以保存为伪原始图像。
如果需要高质量图像,我们建议运行“测试图表”模块并保存图表图像。“测试图表”会生成两种类型的图像文件:位图图表(可直接加载到上述任何模块中)和SVG(可缩放矢量图形)文件(可在Inkscape (一款优秀的免费开源软件)中打开和编辑,并导出为位图 (PNG) 文件)。两种类型的图像都可以编辑,例如将黑白图像更改为黑红或蓝(拜耳去马赛克处理效果较差的情况)。我们经常推荐使用“图像处理”模块,该模块可以读取任何图像文件,先对图像进行降级处理(添加噪声、模糊等),然后再增强图像(使用色调映射、双边滤镜、USM锐化等)。
要保存“伪原始”文件,请单击任意模块上的“文件”下拉菜单,然后单击“保存伪原始/重新镶嵌图像” 。这将打开“保存(重新)镶嵌图像”对话框。
此窗口提供多种处理和保存选项。
- 拼接或通道选择决定了基本操作。选项有:
无(正常颜色文件输出)
镶嵌(拜耳格式) (默认——标准拜耳镶嵌。)
RCCC(红-清-清-清):R 亮
RCCC(红-白-白-白-白):R = C/3
单色(Y = 亮度)
单色(平均值:权重相等)
红色的
绿色的
蓝色的
- 红色通道位置这适用于拜耳马赛克图像和 RCCC 图像。
1. R1C1 (RGGB) 中的红色
2. R1C2 (GRBG) 中的红色
3. R2C1 中的红色 (GBRG)
4. R2C2 中的红色 (BGGR)
- 旋转/镜像
1. 保持方向(默认)
2-4. 逆时针旋转 90 度、180 度、270 度
5. 镜像(不旋转)
6-8. 镜像,逆时针旋转 90°、180°、270°
- 伽玛调整(乘数) (默认为 1)用于大致恢复由伽玛编码图像生成的伪原始图像的线性色调响应。对于典型的色彩空间文件,如果编码伽玛值接近 0.5,则伽玛值为 2 比较合适。更好的方法是:使用从灰度图表中测得的编码伽玛值的倒数。
- “保存文件格式”用于选择保存文件的格式。可以选择四种标准图像文件格式:PNG(默认)、JPG、TIF 和 BMP。PNG 通常是一个不错的选择,因为它采用无损压缩,而且比 TIF 或 BMP 文件小。JPG 可以生成较小的文件(但通常不建议使用 JPEG,因为有损 JPEG 压缩可能会影响通道间的隔离度)。可以使用Rawview查看标准图像文件。
可以选择两种二进制格式:8 位和 16 位。这些格式可以使用通用读取原始数据进行解码。 - 仅当选择了上述二进制格式之一时,才会启用扩展名(二进制文件) 。请为扩展名选择一个名称(通常为 RAW,但建议使用唯一的扩展名)。
- 增强绿色通道使保存的文件看起来更像典型的RAW文件,其中绿色通道通常比其他通道更有能量。选择是
无强调:RGB 等权重(默认)
绿色(蓝色/2,红色/2)
绿色(蓝色/3,红色/3)
绿色(蓝色/2,红色/4)
绿色(蓝色/4,红色/2)
预览功能会打开预览图像,通常显示为马赛克(拜耳原始)单色图像。保存图像后,使用Rawview查看去马赛克后的图像效果。
参考
Rob Sumner(加州大学圣克鲁兹分校电气工程系)撰写的《在 MATLAB 中处理 RAW 图像》一文,对 RAW 文件及其处理方式进行了很好的介绍。







