Gibt es eine Möglichkeit zu erkennen, ob ein Bild unscharf ist?
Ich Frage mich, ob es einen Weg gibt, um zu bestimmen, wenn ein Bild unscharf ist oder nicht, durch die Analyse der Bilddaten.
Damit verbundene Frage, dass ist eine gute Antwort, aber auch eine komplizierter Frage der Formulierung. stackoverflow.com/questions/5180327/...
Es hat auch viel schlimmer Antworten.
Es hat auch viel schlimmer Antworten.
InformationsquelleAutor Sam | 2011-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, ist es. Die Berechnung der Fast-Fourier-Transformation und analysieren das Ergebnis. Die Fourier-Transformation zeigt Ihnen an, welche Frequenzen sind in dem Bild vorhanden. Wenn es eine geringe Menge an hohen Frequenzen, dann wird das Bild unscharf.
Definition der Begriffe 'low' und 'high' ist bis zu Ihnen.
Bearbeiten:
Wie gesagt in den Kommentaren, wenn Sie möchten, eine single-float-Vertretung der verschwommenheit von einem Bild, Sie haben zu arbeiten, eine geeignete Metrik.
nikie ' s Antwort bieten solche Metrik. Convolve das Bild mit einem Laplace-kernel:
Verwenden und eine robuste maximum-Metrik, die auf die Ausgabe zu erhalten, eine Zahl, die Sie verwenden können, für die schwellenwertbestimmung. Versuchen Sie zu vermeiden, glätten, zu viel und die Bilder vor der Berechnung der Laplace -, denn Sie finden nur heraus, dass eine geglättete Bild ist in der Tat unscharf :-).
Es sei denn, dein Bild ist zyklisch, Sie haben in der Regel scharfe Kanten an den Grenzen des Bildes, führen zu sehr hohen Frequenzen
Sie in der Regel praktisch erweitern Sie Ihr Bild, um diesen Effekt zu vermeiden. Sie können auch kleine Fenster zum berechnen der lokalen fft.
Nur ein Punkt, der enorm wichtig ist, dass Sie wissen (zumindest ungefähr), was Ihr erwartet, dass pre-unscharf Bild (Frequenz -) der Inhalt war. Dies ist wahr, da das Frequenzspektrum wird sein, dass das Originalbild mal, dass der Unschärfe-filter. Also, wenn das ursprüngliche Bild bereits überwiegend niedrigen Frequenzen, wie können Sie sagen, ob es war verschwommen?
Wenn Sie ein Foto von einem leeren weißen chart, haben Sie keine Möglichkeit zu sagen, ob das Bild verschwommen ist oder nicht. Ich glaube, der OP will einige absolute Schärfe-Messung. die preblurred Bild möglicherweise nicht auf allen. Sie müssen ein wenig arbeiten, um zu kommen mit einer korrekten Metrik, aber fft kann mit diesem problem helfen. In dieser Perspektive, nickie ' s Antwort ist besser als meine.
InformationsquelleAutor Simon Bergot
Eine weitere, sehr einfache Möglichkeit zur Abschätzung der Schärfe eines Bildes ist die Verwendung eines Laplace - (oder LoG) filter und wählen Sie einfach den maximalen Wert. Mit einem robusten Maß wie ein zu 99,9% Quantil ist wohl besser, wenn Sie erwarten, dass Lärm (z.B. Kommissionierung der N-TEN höchsten Kontrast, statt den höchsten Kontrast.) Wenn Sie erwarten, dass unterschiedliche Bildhelligkeit, sollten Sie auch einen preprocessing-Schritt zu normalisieren Helligkeit/Kontrast (z.B. Histogramm-Ausgleich).
Habe ich umgesetzt Simon ' s Vorschlag und dieses in Mathematica, und versuchte es auf ein paar test-Bilder:
Der erste test, verwischt die test-Bilder mit einem Gauß-filter mit unterschiedlichem kernel-Größe), dann berechnet die FFT für das unscharfe Bild und nimmt den Durchschnitt von 90% den höchsten Frequenzen:
Ergebnis in einem logarithmischen plot:
Den 5 Linien stellen die 5 test-Bilder, die X-Achse der GAUSS-filter, radius. Die Grafiken sind rückläufig, so die FFT ist ein gutes Maß für die Schärfe.
Dies ist der code für die "höchsten LoG" Unschärfe-Schätzer: Es gilt einfach ein LoG-filter und gibt die hellsten pixel in der filter-Ergebnis:
Ergebnis in einem logarithmischen plot:
Die sich für die un-unscharfe Bilder ist ein wenig besser hier (2.5 vs-3.3), vor allem, weil diese Methode verwendet nur den stärksten Kontrast im Bild, während die FFT ist im wesentlichen ein Mittelwert über das ganze Bild. Die Funktionen sind auch zurück, schneller, so könnte es einfacher sein, um einen Satz "verschwommen" - Schwelle.
Was ist, wenn ich nach dem Messen der lokalen Unschärfe. Nämlich ein Foto in Bereichen, wo es verwischt ist und wo es scharf ist. Ich möchte eine Karte haben, die Schätzung der blur-Stufe pro pixel.
Ich bin mir nicht sicher, ob das überhaupt möglich ist. Betrachten Sie zum Beispiel das Lena-Bild: Es gibt große Bereiche, wo es keinen Kontrast (z.B. Lena ' s skin) obwohl das Gebiet im Fokus ist. Ich kann nicht denken, ein Weg, zu sagen, wenn so eine glatte Fläche ist "verschwommen", oder zur Unterscheidung von einem out-of-focus Bereich. Sollten Sie Fragen dies als eine separate Frage (vielleicht auf dem DSP.SE). Vielleicht hat jemand anderes bessere Ideen.
Macht es geeignet für motion blur? oder nur für Weichzeichner wie GAUSS?
Sicher!!! pastebin.com/VuYshqhk
InformationsquelleAutor Niki
Während einige arbeiten mit einer auto-Fokus-Objektiv, stieß ich auf diese sehr nützliche algorithmen für Erkennung von Bild focus. Es ist implementiert in MATLAB, aber die meisten Funktionen sind ziemlich einfach, zum Hafen zu OpenCV mit filter2D.
Es ist im Grunde eine Umfrage Umsetzung vieler Schwerpunkt mess-algorithmen. Wenn Sie möchten, Lesen Sie die original-Papiere, Verweise auf die Autoren der algorithmen werden im code bereitgestellt. 2012 Papier durch Pertuz, et al. Analyse der Ausrichtung Maßnahme-Betreiber für shape from focus (SFF) bietet einen großen überblick über alle diese Maßnahmen sowie Ihre Leistung (sowohl in Bezug auf Geschwindigkeit und Genauigkeit angewendet SFF).
EDIT: Hinzugefügt MATLAB-code, falls der link stirbt.
Ein paar Beispiele von OpenCV Versionen:
Keine Garantie, ob oder ob nicht diese Maßnahmen sind die beste Wahl für Ihr problem, aber wenn Sie die Spur der Papiere im Zusammenhang mit diesen Maßnahmen, können Sie geben Ihnen mehr Einblick. Hoffe Sie finden den code nützlich! Ich weiß, ich Tat.
Ich verwende normalerweise 3, 5 oder 7 je nach Auflösung des Bildes. Wenn Sie feststellen, Sie brauchen, um höher zu gehen, als, dass, möchten Sie vielleicht Blick auf die Neuberechnung des Bildes.
InformationsquelleAutor mevatron
Gebäude aus der Nike ' s Antwort. Seine einfach zu implementieren die Laplace-basierten Methode mit opencv:
Wird wieder eine kurze Angabe der maximalen Schärfe erkannt, die basierend auf meine tests auf real-world-Proben, ist ein ziemlich guter Indikator, wenn eine Kamera im Fokus ist oder nicht. Nicht überraschend, normale Werte sind Szene abhängig aber viel weniger als die FFT-Methode, die eine hohe falsch-positiv-rate zu nützlich sein, in meiner Anwendung.
Habe auch versucht, deine Anregung, aber die zahlen, die ich bekomme, ist ein wenig zufällig. Wenn ich nun eine neue Frage mit Bezug auf diese spezielle Implementierung, würdest du einen Blick?\
Die richtige Schwelle-Szene abhängig. In meiner Anwendung (CCTV) ich bin mit einer Standard-Schwelle von 300. Für Kameras, wo das ist zu niedrig, jemand vom support wird sich ändern, der eingestellte Wert für die jeweilige Kamera.
warum ist "maxLap = -32767;" ?
Wir suchen für den höchsten Kontrast, und da wir mit unterzeichnet shorts -32767 der niedrigsten möglichen Wert. Seine seit 2,5 Jahren, seit ich schrieb, dass code, aber wenn ich mich Recht erinnere hatte ich Probleme mit 16U.
InformationsquelleAutor Yaur
Kam ich mit einer völlig anderen Lösung.
Ich brauchte, um zu analysieren, Standbild-frames zu finden, die schärfsten jeder (X) frames. Auf diese Weise würde ich erkennen, motion blur und/oder out-of-focus-Bilder.
Landete ich mit Canny Edge detection und ich habe SEHR SEHR gute Ergebnisse mit fast jede Art von video (mit nikie ' s Methode hatte ich Probleme mit den digitalisierten VHS-videos und schwere interlaced videos).
Ich optimiert die Leistung durch festlegen einer region of interest (ROI) auf das Originalbild.
Mit EmguCV :
InformationsquelleAutor Goldorak84
Dank nikie für die große Laplace-Vorschlag.
OpenCV docs wies mich in die gleiche Richtung:
mit python, cv2 (opencv 2.4.10) und numpy...
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
numpy.max(cv2.convertScaleAbs(cv2.Laplacian(gray_image,3)))
Ergebnis ist zwischen 0 und 255. Ich fand nichts über 200ish ist sehr kurz gefasst und von 100, es ist deutlich unscharf. die max nie wirklich viel unter 20, auch wenn es völlig unscharf.
Vereinbart mit @WindWider. Beispiel-Bild, wo dies nicht gelingt, ist dieses Bild ich denke der Grund dafür ist, dass, obwohl das Bild ist wackelig, der Kontrast des Bildes und die entsprechende Intensität Unterschiede zwischen Pixel groß ist , durch die Laplace-Werte sind relativ groß. Bitte korrigieren Sie mich, wenn ich falsch bin.
cc WindRider - dito - irgendwelche Ideen auf, wie man dieses Problem beheben??
InformationsquelleAutor ggez44
Einer Weise, die ich bin derzeit mit Maßnahmen, die die Ausbreitung von Kanten im Bild. Suchen Sie nach diesem Papier:
Es ist in der Regel hinter einer paywall, aber ich habe gesehen, einige Kostenlose Exemplare herum. Im Grunde, Sie suchen die vertikalen Kanten in einem Bild, und dann Messen, wie breit diese Ränder sind. Die Mittelung der Breite gibt das Letzte blur-Schätzung-Ergebnis für das Bild. Breitere Kanten entsprechen verschwommene Bilder, und Umgekehrt.
Dieses problem gehört zum Bereich der keine-Referenz-Bildqualität Einschätzung. Wenn Sie schauen Sie auf Google Scholar, erhalten Sie viele nützliche Verweise.
BEARBEITEN
Hier ist ein plot der Unschärfe Schätzungen für die 5 Bilder in nikie ' s post. Höhere Werte entsprechen größerer Unschärfe. Ich benutzte eine Feste Größe 11x11 Gauß-filters und variiert die Standardabweichung (mit imagemagick ' s
convert
Befehl zum erhalten der unscharfen Bilder).Wenn Sie vergleichen Sie die Bilder in verschiedenen Größen, vergessen Sie nicht zu normalisieren, indem Sie die Breite des Bildes, da größere Bilder haben breitere Ränder.
Schließlich ein erhebliches problem ist die Unterscheidung zwischen künstlerischer Unschärfe und unerwünschte Unschärfe (bedingt durch die Fokus-miss, die Komprimierung, die relative Bewegung des Motivs zur Kamera), aber das ist über einfache Ansätze wie dieser. Ein Beispiel für eine Künstlerische Unschärfe, haben Sie einen Blick auf das Lenna-Bild: Lenna die Reflexion im Spiegel ist verschwommen, aber Ihr Gesicht ist perfekt im Fokus. Dies trägt zu einer höheren Unschärfe Schätzung für das Lenna-Bild.
InformationsquelleAutor mpenkov
Antworten oben erläutert viele Dinge, aber ich denke, es ist sinnvoll, eine begriffliche Unterscheidung.
Was ist, wenn Sie eine perfekt auf-focus Bild von einem unscharfen Bild?
Den Unschärfe-Erkennung problem ist nur gut gestellt, wenn Sie eine Referenz. Wenn Sie brauchen, um design, z.B., ein auto-Fokus-system, vergleichen Sie eine Sequenz von Bildern mit unterschiedlichen Grad der Unschärfe oder glätten, und Sie versuchen zu finden, dem Punkt der minimalen Unschärfe innerhalb dieser Gruppe. Ich andere Worte, die Sie brauchen, um cross-Referenz der verschiedenen Bilder mit einer der Techniken, die oben dargestellt sind (im Grunde genommen--mit verschiedenen möglichen Ebenen der Verfeinerung im Ansatz-auf der Suche nach dem einen Bild mit der höchsten high-frequency content).
InformationsquelleAutor Emerald Weapon
Habe ich versucht-Lösung auf Basis der Laplace-filter aus diese post. Es wollte mir nicht helfen. So, ich habe versucht die Lösung von diese post und es war gut für meinen Fall (ist aber langsam):
Weniger unscharfes Bild hat eine maximale
sum
Wert!Können Sie auch tune Geschwindigkeit und Genauigkeit durch ändern Schritt, z.B.
diesem Teil
können Sie ersetzen Sie mit diesem
InformationsquelleAutor Exterminator13
Matlab-code der beiden Methoden, die veröffentlicht wurden in hoch angesehenen Zeitschriften (IEEE Transactions on Image Processing) sind hier erhältlich: https://ivulab.asu.edu/software
überprüfen Sie die CPBDM und JNBM algorithmen. Wenn Sie das Kontrollkästchen code-es ist nicht sehr schwer zu sein portiert und übrigens, es ist auf der Grundlage der Marzialiano Methode als Basis-feature.
InformationsquelleAutor Marco
implementiert habe ich es mit fft in matlab und überprüfen Histogramm der fft berechnen Sie Mittelwert und std aber auch fit-Funktion kann getan werden,
InformationsquelleAutor user3452134
Das ist, was ich in Opencv, um zu erkennen, Schwerpunkt Qualität in einer region:
InformationsquelleAutor Nadav B