Beginnen wir damit, zu sehen, wie sich das SNR auf das Rauschen bezieht. Ihr Fehlerbild ist der Unterschied zwischen dem Originalbild und dem Bild mit Rauschen, was bedeutet, dass das Fehlerbild das Rauschen selbst ist. Daher ist das SNR tatsächlich:
SNR = 10log10[var(image)/var(noise)]
Für ein gegebenes Bild und SNR = 5db wäre die Varianz des Rauschens:
var(noise) = var(image)/10SNR/10 = var(image)/sqrt(10)
Lassen Sie uns dies nun in MATLAB-Code übersetzen. Um einem Bild weißes Gaußsches Rauschen hinzuzufügen (bezeichne es I
), indem du den Befehl imnoise
verwendest, lautet die Syntax:
Dabei ist m
das mittlere Rauschen und v
ist seine Varianz. Es ist auch wichtig zu beachten, dass imnoise
davon ausgeht, dass die Intensitäten in Bild I
von 0 bis 1 reichen.
In unserem Fall addieren wir ein Rauschen mit mittlerem Mittelwert und seine Varianz ist v = var(I(:))/sqrt(10)
. Der vollständige Code ist:
Klarstellung: Wir verwenden var(I(:))
, um die Varianz aller Stichproben in image I
zu berechnen (anstelle von var(I)
, was die Varianz entlang der Spalten berechnet).
Hoffe, das hilft!
Hier ist das Ergebnis: