Imatest 通过/失败操作和参考
介绍
Imatest可以为需要返回通过/失败 (P/F) 结果的应用(例如工业相机测试)提供此类结果。虽然通过/失败结果主要面向Imatest IT (工业测试; DLL和EXE文件),但它也适用于基于 GUI 的Imatest版本( Studio除外)。在这些版本中,通过/失败监视器对于预览Imatest IT的 P/F 阈值设置结果尤为有用。
开始使用及格/不及格制
|
概括
- 通过/失败设置(最小值、最大值或限制)以通常的 ini 文件格式存储在自己的 ini 文件中(与标准 ini 文件:imatest-v2.ini 或其他文件分开);
[部分]
参数 = 值
评论以分号开头。
[section] 对应于模块,支持的模块列表如下。由于此文件包含相机规格的值,因此通常称为“spec.ini”文件。如果您需要的设置未列出,请联系我们:添加设置相对简单。
- pass/fail ini 文件由客户使用文本编辑器或Imatest INI 文件编辑器进行维护和更新。
- pass/fail ini 文件的完整路径名在主 ini 文件的 [api] 部分中输入,格式如下:

通过/失败监控
[api]
passFail = fullPathName 。
这可以通过打开“设置”、“IT 和通过/失败设置” ,然后在相应的框中输入完整路径名来完成。
- 被测单元 (UUT) 的相关信息必须以与将图像数组属性传递给 Imatest DLL 模块相同的 JSON 对象(字符串)的形式传递给Imatest 。
- UUT 的部件号、序列号、通过/失败设置、结果值以及通过/失败结果(1 或 0)将以 JSON 对象的形式返回给调用程序。
- 在Imatest的 GUI 版本中,通过/失败监视器(如右图所示)可以在计算结果后立即实时显示通过/失败结果和(如果选择)历史记录。
| 部分 | 描述 |
| [颜色检查] | Colorcheck |
| [失真] | 失真 |
| [多] | 颜色/色调交互式和颜色/色调自动彩色/灰度模块。[colorcheck] 和 [stepchart] 中也有类似的条目。 |
| [sfr] | [sfr] 测量是 SFRplus 的一个子集。 |
| [sfrplus] | 包括 [sfr] 测量。 |
| [清晰度] | 适用于随机/枯叶(散落的硬币)和星形;无论是固定分析还是分辨率分析 |
| [步骤图] | 步进图 |
| [平地] | 均匀平面瑕疵和不均匀性测量。 |
通过/失败设置文件
通过/失败设置——即各项测量的最小值、最大值或限值——存储在一个独立于主 ini 设置文件的 ini 文件中,以便在必要时防止篡改。该文件可以放在一个需要管理员权限才能写入的受保护文件夹中。
我们强烈建议在通过/失败设置文件中包含注释行(以分号 ; 开头),其中包含辅助读数设置和频率单位(如果适用)。如果注释行中包含待测设备的描述,则更有帮助。
它采用标准的ini 文件格式,其中包含与 Imatest 模块对应的部分,这些模块列在通过/失败文件摘要中。大多数条目都有以下三个后缀之一:
| _min | (最小值) |
| _最大限度 | (为了获得最大值) |
| _limits | (取两个值:最小值和最大值) |
有些设置采用不同的格式——为了向后兼容而保留。
以下是一个示例。参数列于下方的“通过/失败参考”中。
[sfrplus]
MTF50P_ratio_min = .5
MTF50P_CP_weighted_mean_min = .13
Rotation_degrees_max = 1
FOV_degrees_diagonal_min = 62
Convergence_angle_max = 5
Secondary_readout_1_center_mean_min = .2
Secondary_readout_1_outer_mean_min = .2
Secondary_readout_2_center_mean_min = .2
Secondary_readout_2_outer_mean_min = .2
[平地]
Dead_pixels_max = 10
Hot_pixels_max = 10
Optical_center_offset_max = 50
相对照明最差角百分比最小值 = 40
Uniformity_RoverG_corners_pct_max = 10
Uniformity_BoverG_corners_pct_max = 10
瑕疵大小(像素)= 20 50
瑕疵最大数量 = 2 1
例如,MTF50P_ratio_min = .5 将(最小 MTF50P)/(最大 MTF50P)(取所有选定区域)的最小可接受值设置为 0.5。
客户必须根据自身需求更新此文件。如有需要,我们将添加其他尺寸信息。
通过/失败参考
根据客户要求,可增加其他尺寸。
| 斜边模块[sfrplus]、[esfriso]、[sfrreg]、[checkerboard] 和 [sfr] | ||
[sfrreg]、[checkerboard] 和 [sfr] 是 SFRplus 的子集。 | ||
| 具有典型参数的变量 | 描述 | |
| Chart_mean_pixel_level_bounds = 100 200 | 图表的最小和最大平均像素值,测量位置在图表中间三分之一处(面积的九分之一)。设置此参数是为了避免因过度曝光(或曝光不足)而导致边缘饱和(锐利的拐角),从而改善MTF曲线。 | |
| Chart_radial_pixel_shift_max = 0 | (+eC) | 图表中心(相对于图像中心)的偏移量(以像素为单位)。 |
| Dynamic_Range_ISO_15739_at_density_2_min | (e) | ISO 15739 动态范围源自密度最接近 2.0 的灰度色块(仅限 eSFR ISO) |
| 低像素饱和度最大值 | 零级像素占比2%以内的最大比例 | |
| Gamma_from_slanted_edges_mean_min | 平均伽玛值(对比度)的最小值,测量自所有可测量伽玛值的倾斜边缘(必须输入图表对比度比率)。低值表示存在雾化现象。如果明暗区域过小,则不进行计算。这对于具有较大边缘角度的 SFRreg 来说可能是一个问题。我们建议使用“更宽”或“最宽”的 ROI 宽度(而不是“正常”)。 | |
| Gamma_from_slanted_edges_min_min | 最小伽玛值(对比度),从所有倾斜边缘测量(必须输入图表对比度比率)。低值表示出现雾化现象。 | |
| Gamma_from_stepchart_limits | (e) | 来自 eSFR ISO 灰度模式的 Gamma(最小值和最大值限制) |
| 高像素饱和度比例最大值 | 最大像素数占比(通常为 255)在最大值的 1% 以内 | |
| MTF50_max_max | 所有选定边缘的 MTF50 最大值(以选定单位表示) | |
| MTF50_mean_min | 从所有选定的边缘中,MTF50(以选定的单位)的平均值的最小值。 | |
| MTF50_min_min | 所有选定边缘的 MTF50 最小值(以选定单位表示)。 | |
| MTF50P_max_max | 所有选定边缘的 MTF50P 最大值(以选定单位表示)。 | |
| MTF50P_mean_min | 从所有选定的边缘中,MTF50P(以选定的单位)的平均值的最小值。 | |
| MTF50P_min_min | 所有选定边缘的 MTF50P 最小值(以选定单位表示)。 | |
| MTF50P_ratio_min = .5 | 最小MTF50P与最大MTF50P之比(对比度降至峰值一半时的空间频率)。低值表示镜头质量差或可能存在严重的镜头倾斜。 | |
| MTF50P_CP_weighted_mean_min = .13 | 加权平均 MTF50P(单位:Cycles/Pixel)。 | |
| 来自 ROI 的相对光照强度 | 倾斜边缘 ROI 的平均像素水平的最小相对照度(最小值/最大值)。 | |
| Rotation_degrees_max = 1 | (+eC) | 图像旋转角度以度为单位,从顶部和底部畸变条测量。使用绝对值来判定是否合格。请注意,如果图表上下颠倒(垂直镜像或旋转 180 度),则旋转角度将加上 180 度,这通常会导致此项测量不合格。 |
| FOV_degrees_diagonal_min = 62 | (+eC) | 对角视场角(度) |
| Convergence_angle_max = 5 | (+eC) | 最大允许会聚角(水平和垂直方向均需测量)。梯形畸变的度量。 |
| Secondary_readout_1_all_min_min | 图像中任意位置辅助读出1均值的最小允许值。辅助读出的相关描述请参见此处。辅助读出ini文件设置请参见Imatest INI文件参考文档。 | |
| Secondary_readout_1_center_mean_min = .2 | 中心区域二级读出1的平均值的最小允许值(<中心到角落距离的 30%)。 | |
| Secondary_readout_1_outer_mean_min = .2 | 外围区域(中心到角点距离的≥30%;包括中间区域(30-75%)和角点区域(>75%))二级读数1均值的最小允许值。(对于eSFR ISO ,中间区域为30-68%,角点区域为>68%。) | |
| Secondary_readout_2_all_min_min | 图像中任意位置的二级读数2的平均值的最小允许值。 | |
| Secondary_readout_2_center_mean_min = .2 | 中心区域二级读出2的平均值的最小允许值(中心到角落距离的 30%)。 | |
| Secondary_readout_2_outer_mean_min = .2 | 外围区域(≥中心到角距离的30%;包括中间区域和角区域)二级读数2均值的最小允许值 | |
| Secondary_readout_1_outer_min_min = .2 | 外部区域二级读出1的最小允许值(≥中心到角距离的30%) | |
| Secondary_readout_2_outer_min_min = .2 | 外部区域中辅助读出2 的最小允许值 | |
| Secondary_readout_1_partway_mean_min = .2 | 中间区域(中心到角距离的 30-75%)二级读数1平均值的最小允许值 | |
| Secondary_readout_2_partway_mean_min = .2 | 中间区域二级读数2平均值的最小允许值 | |
| SMIA_TV_失真限制 | (+eC) | SMIA电视失真的最小和最大允许值。 |
| snr_bw_min | (e) | 信噪比带宽的最小值: 请参阅www.imatest.com/docs/noise/#snr_bw。此测量是场景参考的,即,当图像对比度变化时,它变化很小。 |
| Y_SNR_dB_mean_except_ends_min | (e) | 从灰阶图(排除最亮和最暗的两个区域)中获取最小信噪比 (SNR) 值(dB)。Y(亮度)通道用于彩色图像。与图像对比度成正比。 |
| Horizontal_bars_OK_min = 1 (+) | (+) | 测试是否正确检测到顶部和底部横线(存在且无明显间隙)。 |
| All_Edge_IDs_detected = 1 (+) | 验证是否检测到边 ID 文件中指定的所有 Edge_ID。 | |
| 镜像图 = 1 | (+e) | 测试镜像(左右或上下)图像(镜像图像失败) 如果输入,并且图表包含中心方块下方的灰度阶梯图,并且主 ini 文件的[sfrplus]部分中的 stepchart = 1。 |
| Bayer_decode = 1 | (+e) | 如果输入了正确的拜耳图案解码(如果不正确则失败) ,并且图表包含中心方块上方的色块,并且主 ini 文件的[sfrplus]部分中的 colorchart = 1,则测试拜耳图案解码是否正确。 |
| Color_expected_detected = 1 | (+e) | 当主 ini 文件中[sfrplus]部分的 colorchart = 1 时,图表中心上方应该出现一个颜色图案。如果颜色图案不存在,则此测试将失败。这可能表明图表位置不正确,或者仅仅是测试图表中不存在该颜色图案。 |
| DeltaE_00_mean_max = 10 | (+e) | ΔE 2000 色彩精度。为获得最佳效果,请使用由多色卡生成的颜色参考文件。 |
| Stepchart_expected_detected = 1 | (+e) | 当主 ini 文件中[sfrplus]部分的 stepchart = 1 时,图表中心下方应显示灰度阶梯图。如果阶梯图不存在,则此测试将失败。这可能表明图表位置不正确,或者仅仅是测试图表中缺少灰度阶梯图(这种情况很少见,因为除了镀铬玻璃图表外,大多数标准图表都包含灰度阶梯图)。 |
| 倒置 = 1 | (+e) | 如果设置,则当检测到图像倒置时,图像处理失败。 |
| passfail_ini_file_date = (手动输入的日期) | 可选的通过/失败日期指示器。输出中还会出现另一个结果:passfail_ini_time_size,其中包含文件的修改时间和大小(以字节为单位)。 | |
| [锐度]适用于 Random 和 Star 模块(固定或 Rescharts) 相关文档:随机/枯叶(散落的硬币) |星图 | ||
| MTF50_min = .25 | ||
| 过度锐化百分比限制 -20 25 | ||
| 二级读出_1分钟 | ||
| 二级读出 2 分钟 | ||
| Secondary_readout_1_limits | ||
| Secondary_readout_2_limits | ||
| 过度锐化百分比最大值 = 25 | 最大过锐化(支持的模块未定义过冲。) | |
| 最小锐度 = 80 | CPIQ 最低准确度 | |
[平场] 用于分析均匀光场 | ||
| Dead_pixels_max = 10 | 允许的最大死像素数。死像素检测阈值(百分比或绝对值)在ini文件的[flatfield]部分中设置。 | |
| Dead_pixel_clusters_max = 0 | 允许的最大死像素簇数量,其中簇定义为两个或多个相邻的死像素。此设置会覆盖标准 ini 文件中的 calcluster 设置:如果输入此值,则 calcluster(2) 的值将设置为 1。 | |
| 缺陷像素最大计数 = 10 | 热像素和死像素之和的最大值 | |
| Hot_pixels_max = 10 | 允许的最大热像素数。热像素检测阈值(百分比或绝对值)在 ini 文件的[flatfield]部分中设置。 | |
| Hot_pixel_clusters_max = 0 | 允许的最大热像素簇数量,其中簇定义为两个或多个相邻的热像素。此设置会覆盖标准 ini 文件中的 calcluster 设置:如果输入此值,则 calcluster(1) 的值将设置为 1。 | |
| Optical_center_offset_max = 50 Optical_center_offset_X_max = 50 Optical_center_offset_Y_max = 50 | 图像中心(亮度最高点)到光中心的最大像素偏移量。为了最大限度地减少噪声的影响,X 和 Y 方向的光中心是通过平滑值低于最大值 95% 的两点之间曲线的质心来定义的。(由于实际最大值范围很广,因此极易受到噪声的影响。) | |
| 相对照明最差角百分比最小值 = 40 | 最小角区亮度除以平滑图像的最大亮度。 | |
| Uniformity_RoverG_corners_pct_max = 10 | 最大 R/G 角不均匀性 = 100%( RG max - RG min )/ RG max ,其中RG max = 四个角的最大 R/G 比率; RG min = 四个角的最小 R/G 比率。 | |
| Uniformity_BoverG_corners_pct_max = 10 | 最大 B/G 角不均匀性 = 100%( BG max - BG min )/ BG max ,其中BG max = 四个角的最大 B/G 比率; BG min = 四个角的最小 B/G 比率。 | |
| R_div_G_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW]中心和角落 R/G 最大差异 % = 100%( RG max - RG min )/ RG max ,其中RG max = 中心和角落的最大 R/G 比率; RG min = 中心和角落的最小 R/G 比率。 | |
| R_div_G_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW]中心和角落 R/G 最大差异 % = 100%( RG max - RG mean )/ RG max ,其中RG max = 中心和角落的最大 R/G 比率; RG mean = 角落的平均 R/G 比率。 | |
| B_div_G_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 中心和角落最大 B /G 差异 % = 100%(B G max - B G min )/B RG max ,其中 B G max = 中心和角落的最大 B/G 比率;B G min = 中心和角落的最小 B/G 比率。 | |
| B_div_G_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW]中心和角落 B/G 最大差异 % = 100%(B G max - B G mean )/B G max ,其中 B G max = 中心和角落中的最大 B/G 比率;B G mean = 角落中的平均 B/G 比率。 | |
| R_div_B_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 中心和角落红蓝球最大差异百分比 = 100%( RB max - RB min )/ RB max ,其中RB max = 中心和角落红蓝球最大比率; RB min = 中心和角落红蓝球最小比率。 | |
| R_div_B_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW] 中心和角落红蓝比最大差异 % = 100%( RB max - RB mean )/ RB max ,其中RB max = 中心和角落红蓝比最大; RB mean = 角落红蓝比平均。 | |
| Center_Gb_Gr_variation_pct_max | [v4.3+ Bayer RAW] 最大中心区域 Gb - Gr 差异 % = 100% Abs(Gb平均值- Gr平均值)/Average(Gb平均值, Gr平均值) | |
| Corner_Gb_Gr_variation_pct_max | [v4.3+ Bayer RAW] 最大角块 Gb - Gr 差异 % = 100% Abs(Gb平均值- Gr平均值)/Average(Gb平均值, Gr平均值) | |
| Center_R_div_G_unnorml_limits | 中心红绿比允许值的范围(最小值到最大值)。数值未经归一化处理。 | |
| Center_B_div_G_unnorml_limits | 中心背景/背景比允许值的范围[最小值 最大值]。数值未经归一化处理。 | |
| 中心 R 均值最大值 | [v4.3+ Bayer RAW] 中心区域红色通道平均像素级最大值 | |
| 中心 R 均值最小值 | [v4.3+ Bayer RAW] 中心色块红色通道平均像素级最小值 | |
| 中心 Gb 平均最大值 | [v4.3+ Bayer RAW] 中心区域绿色(蓝色)通道平均像素级最大值 | |
| 中心 Gb 均值最小值 | [v4.3+ Bayer RAW] 中心区域绿色(蓝色)通道平均像素级最小值 | |
| 中心群均值最大值 | [v4.3+ Bayer RAW] 中心区域绿色(红色)通道平均像素级最大值 | |
| 中心群均值最小值 | [v4.3+ Bayer RAW] 中心区域绿色(红色)通道平均像素级最小值 | |
| 中心 B 均值最大值 | [v4.3+ Bayer RAW] 中心区域蓝色通道平均像素级最大值 | |
| 中心 B 均值最小值 | [v4.3+ Bayer RAW] 中心区域蓝色通道平均像素级最大值 | |
| 中心 R 标准最大值 | [v4.3+ Bayer RAW] 中心色块红色通道标准偏差最大值 | |
| 中心Gb_std_max | [v4.3+ Bayer RAW] 中心区域绿色(蓝色)通道标准偏差最大值 | |
| 中心群标准最大值 | [v4.3+ Bayer RAW] 中心区域绿色(红色)通道标准偏差最大值 | |
| Center_B_std_max | [v4.3+ Bayer RAW] 中心色块红色通道标准偏差最大值 | |
| R_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 中心和角落红色差异最大百分比 = 100%( R max - R min )/ R max ,其中R max = 中心红色平均值; R min = 角落红色平均值最低值。 | |
| R_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW] 最大红色中心与平均角点差异百分比 = 100%( R max - R mean )/ R max ,其中R max = 中心平均红色; R mean = 角点平均 R 值。 | |
| Gr_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 中心和角落的最大绿色(红色)差异百分比 = 100%(G r max - Gr min )/ Gr max ,其中Gr max = 中心的平均绿色(红色);Gr min = 角落的最低平均 Gr 值。 | |
| Gr_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW] 最大绿色(红色)中心与平均角差异百分比 = 100%(Gr max - Gr mean )/Gr max ,其中 Gr max = 中心平均绿色(红色);Gr mean = 角的平均 Gr 值。 | |
| Gb_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 最大绿色(蓝色)中心和角落差异百分比 = 100%(G r max - Gb min )/ Gb max ,其中Gb max = 中心平均绿色(蓝色);Gb min = 角落最低平均 Gb 值。 | |
| Gb_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW] 最大绿色(蓝色)中心与平均角差异百分比 = 100%(Gb max - Gb mean )/Gb max ,其中 Gb max = 中心平均绿色(蓝色);Gb mean = 角的平均 Gb 值。 | |
| B_ctr_corner_diff_pct_max | [v4.3+ Bayer RAW] 最大蓝色中心和角落差异百分比 = 100%(B max - B min )/B max ,其中 B max = 中心平均蓝色;B min = 角落最低平均 B 值。 | |
| B_ctr_corner_diff_pct_mean_max | [v4.3+ Bayer RAW] 最大蓝色中心和平均角差异百分比 = 100%(B max - B mean )/ B max ,其中 B max = 中心平均蓝色;B mean = 角的平均平均 B 值。 | |
| 瑕疵大小(像素)= 10 80(仅瑕疵) | 瑕疵大小(以像素为单位),对应瑕疵数量(Blemish_maximum_count),如下所示 | |
| 瑕疵最大计数 = 3 1(仅限瑕疵) | 最大瑕疵数(像素尺寸由 Blemish_size_pixels 指定) | |
| [colorcheck]用于颜色检查。这些条目与 [multi] 相同,用于颜色/色调交互式和颜色/色调自动。 [multi] 的其他条目(不在 [colorcheck] 中)将在可用时添加到下方。 相关文档:使用 Colorcheck | ||
| gamma_limits = .4 .7 | 伽玛值的最小值和最大值。 | |
| exposure_error_f_stop_limits = -1 1 | 曝光误差的限值(以光圈值表示) | |
| Delta_E_2000_mean_max | max(Delta-E 2000 平均值) | |
| Delta-C_2000_mean_max | max(Delta-C 2000 平均值) | |
| Delta-E_2000_max_max | max(Delta-E 2000 max) | |
| Delta-C_2000_max_max | max(Delta-C 2000 max) | |
| Delta-E_mean_max | max(Delta-E mean) | |
| Delta-C_mean_max | max(ΔC均值) | |
| Delta-E_max_max | 最大(ΔE 最大值) | |
| Delta-C_max_max | 最大(ΔC 最大值) | |
| [失真]失真 | ||
| SMIA_TV_Distortion_limits = -2 3 | SMIA 电视失真限制 | |
| [多模式]用于颜色/色调交互式和颜色/色调自动彩色/灰度模块。以上所有颜色检查设置也同样适用。其他设置将在编程时输入到下方。 如果您需要其他 P/F 参数,我们建议您查看 Color/Tone Interactive/Auto 的 JSON 输出,以获取可用变量。 相关文档:使用颜色/色调交互式功能|使用颜色/色调自动功能 | ||
| gamma_limits = .4 .7 | 伽玛值的最小值和最大值。(0.4 和 0.7 适用于彩色空间图像。) | |
| [stepchart]用于 Stepchart。一些条目与 [multi] 类似。 | ||
| gamma_limits = .4 .7 | 伽玛值的最小值和最大值。 | |
在主 ini 文件中引用 pass fail 文件
主 ini 设置文件应包含 [api] 部分,其中包含 Pass/Fail 设置文件的位置。
[api]
nomsg = 1
savedel = 1
sfrrefine = 1
passFail = C:\Imatest\Data\passfailtest_1.txt
将 UUT(被测单元)信息发送给 Imatest IT(可选)
每个测试都可以有一个零件号和序列号(均为字符串),用于识别被测单元 (UUT)。
零件编号和序列号会连同图像文件和定义图像大小的数据一起传递给Imatest IT 。这些数据包含在一个 JSON 对象中,如下一个用Matlab编写的示例所示。Imatest IT版本将提供 C、C++ 等语言的示例。
首先将图像读取为二进制文件。
rdfname = 'C:\Imatest\projects\sfrplus\SFRplus_5.rw3';
inifile = 'C:\Imatest\projects\sfrplus\SFRplus_5_rw3.ini';
endian_str = 'ieee-le';精度 = 'uint16=>uint16';
jstr.width = 1280; jstr.height = 720; jstr.ncolors = 1; % 不用于原始文件。
jstr.extension = 'rw3';
jstr.fileroot = rdfname;
jstr.serial_number = '46-062';
jstr.part_number = 'X-1 火箭飞机';
jsonObj = savejson('',jstr,[]); % 将结构转换为 JSON 对象。
fd = fopen(rdfname, 'r', endian_str) ; % 打开图像文件进行读取。
[ im_orig count ] = fread(fd, inf, precision) ; % inf 允许跳过位。
disp(char({'';'';'直接读取:单张图片'}));
output = sfrplus_shell('', 'C:\Imatest\projects\sfrplus', inputKeys, opMode, ...
'C:\Imatest\projects\sfrplus\SFRplus_5_rw3.ini',im_orig,jsonObj);
% 'C:\Imatest\matlab\trunk\API\it_samples\sfr\sfr_gf1_1file.ini',im_orig,jsonObj);
disp(输出)
注意:jstr.extension = 'rw3' 指的是文件扩展名,其解码参数在通用读取原始设置中设置。
jstr.width = 1280; jstr.height = 720; jstr.ncolors = 1; 这些参数不用于通用读取原始文件(Generalized Read Raw)解码的原始文件。它们用于解码标准格式的已处理图像。
覆盖主 ini 文件中设置的值
有时,我们可能需要在运行时覆盖主 ini 文件(例如上例中的 C:\Imatest\projects\sfrplus\SFRplus_5_rw3.ini)中的设置,例如,当需要按顺序分析多张不同的图像时。这可以通过调用序列中的语句来实现。目前支持以下以酒红色显示的三个变量。(这些字段,例如 crop_borders、lens_to_chart_diatance_cm 等)必须完全按照所示输入(它们已硬编码到程序中)。如有需要,可以添加更多变量。
...
jstr.serial_number = '46-062';
jstr.part_number = 'X-1 火箭飞机';
jstr.crop_borders = [5 5 5 5]; % 裁剪边框 ( [LRTB] )
jstr.lens_to_chart_distance_cm = 33.3;
jstr.chart_height_cm = 39.99;
jsonObj = savejson('',jstr,[]); % 将结构转换为 JSON 对象。
输出
输出格式正在不断扩展,最终将同时包含 JSON 和 XML 对象。
JSON 输出
通过/失败结果会添加到 JSON 对象的末尾。对于瑕疵,
{
"blemishResults": {
"dateRun": "2012年4月10日 17:59:58",
...
"N_blemish_count": [1],
"blemishSizePxls": [1651],
"blemishCenter_X": [781.5],
"blemishCenter_Y": [644.2],
"passfail": {
"started_at": "2012-04-10 17:59:58",
"part_number": "X-1 火箭飞机",
"serial_number": "46-062",
"ended_at": "2012-04-10 18:00:00",
运行时: [1.848969517],
"Dead_pixels_max": [10],
“死像素”:[0],
"Dead_pixels_pf": [1],
"Dead_pixels_status": "已通过",
“Hot_pixels_max”:[10]
“热像素”:[0],
"Hot_pixels_pf": [1],
"Hot_pixels_status": "已通过",
"Optical_center_offset_max": [50],
“Optical_center_offset”:[-30,14],
"Optical_center_offset_pf": [1],
"Optical_center_offset_status": "已通过"
}
}
}
解释:对于死像素,最多允许有 10 个(由 ..._max 指定)。检测到 0 个死像素。“..._pf”: [1] 表示图像符合标准。“..._status”: “Passed” 也表示图像符合标准。这三行数据在通过/失败监视器中会进行解析,以便于阅读,该监视器会首先列出失败的结果。示例:

