mindspore.nn.PSNR

class mindspore.nn.PSNR(max_val=1.0)[源代码]

在批处理中计算两个图像的峰值信噪比(PSNR)。

它为批处理中的每个图像生成PSNR值。假设输入为 \(I\)\(K\) ,且shape都为 \(h*w\)\(MAX\) 表示像素值的动态范围。

\[\begin{split}MSE&=\frac{1}{hw}\sum\limits_{i=0}^{h-1}\sum\limits_{j=0}^{w-1}[I(i,j)-K(i,j)]^2\\ PSNR&=10*log_{10}(\frac{MAX^2}{MSE})\end{split}\]
参数:
  • max_val (Union[int, float]) - 像素的动态范围(8位灰度图像为255)。该值必须大于0。默认值:1.0。

输入:
  • img1 (Tensor) - 格式为’NCHW’的输入图像。shape和数据类型必须与 img2 相同。

  • img2 (Tensor) - 格式为’NCHW’的输入图像。shape和数据类型必须与 img1 相同。

输出:

Tensor,使用数据类型mindspore.float32。shape为N的一维Tensor,其中N是 img1 的batch size。

异常:
  • TypeError - max_val 既不是int也不是float。

  • ValueError - max_val 小于或等于0。

  • ValueError - img1img2 的shape长度不等于4。

支持平台:

Ascend GPU CPU

样例:

>>> net = nn.PSNR()
>>> img1 = Tensor([[[[1, 2, 3, 4], [1, 2, 3, 4]]]])
>>> img2 = Tensor([[[[3, 4, 5, 6], [3, 4, 5, 6]]]])
>>> output = net(img1, img2)
>>> print(output)
[-6.0206]