Erkennen Sie, welches Bild schärfer ist
Ich bin auf der Suche nach einem Weg, um zu erkennen, welche von zwei (ähnliche) Bilder schärfer ist.
Ich denke dieses könnte mit einem Maß der Allgemeinen Schärfe und erzeugen eine Punktzahl (hypothetisches Beispiel: image1 hat Schärfe-score von 9, image2 hat Schärfe-Wert von 7; also image1 schärfer)
Ich habe getan, einige suchen für die Schärfe-Erkennung/scoring-algorithmen, sondern kommen nur über diejenigen, die für eine Verbesserung der Bildschärfe.
Hat jemand schon sowas gemacht, oder haben alle nützlichen Ressourcen/führt?
Ich wäre mit dieser Funktionalität im Rahmen einer webapp, also PHP oder C/C++ bevorzugt.
InformationsquelleAutor der Frage econstantin | 2011-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfache Methode ist die Messung der Kontrast-das Bild mit der größten Unterschiede zwischen pixel-Werte ist die Schärfste. Sie können, zum Beispiel, berechnen die Varianz (oder Standardabweichung) der pixel-Werte, und je nachdem, was produziert die größere Zahl gewinnt. Das sieht für maximalen Kontrast, was nicht sein kann, was Sie wollen, obwohl -- insbesondere, es wird eher zu Gunsten Bilder mit maximaler Schärfentiefe.
Je nachdem, was Sie möchten, können Sie es vorziehen, verwenden Sie so etwas wie eine FFT, um zu sehen, welche zeigt den höchsten Frequenzen. Dies ermöglicht Ihnen zu Gunsten ein Bild, das extrem scharf in der einige Teile (aber weniger in anderen) über eine, die hat mehr Schärfentiefe, so das Bild ist relativ scharf, aber die maximale Schärfe, geringer ist (das ist üblich, aufgrund der Beugung bei kleineren öffnungen).
InformationsquelleAutor der Antwort Jerry Coffin
Wie z.B. gezeigt in dieses Matlab-Central-Seitedie Schärfe kann geschätzt werden, indem die Durchschnittliche Steigung Größenordnung.
Habe ich diese in Python als
Eine ähnliche Zahl kann berechnet werden mit der einfacheren numpy.diff statt numpy.Farbverlauf. Das resultierende array-Größen angepasst werden müssen es:
InformationsquelleAutor der Antwort Robert Pollak
Einfache praktische Ansatz wäre die Verwendung von edge-detection (mehr Kanten == schärferes Bild).
Quick-and-dirty hands-on mit der PHP-GD
(Bild mit weniger Bewegungsunschärfe schärfer)
Effizienter Ansatz wäre die Erkennung von Kanten in Ihrem code, mit Sobel-operator. PHP-Beispiel (umschreiben in C++ geben sollte enormen performance-Schub denke ich mal).
InformationsquelleAutor der Antwort lxa
Dieses Papier beschreibt eine Methode für die Berechnung eines blur-Faktor mit DWT. Sah ziemlich straight nach vorne, doch statt erkennen Schärfe es erkennen blurredness. Scheint es erkennt Kanten erste (einfache Faltung) und dann verwendet DWT zu sammeln und Punkten.
InformationsquelleAutor der Antwort gordy
Check-Kontrast-Transfer-Funktionen (CTF)
Hier eine Implementierung
Hier eine Erklärung
InformationsquelleAutor der Antwort Eric Fortis