Advertisement
Georgiy031

Untitled

May 2nd, 2021
765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. Scalar getMSSIM(const Mat& i1, const Mat& i2)
  2. {
  3.     const double C1 = 6.5025, C2 = 58.5225;
  4.     int d = CV_32F;
  5.  
  6.     Mat I1, I2;
  7.     i1.convertTo(I1, d);
  8.     i2.convertTo(I2, d);
  9.  
  10.     Mat I2_2 = I2.mul(I2);
  11.     Mat I1_2 = I1.mul(I1);
  12.     Mat I1_I2 = I1.mul(I2);
  13.  
  14.  
  15.     Mat mu1, mu2;
  16.     GaussianBlur(I1, mu1, Size(11, 11), 1.5);
  17.     GaussianBlur(I2, mu2, Size(11, 11), 1.5);
  18.  
  19.     Mat mu1_2 = mu1.mul(mu1);
  20.     Mat mu2_2 = mu2.mul(mu2);
  21.     Mat mu1_mu2 = mu1.mul(mu2);
  22.  
  23.     Mat sigma1_2, sigma2_2, sigma12;
  24.  
  25.     GaussianBlur(I1_2, sigma1_2, Size(11, 11), 1.5);
  26.     sigma1_2 -= mu1_2;
  27.  
  28.     GaussianBlur(I2_2, sigma2_2, Size(11, 11), 1.5);
  29.     sigma2_2 -= mu2_2;
  30.  
  31.     GaussianBlur(I1_I2, sigma12, Size(11, 11), 1.5);
  32.     sigma12 -= mu1_mu2;
  33.  
  34.     Mat t1, t2, t3;
  35.  
  36.     t1 = 2 * mu1_mu2 + C1;
  37.     t2 = 2 * sigma12 + C2;
  38.     t3 = t1.mul(t2);
  39.  
  40.     t1 = mu1_2 + mu2_2 + C1;
  41.     t2 = sigma1_2 + sigma2_2 + C2;
  42.     t1 = t1.mul(t2);
  43.  
  44.     Mat ssim_map;
  45.     divide(t3, t1, ssim_map);
  46.  
  47.     Scalar mssim = mean(ssim_map);
  48.     return mssim;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement