butteraugli 图片清晰度衡量工具
Butteraugli的架构先明确以下命名约定:
Opsin - 视网膜感光化学物质的动力学及其即时电处理。
Xyb - 混合了 反/三色的色彩空间,X大致是红色减去绿色。Y是黄色的。B是蓝色的。xyb值是根据opsin混合计算的,而不是直接从rgb计算的。
Mask - 用于视觉的掩码(或者翻译成遮罩?)
Hf - 根据空间高频特征做的色彩建模
Lf - 根据空间低频特征做的色彩建模
Diffmap - 到集群并在图像之间构建错误图像
Blur - 平滑代码
graph LR
A[main]
B[ButteraugliDiffmap]
C[ButteraugliComparator]
D[OpsinDynamicsImage]
E[SeparateFrequencies]
F[Diffmap]
G[SeparateFrequencies]
H[DiffmapPsychoImage]
I[OpsinDynamicsImage]
A–>B
B –> C
C –> D
D –> E
B –> F
F –> I
F –> H
I –> G

其中ButteraugliComparator耗时占比32.2%,主要工作是将第0张图像进行了处理,即opsin处理和separateFrequencies变换。
其中Diffmap耗时66.9%,主要工作是将第1张图像进行了处理,处理方式跟第0张相同,然后还把这两张进行了diff运算,即OpsinDynamicsImage函数,该函数耗时占比33.3%。
关键函数分析
1 |
|
1 | ButteraugliComparator butteraugli(rgb0_image, hf_asymmetry); |
1 | std::vector<ImageF> xyb0 = OpsinDynamicsImage(rgb0); |
1 | SeparateFrequencies(xsize_, ysize_, xyb0, pi0_) |
1 | butteraugli.Diffmap(rgb1_image, result_image) |
1 | DiffmapPsychoImage(pi1, result); |