1 PSNR(Peak Signal-to-Noise Ratio)——峰值信噪比
PSNR 是信号的最大功率和信号噪声功率之比,来测量已经被压缩的重构图像的质量,通常以分贝(dB)来表示。PSNR 指标越高,说明图像质量越好。
P S N R = 10 ⋅ log 10 ( M A X I 2 M S E ) = 20 ⋅ log 10 ( M A X I M S E ) PSNR=10\cdot{\log_{10}{(\frac{MAX_I^2}{MSE})}}=20\cdot{\log_{10}{(\frac{MAX_I}{\sqrt{MSE}})}} PSNR=10⋅log10(MSEMAXI2)=20⋅log10(MSEMAXI)
其中, M A X I MAX_I MAXI 表示的是图像中像素值中的最大值, M S E MSE MSE 表示的两个图像之间对应像素之间差值的平方的均值,单通道图像的 M S E MSE MSE 可以表示为如下公式:
M S E = 1 M ⋅ N ∑ i = 1 N ∑ j = 1 M ( f i j − f i j ′ ) 2 MSE=\frac{1}{M\cdot{N}}\sum^N_{i=1}\sum^M_{j=1}(f_{ij}-{f}'_{ij})^2 MSE=M⋅N1i=1∑Nj=1∑M(fij−fij′)2
多通道(C通道)图像的 M S E MSE MSE 可以表示为如下公式:
M S E = 1 C ⋅ M ⋅ N ∑ k = 1 C ∑ i = 1 N ∑ j = 1 M ( f i j k − f i j k ′ ) 2 MSE=\frac{1}{C\cdot M\cdot N}\sum^C_{k=1}\sum^N_{i=1}\sum^M_{j=1}(f_{ijk}-{f}'_{ijk})^2 MSE=C⋅M⋅N1k=1∑Ci=1∑Nj=1∑M(fijk−fijk′)2
2 SSIM(Structural Similarity Index)——结构相似性评价
SSIM分别从亮度、对比度、结构三方面度量图像相似性。
l ( X , Y ) = 2 μ X μ Y + C 1 μ X 2 + μ Y 2 + C 1 l(X,Y)=\frac{2\mu_X\mu_Y+C_1}{\mu_X^2+\mu_Y^2+C_1} l(X,Y)=μX2+μY2+C12μXμY+C1
c ( X , Y ) = 2 σ X σ Y + C 2 σ X 2 + σ Y 2 + C 2 c(X,Y)=\frac{2\sigma_X\sigma_Y+C_2}{\sigma_X^2+\sigma_Y^2+C_2}\\ c(X,Y)=σX2+σY2+C22σXσY+C2
s ( X , Y ) = σ X Y + C 3 σ X σ Y + C 3 s(X,Y)=\frac{\sigma_{XY}+C_3}{\sigma_X\sigma_Y+C_3} s(X,Y)=σXσY+C3σXY+C3
其中, μ X \mu_X μX、 μ Y \mu_Y μY 表示图像 X 和图像 Y 的均值, σ X \sigma_X σX、 σ Y \sigma_Y σY 表示图像 X 和图像 Y 的方差, σ X Y \sigma_{XY} σXY表示图像 X 和 Y 的协方差。
C 1 C_1 C1、 C 2 C_2 C2、 C 3 C_3 C3为常数,为了避免分母为 0 的情况,通常取: C 1 = ( K 1 ⋅ L ) 2 , C 2 = ( K 2 ⋅ L ) 2 , C 3 = C 2 2 C_1=(K_1\cdot{L})^2,C_2=(K_2\cdot{L})^2,C_3=\frac{C_2}{2} C1=(K1⋅L)2,C2=(K2⋅L)2,C3=2C2
一般地, K 1 = 0.01 , K 2 = 0.03 , L = 255 K_1=0.01, K_2=0.03, L=255 K1=0.01,K2=0.03,L=255
则
S S I M ( X , Y ) = l ( X , Y ) ⋅ c ( X , Y ) ⋅ s ( X , Y ) SSIM(X,Y)=l(X,Y)\cdot c(X,Y)\cdot s(X,Y) SSIM(X,Y)=l(X,Y)⋅c(X,Y)⋅s(X,Y)
S S I M ( X , Y ) = ( 2 μ X μ Y + C 1 ) ( 2 σ X Y + C 2 ) ( μ X 2 + μ Y 2 + C 1 ) ( σ X 2 + σ Y 2 + C 2 ) SSIM(X,Y)=\frac{(2\mu_X\mu_Y+C_1)(2\sigma_{XY}+C_2)}{(\mu_X^2+\mu_Y^2+C_1)(\sigma_X^2+\sigma_Y^2+C_2)} SSIM(X,Y)=(μX2+μY2+C1)(σX2+σY2+C2)(2μXμY+C1)(2σXY+C2)
3 MSSIM(Mean Structural Similarity)——平均结构相似性
在实际应用中,可以利用滑动窗将图像分块,令分块总数为 N,考虑到窗口形状对分块的影响,采用加权计算每一窗口的均值、方差以及协方差,权值 w i j w_{ij} wij 满足 ∑ i ∑ j w i j = 1 \sum_i\sum_jw_{ij}=1 ∑i∑jwij=1,通常采用高斯核,然后计算对应块的结构相似度 SSIM,最后将平均值作为两图像的结构相似性度量,即平均结构相似性 MSSIM:
M S S I M = 1 N ∑ k = 1 N S S I M ( x k , y k ) MSSIM=\frac{1}{N}\sum_{k=1}^NSSIM(x_k,y_k) MSSIM=N1k=1∑NSSIM(xk,yk)
4 Success Ratio——成功率
统一使用 OpenCV 来识别超分得到的二维码
S u c c e s s R a t i o = S u c c e s s T o t a l Success Ratio=\frac{Success}{Total} SuccessRatio=TotalSuccess
def qr_code_recognition(img_path):
"""二维码识别"""
img = cv2.imread(img_path)
result = np.copy(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
qr_code_detector = cv2.QRCodeDetector()
info, points, _ = qr_code_detector.detectAndDecode(img)
cv2.drawContours(result, [np.int32(points)], 0, (0, 0, 255), 2)
if info == '':
print(f'Recognition Failed')
else:
print(f'QR Code information is: {
info}')
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
OpenCV识别二维码参考这篇文章