对于 SFRplus,
{
"sfrplusResults": {
"dateRun": "2012年4月10日 20:22:27",
...
"k1_3rd_order_dist_coeff": [0.0117],
"h1_5th_order_dist_coeff": [-0.036],
"h2_5th_order_dist_coeff": [0.0443],
"passfail": {
"started_at": "2012-04-15 16:05:10",
"part_number": "X-1 火箭飞机",
"serial_number": "46-062",
"ended_at": "2012-04-15 16:05:15",
"runtime": [4.52085684],
"all_tests_passed": [0],
"MTF50P_ratio_min": [0.5],
"MTF50P_ratio": [0.7628270592],
“MTF50P_ratio_passed”:[1],
"MTF50P_CP_weighted_mean_min": [0.13],
"MTF50P_CP_weighted_mean": [0.132948091],
"MTF50P_CP_weighted_mean_passed": [1],
"Rotation_degrees_max": [1],
"Horizontal_bars_OK_min": [1],
"Horizontal_bars_OK": [1],
"Horizontal_bars_OK_passed": [1],
"检测到所有边缘 ID": [1]
"All_Edge_IDs_detected_OK": [1],
"All_Edge_IDs_detected_passed": [1],
"镜像图": [1],
"Mirrored_chart_OK": [1],
"Mirrored_chart_passed": [1],
"Bayer_decode": [1],
"Bayer_decode_OK": [1],
"Bayer_decode_passed": [1],
"检测到预期颜色": [1],
"Color_expected_OK": [0],
"Color_expected_passed": [0],
"Stepchart_expected_detected": [1],
"Stepchart_expected_OK": [1],
"Stepchart_expected_passed": [1],
“旋转角度”:[-0.6021933244],
"旋转度数已通过": [1],
"FOV_degrees_diagonal_min": [62],
"FOV_degrees_diagonal": [103.8954245],
"FOV_passed": [1],
"Convergence_angle_max": [5],
"Convergence_angle_degrees_horz": [-1.816256865],
"Convergence_angle_degrees_vert": [-4.310448164],
"Convergence_angle_passed": [1],
"Secondary_readout_1_center_mean_min": [0.2],
"Secondary_readout_1_center_name": "MTF @ .25 LP/mm",
"Secondary_readout_1_center_mean": [0.1525933797],
"Secondary_readout_1_center_mean_passed": [0],
"Secondary_readout_1_outer_mean_min": [0.2],
"Secondary_readout_1_outer_name": "MTF @ .25 LP/mm",
"Secondary_readout_1_outer_mean": [0.1827151453],
"Secondary_readout_1_outer_mean_passed": [0],
"Secondary_readout_2_center_mean_min": [0.2],
"Secondary_readout_2_center_name": "MTF @ .125 LP/mm",
"Secondary_readout_2_center_mean": [0.5577878056],
"Secondary_readout_2_center_mean_passed": [1],
"Secondary_readout_2_outer_mean_min": [0.2],
"Secondary_readout_2_outer_name": "MTF @ .125 LP/mm",
"Secondary_readout_2_outer_mean": [0.5271610521],
"Secondary_readout_2_outer_mean_passed": [1]
}
}
}