Dla dwóch sygnałów obrazu x i y w lokalnym oknie SSIM łączy trzy porównania: luminancji l(x,y) opartej na średnich μx, μy; kontrastu c(x,y) opartego na odchyleniach standardowych σx, σy; oraz struktury s(x,y) opartej na kowariancji σxy. W formie zwartej: SSIM(x,y) = (2μxμy + C1)(2σxy + C2) / ((μx² + μy² + C1)(σx² + σy² + C2)), gdzie stałe stabilizujące C1 = (K1·L)² oraz C2 = (K2·L)² zależą od zakresu dynamiki L (255 dla obrazu 8-bitowego) i małych stałych K1 = 0,01 oraz K2 = 0,03. Okno przesuwa się po całym obrazie, a końcowy wynik to średnia lokalnych wartości SSIM (MSSIM).
Tradycyjne metryki oparte na błędzie (MSE, PSNR) słabo korelują z postrzeganą przez człowieka jakością obrazu — dwa obrazy o identycznym MSE mogą mieć drastycznie różną jakość wizualną. SSIM rozwiązuje ten problem, mierząc podobieństwo strukturalne zamiast bezwzględnej różnicy intensywności pikseli.
Składowa mierząca zgodność jasności; l(x,y) = (2μxμy + C1) / (μx² + μy² + C1).
Składowa mierząca zgodność kontrastu; c(x,y) = (2σxσy + C2) / (σx² + σy² + C2).
Składowa mierząca korelację strukturalną; s(x,y) = (σxy + C3) / (σxσy + C3), gdzie zwykle C3 = C2/2.
Okno przesuwane piksel po pikselu, w którym liczone są μ, σ i σxy; agregacja lokalnych SSIM daje MSSIM.
Podanie złego L (np. 255 dla danych znormalizowanych do [0,1]) prowadzi do błędnych stałych C1/C2 i niepoprawnych wyników.
Liczenie SSIM globalnie zamiast w przesuwanym oknie zmienia wynik i odbiega od definicji z pracy.
Uśrednianie SSIM po kanałach RGB bez konwersji do luminancji daje wyniki nieporównywalne między implementacjami.
SSIM nie wychwytuje wszystkich typów zniekształceń (np. przesunięć geometrycznych); wysoki wynik nie zawsze oznacza dobrą jakość percepcyjną.
Wang, Simoncelli i Bovik wprowadzają wieloskalową wersję SSIM na konferencji Asilomar.
Publikacja definiująca SSIM w IEEE Transactions on Image Processing.
Wang i Li proponują ważenie SSIM zawartością informacyjną, poprawiając korelację z oceną ludzką.
Zhao i in. pokazują użycie (MS-)SSIM jako funkcji straty w treningu sieci do rekonstrukcji obrazu.
Złożoność czasowa: O(N). Złożoność przestrzenna: O(N).
Zakres wartości pikseli; wpływa na stałe C1, C2. Musi odpowiadać danym (np. 255 dla 8-bit, 1.0 dla znormalizowanych).
Rozmiar lokalnego okna; standardowo 11×11.
Odchylenie standardowe wagi Gaussa okna.
Małe stałe zapobiegające dzieleniu przez zero; C1=(K1·L)², C2=(K2·L)².
Wagi składowych luminancji, kontrastu i struktury; domyślnie α=β=γ=1.
Obliczenia wykonywane gęsto na wszystkich pikselach; brak routingu warunkowego.
Statystyki i wynik SSIM w każdym oknie są niezależne, co pozwala na pełną równoległość (np. na GPU).
Prosta operacja splotowa/statystyczna, wydajna zarówno na CPU, jak i GPU.
Jako różniczkowalna funkcja straty w treningu sieci korzysta z akceleracji GPU.