WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Signal-Rausch-Verhältnis bestimmen

 

creme
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 31.10.2020, 16:53     Titel: Signal-Rausch-Verhältnis bestimmen
  Antworten mit Zitat      
Hallo,

ich würde bei einem Bild ('cameraman.tif') gerne das Signal-Rauschverhältnis mit einer bestimmten Formel berechnen.

Die Formel ist im Anhang zu sehen. Sarea ist das Signal, Narea das Rauschen und sigma die Standardabweichung des Rauschen.

Das "croppen" des Bildes funktioniert soweit.

Beim Berechnen vom SNR stimmen die Dimensionen von Sarea und Narea nicht mehr überein, sodass ich diese nicht voneinander abziehen kann wie in der Formel.

Code:
Diff= mean2(S_area - N_area);
sigma=std(N_area);
snr=20*log10(abs(Diff)./sigma)

Wie kann ich die Dimensionen automatisch anpassen, da diese variieren können je nach dem wie man schneidet.


Hat jemand eine Idee was ich hier tun kann?

Unbenannt.JPG
 Beschreibung:

Download
 Dateiname:  Unbenannt.JPG
 Dateigröße:  17.57 KB
 Heruntergeladen:  129 mal
formel.JPG
 Beschreibung:

Download
 Dateiname:  formel.JPG
 Dateigröße:  16.28 KB
 Heruntergeladen:  142 mal
dimension.JPG
 Beschreibung:

Download
 Dateiname:  dimension.JPG
 Dateigröße:  21.74 KB
 Heruntergeladen:  133 mal
Private Nachricht senden Benutzer-Profile anzeigen


creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 02.11.2020, 13:58     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das ganze mal an einem Bsp versucht mit 'peppers.png'

Für mein SNR bekomme ich aber nur als Ergebnis "inf" heraus. kann mir jemand weiterhelfen?

Für die Berechnung des SNR verwende ich folgenden code. Das ausschneiden meiner 2 Bilder geht mit imcrop()
Code:
Ms =(max(S_area(:)));
Mn =(max(N_area(:)));
Diff= abs(mean2(Ms)- mean2(Mn));
val1=std2(Mn);
snr=20*log10(Diff./val1)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2020, 16:52     Titel:
  Antworten mit Zitat      
Hallo,

wie kommst du denn von 'peppers.png' auf S_area und N_area?
Wenn als Ergebnis inf herauskommt, dann kann ich nur raten, das Stück für Stück zurückzuverfolgen um zu sehen, wo diese inf das erste Mal hineingekommen sind. Das kann beispielsweise passieren, wenn durch 0 geteilt wurde.
Mir scheint beispielsweise, dass du mit val1 die Standardabweichung von einem einzigen Wert berechnest, und die wäre 0. Das ist sicher nicht deine Absicht? Was du aber stattdessen machen möchtest, ist mir nicht klar.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 02.11.2020, 17:28     Titel:
  Antworten mit Zitat      
Hallo,

danke für den Hinweis. Ja, da hat sich ein mieser Fehler eingeschlichen.
Zitat:
wie kommst du denn von 'peppers.png' auf S_area und N_area?


Aus dem Bild welches ich später bearbeite schneide ich mit Hilfe von imcrop() den Bereich aus, für den ich das SNR bestimmen möchte.

Ich würde gern wie oben beschrieben das signal-rausch-verhältnis bestimmen, mit eben dieser Formel. Hierfür habe ich mir erstmal irgendein Bild genommen. Das peppers.png ist nur ein Beispiel. Das lässt sich ja recht einfach mit rgb2gray bearbeiten.

Man könnte auch das cameraman.tif nehmen. Zu beginn wollte ich es einfach nur testen.

In der Formel taucht aber die Standardabweichung für das Rauschen auf, durch welche ich dividiere.
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 02.11.2020, 17:42     Titel:
  Antworten mit Zitat      
Hallo Harald,

bei val1 habe ich nun statt
Code:
val1=std2(Mn)

Mn durch N_area ersetzt. Mein Ergebnis ist dann aber Negativ?!

Macht das Sinn? Kann das sein?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2020, 18:08     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aus dem Bild welches ich später bearbeite schneide ich mit Hilfe von imcrop() den Bereich aus, für den ich das SNR bestimmen möchte.

Ich würde gern wie oben beschrieben das signal-rausch-verhältnis bestimmen, mit eben dieser Formel. Hierfür habe ich mir erstmal irgendein Bild genommen. Das peppers.png ist nur ein Beispiel. Das lässt sich ja recht einfach mit rgb2gray bearbeiten.


Jetzt weiß ich aber ehrlich gesagt immer noch nicht, was S_area und N_area sind. Wenn du die beiden anhängst, wäre das sehr hilfreich.

Zitat:
Mein Ergebnis ist dann aber Negativ?!
Macht das Sinn? Kann das sein?

Das bedeutet mathematisch, dass der Logarithmus negativ ist, was wiederum bedeutet, dass das Argument (der Quotient) < 1 ist.
Ich kenne mich mit Signalverarbeitung nicht gut aus, aber Google sagt:
Zitat:
SNR can be either positive and negative value if you represent it in dB scale. Negative SNR means that Signal power is lower than the noise power.

(https://www.sharetechnote.com/html/.....an%20the%20noise%20power.)

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 02.11.2020, 18:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

Zitat:
Jetzt weiß ich aber ehrlich gesagt immer noch nicht, was S_area und N_area sind. Wenn du die beiden anhängst, wäre das sehr hilfreich.


schau mal im Anhang. N_area ist das Rauschen, der erste Ausschnitt aus meinem Originalbild und S_area ist das Signal, der zweite Ausschnitt, aus N_area folglich..

snr.JPG
 Beschreibung:

Download
 Dateiname:  snr.JPG
 Dateigröße:  14.88 KB
 Heruntergeladen:  129 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2020, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

ich meinte eine .mat-Datei mit den MATLAB-Variablen.

Die andere Frage ist aber, ob deine Frage (negatives SNR) nicht schon ausreichend beantwortet ist? Ich bräuchte die Daten ja nur, um mir das genauer anzusehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.