MCPcopy Create free account
hub / github.com/BinomialLLC/basis_universal / compute_ssim

Function compute_ssim

example_transcoding/utils.cpp:511–556  ·  view source on GitHub ↗

Reference: https://ece.uwaterloo.ca/~z70wang/research/ssim/index.html

Source from the content-addressed store, hash-verified

509
510// Reference: https://ece.uwaterloo.ca/~z70wang/research/ssim/index.html
511vec4F compute_ssim(const imagef& a, const imagef& b)
512{
513 imagef axb, a_sq, b_sq, mu1, mu2, mu1_sq, mu2_sq, mu1_mu2, s1_sq, s2_sq, s12, smap, t1, t2, t3;
514
515 const float C1 = 6.50250f, C2 = 58.52250f;
516
517 pow_image(a, a_sq, vec4F(2));
518 pow_image(b, b_sq, vec4F(2));
519 mul_image(a, b, axb, vec4F(1.0f));
520
521 gaussian_filter(mu1, a, 11, 1.5f * 1.5f);
522 gaussian_filter(mu2, b, 11, 1.5f * 1.5f);
523
524 pow_image(mu1, mu1_sq, vec4F(2));
525 pow_image(mu2, mu2_sq, vec4F(2));
526 mul_image(mu1, mu2, mu1_mu2, vec4F(1.0f));
527
528 gaussian_filter(s1_sq, a_sq, 11, 1.5f * 1.5f);
529 add_weighted_image(s1_sq, vec4F(1), mu1_sq, vec4F(-1), vec4F(0), s1_sq);
530
531 gaussian_filter(s2_sq, b_sq, 11, 1.5f * 1.5f);
532 add_weighted_image(s2_sq, vec4F(1), mu2_sq, vec4F(-1), vec4F(0), s2_sq);
533
534 gaussian_filter(s12, axb, 11, 1.5f * 1.5f);
535 add_weighted_image(s12, vec4F(1), mu1_mu2, vec4F(-1), vec4F(0), s12);
536
537 scale_image(mu1_mu2, t1, vec4F(2), vec4F(0));
538 adds_image(t1, vec4F(C1), t1);
539
540 scale_image(s12, t2, vec4F(2), vec4F(0));
541 adds_image(t2, vec4F(C2), t2);
542
543 mul_image(t1, t2, t3, vec4F(1));
544
545 add_image(mu1_sq, mu2_sq, t1);
546 adds_image(t1, vec4F(C1), t1);
547
548 add_image(s1_sq, s2_sq, t2);
549 adds_image(t2, vec4F(C2), t2);
550
551 mul_image(t1, t2, t1, vec4F(1));
552
553 div_image(t3, t1, smap, vec4F(1));
554
555 return avg_image(smap);
556}
557
558vec4F compute_ssim(const image_u8& a, const image_u8& b, bool luma)
559{

Callers

nothing calls this directly

Calls 15

taFunction · 0.85
widthMethod · 0.80
heightMethod · 0.80
pow_imageFunction · 0.70
mul_imageFunction · 0.70
gaussian_filterFunction · 0.70
add_weighted_imageFunction · 0.70
scale_imageFunction · 0.70
adds_imageFunction · 0.70
add_imageFunction · 0.70
div_imageFunction · 0.70
avg_imageFunction · 0.70

Tested by

no test coverage detected