|
Polis Tyrol |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 08.01.2010, 10:35
Titel: Bilder normalisieren
|
|
|
|
|
Ich habe folgendes Problem zu lösen:
Ich habe fünf gleich fotographierte Bilder einer Oberfläche.
Diese fünf Bilder sollten untereinander theoretisch kaum Unterschiede
zeigen, da es fünf mal die gleiche Oberfläche ist, und sie unter den gleichen
Bedingungen aufgenommen wurden. Tatsächlich ist aber ein relativ großer
Helligkeitsunterschied zwischen ihnen. Ich möchte diese Bilder nun
rechnerisch so aneinander angleichen, dass sie einander möglichst ähnlich
sind, ohne die Informationen über die Oberfläche zu verlieren.
Bisher habe ich versucht, von jedem dieser Bilder seinen eigenen mean
abzuziehen; das hilft zwar ein wenig, da nun der durchschnittliche
Helligkeitswert bei allen fünf gleich ist. Dennoch gibt es nach wie vor große
Unterschiede in der Verteilung der Helligkeitswerte.
Ich habe zwei dieser Bilder angehängt. Sie sollten eigentlich praktisch
gleich aussehen, tun sie aber offensichtlich nicht. Hat jemand eine Idee,
wie ich die beiden Bilder einander anähneln kann?
Beschreibung: |
|
Download |
Dateiname: |
Bild 1.tif |
Dateigröße: |
2.09 MB |
Heruntergeladen: |
1550 mal |
Beschreibung: |
|
Download |
Dateiname: |
Bild 2.tif |
Dateigröße: |
2.09 MB |
Heruntergeladen: |
1486 mal |
|
|
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2010, 11:24
Titel:
|
|
Zuletzt bearbeitet von Hubertus am 08.01.2010, 11:32, insgesamt einmal bearbeitet
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2010, 11:29
Titel:
|
|
Sorry, da ist etwas schief gelaufen! Du kannnnst den Bildinhalt über Histogrammnormierung anpassen. Etwa wie nachfolgend, muß dazu sagen, dass ich diese Funktion auch übernommen habe.
function X = histo(a,gamma) % a=Bild
imax=255;
amin=double(min(a((:)));
amax=double(max(a(:)));
diff=(imax-imin);
X=uint8( (((double(a)-imin)/diff).^gamma)*diff+amin);
|
|
|
Polis Tyrol |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 08.01.2010, 12:47
Titel:
|
|
Wie würdest Du gamma berechnen? Denn das müsste dann ja für jedes Bild ein anderer Wert sein.
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2010, 13:16
Titel:
|
|
Das wüßte ich auch gerne. Dürfte aber schwierig sein, denn das Gamma sagt etwas über den visuellen und vor allem geschmacklichen Bildinhalt (Bildaussage) aus. Ein höheres Gamma als üblich kann einen interessanten Effekt verursachen. An was soll man sich orientieren - gibt es ein allgemeingültiges Gamma für jeden Bildinhalt? Da helfen wohl nur Erfahrungen. Handelt es sich um mehrere Aufnahmen mit gleichem Bildinhalt, läßt sich das Gamma übertragen oder muß sogar übertragen werden. Vielleicht wirst Du durch probieren mit unterschiedlichem Gamma sehr schnell Dein eigenes, spezifisches finden.
|
|
|
Polis Tyrol |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 08.01.2010, 13:58
Titel:
|
|
Ich hab das jetzt einmal ausprobiert:
Das bringt einmal alle Bilder auf einen ähnlichen Helligkeitswert (~0.4) und auch die Histogramme sind nicht mehr all zu unterschiedlich.
Der Weisheit letzter Schluss ist das allerdings noch nicht.
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.01.2010, 07:47
Titel:
|
|
Moin,moin,
mal abgesehen davon, dass sich nicht glaube, unterschiedliche Grauwertverteilungen über ein Gamma auf gleichem Niveau zu bringen (vielleicht hat zu diesem intressanten Thema jemand eine Meinung), würde ich Deine Funktion gerne anwenden. Dazu habe ich die Frage, ob: "^gamma" eine Variable ist (0.4 ist schon eine) oder wie muss ich den Zusammenhang verstehen. Ist es ein Tippfehler und müßte: gamma1 heißen, bekomme ich eine Fehlermeldung. "gamma" ist auch eine bekannte Funktion. Nehme ich diese, erhalte ich auch eine Fehlermeldung.
Schönen Wochenanfang
Hubertus
|
|
|
Polis Tyrol |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 11.01.2010, 10:02
Titel:
|
|
Muss natürlich "gamma1" heißen. Hab das erste gamma in "gamma1" umbenannt, weil er es sonst als Funktion interpretiert hätte. Aber beim zweiten hab ich das dann vergessen.
Wie gesagt, es ist nicht der Weisheit letzter Schluss. Die vorher helleren Bilder haben nach der Korrektur einen höheren Kontrast, die vorher dunkleren einen geringeren. Es ist eine Verbesserung, allerdings müsste die Funktion noch um ein Element erweitert werden, das auch den Kontrast normalisiert.
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.01.2010, 10:13
Titel:
|
|
Danke für Deine Antwort,
ich bekomme mit Werten unter 1 ein invertiertes Bild und über 1 - 2 ein Bild mit sehr geringen Änderungen und sehr hohen Kontrasten. Hast Du den gleichen Effekt oder liegt das am Bildinhalt?
|
|
|
Polis Tyrol |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 12.01.2010, 09:58
Titel:
|
|
Mein Bild ist Format double [0 1]. Liegt vielleicht daran.
Eigentlich sollte ein Bild mit mean unter 0.4 aufgehellt werden, eines mit mean über 0.4 abgedunkelt. Das funktioniert bei mir ganz gut.
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.01.2010, 10:02
Titel:
|
|
Jo, auch double. Versuch mal das Bild 'cameraman.tif'. Das ist bekannt.
Unter 1 = invers!
Hubertus
|
|
|
Polis Tyrol |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 08.01.10
|
|
|
|
Wohnort: Leoben
|
|
|
|
Version: 7.9.0.529 (R2009b)
|
|
|
|
|
|
Verfasst am: 13.01.2010, 16:11
Titel:
|
|
Verändert bei mir nur die Helligkeit.
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2010, 16:37
Titel:
|
|
Danke für Deine Antwort, mir ist ein Fehler unterlaufen. Ich habe nicht im2double sondern nur double verwendet. Das mag "es" nicht haben.
Alles prima jetzt.
Hubertus
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|