Gephotoshoppedtes Bild programmatisch analysieren
-
Hallo C++ler,
Ich möchte (möglicherweise) gephotoshoppedte Bilder erkennen. Woran könnte ein Programm erkennen? Klar, kopierte Teile können rausgesucht werden, aber was kann ich sonst noch finden, und wie?
Danke im Voraus
-
Da gibts schon einiges. Habs jetzt nicht gelesen, aber das schaut recht interessant aus:
http://www.busim.ee.boun.edu.tr/~sankur/SankurFolder/ImgManupulation.pdf
-
Die besten Chancen wirst du vermutlich über's Rauschen haben.
Also Highpass Filter drüberlaufen lassen und die Bilder mal visuell inspizieren ob dir irgendwas auffällt.
Dann versuchen daraus einen Algorithmus zu basteln der das automatisch erkennt.In rein weissen Bereichen (überbelichtet) hast du vermutlich gar kein Rauschen - das ist vermutlich normal und kein Hinweis auf eine Modifikation.
In sehr sehr dunklen Bereichen (unterbelichtet) könnte es je nach Kamera sein dass du auch manchmal kein Rauschen hast.In den restlichen Bereichen sollte das Rauschen mit der Helligkeit des Bildes korrelieren. (Man könnte davon ausgehen dass das Rauschen überall halbwegs gleich sein muss, aber da die Abbildung
Helligkeit am Sensor => Helligkeitswert im Bild
nicht linear ist, wird es Unterschiede geben. Stichworte Gamma bzw. Gradationskurve (Dichtekurve)).-----
Wenn man davon ausgeht dass der Photoshopper das Originalbild als JPEG erhalten hat, dann kann man auch anhand der JPEG Artefakte einiges rausbekommen.
Ein paar Webseiten/Artikel/Papers zu dem Thema:http://www.errorlevelanalysis.com/
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131.4759&rep=rep1&type=pdf
http://lifehacker.com/5644259/how-to-detect-a-photoshopped-imageFunktioniert aber nicht mehr sobald das Original ein "sauberes" Bild war, z.B. aus einem RAW File einer Kamera erstellt.
Und natürlich kann man, wenn das zu analysierende Bild ein JPEG ist, auch die EXIF Daten angucken. Damit bekommt man dann u.U. raus mit welchem Programm das File gespeichert wurde. Wobei ein Bild natürlich nicht modifiziert sein muss, nur weil es z.B. mit Photoshop gespeichert wurde.
-
Achja...
Vielleicht solltest du noch dazuschreiben welche Art der Veränderung du feststellen willst.* "Harmlose" Sachen wie Vergrössern/Verkleinern/Rotieren...
* "Mittlere" Sachen wie Nachschärfen/Blur/Rauschfilter...
* "Ernste" Sachen wie das Ersetzen/Wegretouschieren von Bildteilen...
-
Ich würde mir auch die zweite Ableitung im (x,y) ansehen. Ich vermute, dass es zwischen den "echten" Farbgradienten und den "ergänzten künstlichen" Farbgradienten Unstetigkeiten gibt. Wenn man nun die Koordinaten dieser Unstetigkeitsstellen ermittelt, und schaut ob diese einen Kurvenzug bilden, könnte man eine Schnittstelle oder Einfügestelle gefunden haben.
-
Dieser Thread wurde von Moderator/in Marc++us aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.