#B4480. [语言月赛 202601] 峰值信噪比 / PSNR

    ID: 16979 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>模拟Special Judge2026循环结构语言月赛

[语言月赛 202601] 峰值信噪比 / PSNR

题目描述

千秋正在进行新视角合成与实时渲染方面的科研工作。现在,他得到了一张渲染出的图像 II,与真实图像 KK

图像是由高为 hh,宽为 ww 的像素组成的,每个像素又需要 r,g,br,g,b 三个颜色值,分别表示 RGB 三通道颜色。

因此,一张图像可以被简单理解为 h×w×3h\times w\times 3 个数的集合。w,hw, h 分别表示图像像素的宽度和高度,33 表示 RGB 三颜色通道。我们分别用 I(i,j,k)I(i,j,k)K(i,j,k)K(i,j,k) 表示第 ii 行第 jj 列,颜色通道 k(k{R,G,B})k(k\in \{\texttt{R},\texttt{G},\texttt{B}\}) 的像素值,值的范围为 02550\sim 255

峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)是衡量两张图像相似程度的重要指标,其计算公式如下:

$$M=\dfrac{1}{3wh}\sum\limits_{k\in \{\texttt{R},\texttt{G},\texttt{B}\}}\sum\limits_{i=1}^{h}{\sum\limits_{j=1}^{w}{(I(i,j,k)-K(i,j,k))^2}}$$$$\operatorname{PSNR}=20\cdot \log_{10} (\dfrac{255}{\sqrt{M}})$$

渲染的图像与真实图像必然有细微的区别,因此可以保证 M>0M>0

千秋想要展示他高质量的渲染细节。千秋可以选择任意宽度不小于 w2\dfrac{w}{2},且高度不小于 h2\dfrac{h}{2} 的子图像。请问,千秋选择的子图像,其最大 PSNR 值为多少。

子图像是指,图像中任意连续的矩形形状的像素的集合。

输入格式

第一行为两个整数 h,wh,w,分别表示图像的高度与宽度。

接下来 hh 行,每行 ww 个非负整数,表示图像 II 颜色通道 R 的像素值 I(i,j,R)I(i,j,\texttt{R})

接下来 hh 行,每行 ww 个非负整数,表示图像 II 颜色通道 G 的像素值 I(i,j,G)I(i,j,\texttt{G})

接下来 hh 行,每行 ww 个非负整数,表示图像 II 颜色通道 B 的像素值 I(i,j,B)I(i,j,\texttt{B})

接下来 hh 行,每行 ww 个非负整数,表示图像 KK 颜色通道 R 的像素值 K(i,j,R)K(i,j,\texttt{R})

接下来 hh 行,每行 ww 个非负整数,表示图像 KK 颜色通道 G 的像素值 K(i,j,G)K(i,j,\texttt{G})

接下来 hh 行,每行 ww 个非负整数,表示图像 KK 颜色通道 B 的像素值 K(i,j,B)K(i,j,\texttt{B})

输出格式

输出一行一个浮点数,表示子图像可以取得的最高 PSNR 值。

假设你输出的值为 oo,标准答案为 aa,当 oamax(1,a)<102\dfrac{|o-a|}{\max(1, |a|)}<10^{-2} 时,你的答案被认为正确。

3 3
178 239 196
169 175 32
248 205 45
76 89 228
217 65 83
222 108 153
242 17 68
183 141 49
5 54 90
130 194 229
82 23 243
16 87 23
154 185 192
181 228 2
215 194 29
84 176 6
83 210 28
106 169 63

7.67666099

提示

【数据规模与约定】

对于 100%100\% 的测试数据,1w,h641 \le w, h \le 641I(i,j,k),K(i,j,k)2551 \le I(i,j,k), K(i,j,k) \le 255

【提示】

  1. \sum 符号表示求和。例如,inai=a1+a2++an\sum\limits_{i}^n{a_i}=a_1+a_2+\cdots+a_n
  2. log10(x)\log_{10}(x) 表示对 xx 进行以 1010 为底数的对数运算。对于 C/C++ 语言,可以直接使用 cmath 头文件中的 log10 函数计算结果。
  3. 将输出保留两位小数以上,可以保证不会由于精度误差导致的答案错误。