All about Structural Similarity Index (SSIM): Theory + Code in PyTorch

SSIM werd voor het eerst geïntroduceerd in het IEEE paper uit 2004, Image Quality Assessment: From Error Visibility to Structural Similarity. Het abstract geeft een goede intuïtie in het idee achter het voorgestelde systeem,

objectieve methoden voor het beoordelen van de perceptuele beeldkwaliteit probeerden traditioneel de zichtbaarheid van fouten (verschillen) tussen een vervormd beeld en een referentiebeeld te kwantificeren met behulp van een verscheidenheid aan bekende eigenschappen van het menselijke visuele systeem. In de veronderstelling dat de menselijke visuele waarneming in hoge mate is aangepast voor het extraheren van structurele informatie uit een scène, introduceren we een alternatief complementair kader voor kwaliteitsbeoordeling op basis van de degradatie van structurele informatie.

samenvatting: de auteurs maken twee essentiële punten,

  • de meeste beeldkwaliteitsbeoordelingstechnieken zijn gebaseerd op het kwantificeren van fouten tussen een referentie en een monsterbeeld. Een gemeenschappelijke metriek is om het verschil in de waarden van elk van de overeenkomstige pixels tussen de steekproef en de referentiebeelden te kwantificeren (door, bijvoorbeeld, gemiddelde Kwadraatfout te gebruiken).
  • het systeem voor visuele waarneming bij de mens is in hoge mate in staat om structurele informatie van een scène te identificeren en zo de verschillen tussen de informatie uit een referentie-en een steekproefscène te identificeren. Daarom zal een metriek die dit gedrag repliceert beter presteren op taken waarbij onderscheid wordt gemaakt tussen een monster en een referentieafbeelding.

de Structural Similarity Index (SSIM) metrische extracten 3 belangrijkste kenmerken uit een afbeelding:

  • Luminantie
  • Contrast
  • structuur

de vergelijking tussen de twee beelden wordt uitgevoerd op basis van deze 3 kenmerken.

in Figuur 1 worden de opstelling en de stroom van het systeem voor de meting van de structurele gelijkenis weergegeven. Signaal X en signaal Y verwijzen naar de referentie-en Voorbeeldbeelden.

figuur 1: Het Systeem Voor Het Meten Van De Structurele Gelijkenis. Bron: https://www.cns.nyu.edu/pub/eero/wang03-reprint.pdf

maar wat berekent deze metriek?

dit systeem berekent de structurele Gelijkheidsindex tussen 2 gegeven beelden die een waarde tussen -1 en +1 is. Een waarde van +1 geeft aan dat de 2 gegeven afbeeldingen zeer vergelijkbaar of hetzelfde zijn, terwijl een waarde van -1 aangeeft dat de 2 gegeven afbeeldingen zeer verschillend zijn. Vaak worden deze waarden aangepast om in het bereik te zijn , waar de uitersten dezelfde betekenis hebben.

laten we nu kort onderzoeken hoe deze functies wiskundig worden weergegeven en hoe ze bijdragen aan de uiteindelijke SSIM-score.

  • Luminantie: Luminantie wordt gemeten door middel van een gemiddelde over alle pixelwaarden. Het wordt aangeduid met μ (Mu) en de formule wordt hieronder gegeven,

waarbij xi de IDE pixelwaarde is van de afbeelding x. N is het totale aantal pixelwaarden. Bron: https://www.cns.nyu.edu/pub/eero/wang03-reprint.pdf
  • Contrast: Het wordt gemeten door de standaarddeviatie (vierkantswortel van variantie) van alle pixelwaarden te nemen. Het wordt aangeduid door σ (sigma) en weergegeven door de onderstaande formule,

waarbij x en y de twee afbeeldingen zijn en mu het gemiddelde is van de pixelwaarden van de afbeelding. Bron: https://www.cns.nyu.edu/pub/eero/wang03-reprint.pdf
  • Structuur: De structurele vergelijking wordt gedaan met behulp van een geconsolideerde formule (daarover later meer), maar in wezen delen we het ingangssignaal met de standaardafwijking zodat het resultaat standaarddeviatie per eenheid heeft die een robuustere vergelijking mogelijk maakt.

waar x de Invoerafbeelding

is, hebben we nu de wiskundige intuïtie achter de drie parameters vastgesteld. Maar hou vol! We zijn nog niet klaar met rekenen, een beetje meer. Wat we nu missen, zijn vergelijkingsfuncties die de twee gegeven beelden op deze parameters kunnen vergelijken, en tot slot, een combinatiefunctie die ze allemaal combineert. Hier definiëren we de vergelijkingsfuncties en tenslotte de combinatiefunctie die de similarity index waarde

  • luminantievergelijkingsfunctie oplevert: deze wordt gedefinieerd door een functie, l(x, y) die hieronder wordt getoond. μ (mu) vertegenwoordigt het gemiddelde van een gegeven beeld. x en y zijn de twee beelden die worden vergeleken.

waarbij C1 een constante is om stabiliteit te garanderen wanneer de noemer 0 wordt. C1 wordt gegeven door,

Update: in het hele artikel hadden we niet onderzocht wat de K-en L-constanten in deze vergelijking zijn. Gelukkig wees een lezer erop dat in de commentaren, en dus in het belang van het maken van dit artikel een beetje meer behulpzaam, Ik zal ze hier gewoon definiëren.

L is het dynamische bereik voor pixelwaarden (we stellen het in als 255 omdat we te maken hebben met standaard 8-bit afbeeldingen). U kunt hier meer lezen over wat de verschillende beeldtypen zijn en wat ze betekenen.

K1, K2 zijn gewoon normale constanten, niet veel!

  • Contrastvergelijkingsfunctie: deze wordt gedefinieerd door een functie c(x, y) die hieronder wordt weergegeven. σ staat voor de standaardafwijking van een gegeven beeld. x en y zijn de twee beelden die worden vergeleken.

waarbij C2 wordt gegeven door,

  • Structuurvergelijkingsfunctie: het wordt gedefinieerd door de functie s (x, y) die hieronder wordt getoond. σ staat voor de standaardafwijking van een gegeven beeld. x en y zijn de twee beelden die worden vergeleken.

waar σ(xy) is gedefinieerd als,

En tot slot, de SSIM score wordt gegeven door,

waar α > 0, β > 0, γ > 0 geven het relatieve belang van elk van de statistieken. Om de uitdrukking te vereenvoudigen, als we aannemen, α = β = γ = 1 en C3 = C2 / 2, kunnen we krijgen,

maar er is een plotwending!

hoewel u SSIM zou kunnen implementeren met behulp van de bovenstaande formules, is de kans groot dat het niet zo goed zal zijn als de beschikbare gebruiksklare implementaties, zoals de auteurs uitleggen dat,

voor de beoordeling van de beeldkwaliteit is het nuttig om de SSIM-index lokaal toe te passen in plaats van globaal. Ten eerste zijn statistische kenmerken van afbeeldingen meestal zeer ruimtelijk niet-stationaire kenmerken. Ten tweede kunnen beeldvervormingen, die al dan niet afhankelijk zijn van de lokale beeldstatistieken, ook ruimtevariant zijn. Ten derde, op typische kijkafstanden, kan alleen een lokaal gebied in het beeld worden waargenomen met een hoge resolutie door de menselijke waarnemer op een bepaald moment (vanwege de foveation kenmerk van de HVS,). En tot slot, gelokaliseerde kwaliteitsmeting kan een ruimtelijk variërende kwaliteit kaart van het beeld, die meer informatie over de kwaliteit degradatie van het beeld levert en kan nuttig zijn in sommige toepassingen.

samenvatting: In plaats van de bovenstaande statistieken globaal toe te passen (dat wil zeggen over het hele beeld in een keer) is het beter om de statistieken regionaal toe te passen (dat wil zeggen in kleine delen van het beeld en het nemen van de gemiddelde totale).

deze methode wordt vaak de gemiddelde structurele gelijkenis-Index genoemd.

vanwege deze verandering in aanpak verdienen onze formules ook aanpassingen om hetzelfde weer te geven (opgemerkt moet worden dat deze aanpak vaker voorkomt en zal worden gebruikt om de code te verklaren).

(opmerking: als de inhoud hieronder een beetje overweldigend lijkt, geen zorgen! Als je de kern ervan krijgt, dan zal het doorlopen van de code je een veel duidelijker idee geven.)

de auteurs gebruiken een 11×11 cirkelsymmetrische Gaussiaanse weegfunctie (in principe een 11×11 matrix waarvan de waarden zijn afgeleid van een Gaussiaanse verdeling) die pixel voor pixel over het hele beeld beweegt. Bij elke stap worden de lokale statistieken en SSIM-index berekend in het lokale venster. Aangezien we nu de metrics lokaal berekenen, worden onze formules herzien als,

waarbij wi de Gaussiaanse wegingsfunctie is.

als u dit een beetje onbewust vond, geen zorgen! Het volstaat om wi voor te stellen als een multiplicand die wordt gebruikt om de vereiste waarden te berekenen met behulp van een aantal wiskundige trucs.

zodra berekeningen over de hele afbeelding worden uitgevoerd, nemen we gewoon het gemiddelde van alle lokale SSIM-waarden en komen we bij de Globale SSIM-waarde.

eindelijk klaar met de theorie! Nu op de code!

You might also like

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.