Wie kann ich ein Bild mit OpenCV schärfen ?
Es gibt viele Möglichkeiten zum Glätten oder Verwischen, aber keine, die ich beim Schärfen sehen könnte.
image-processing
opencv
AruniRC
quelle
quelle
Sie können einen einfachen Kernel und die Funktion filter2D ausprobieren , z. B. in Python:
Wikipedia hat einen guten Überblick über Kernel mit einigen weiteren Beispielen hier - https://en.wikipedia.org/wiki/Kernel_(image_processing)
quelle
Einen Beispielcode zum Schärfen von Bildern mit dem Algorithmus "Unscharfe Maske" finden Sie in der OpenCV-Dokumentation .
Ändern von Werten von
sigma
,threshold
,amount
werden unterschiedliche Ergebnisse.quelle
Sie können ein Bild mit einer unscharfen Maske schärfen . Weitere Informationen zur unscharfen Maskierung finden Sie hier . Und hier ist eine Python-Implementierung mit OpenCV:
quelle
amount
ist einfach das Ausmaß des Schärfens. Beispielsweiseamount
ergibt ein Wert von 2,0 ein schärferes Bild im Vergleich zum Standardwert von 1,0.threshold
ist der Schwellenwert für die kontrastarme Maske. Mit anderen Worten, die Pixel, bei denen der Unterschied zwischen den eingegebenen und den unscharfen Bildern geringer ist alsthreshold
, bleiben unverändert.Eine Möglichkeit besteht darin, einen selbst erstellten Filterkern mit dem Bild zu falten.
Es gibt eine andere Methode, um eine unscharfe Version des Bildes von der hellen Version zu subtrahieren. Dies hilft beim Schärfen des Bildes. Dies sollte jedoch mit Vorsicht erfolgen, da wir nur die Pixelwerte erhöhen. Stellen Sie sich einen Graustufenpixelwert 190 vor, der, wenn er mit einem Gewicht von 2 multipliziert wird, 380 ergibt, aber aufgrund des maximal zulässigen Pixelbereichs auf 255 gekürzt wird. Dies ist ein Informationsverlust und führt zu einem verwaschenen Bild.
quelle
Aus Gründen der Klarheit in diesem Thema sollten einige Punkte hervorgehoben werden:
Das Schärfen von Bildern ist ein schlechtes Problem. Mit anderen Worten, Unschärfe ist eine verlustbehaftete Operation, und ein Zurückkehren ist im Allgemeinen nicht möglich.
Um einzelne Bilder zu schärfen, müssen Sie Einschränkungen (Annahmen) hinzufügen, welche Art von Bild Sie möchten und wie es unscharf geworden ist. Dies ist der Bereich der natürlichen Bildstatistik. Ansätze zum Schärfen halten diese Statistiken explizit oder implizit in ihren Algorithmen (Deep Learning ist das implizit codierteste). Der übliche Ansatz, einige Ebenen einer DOG- oder Laplace-Pyramiden-Zerlegung hochzuwichten , der die Verallgemeinerung der Antwort von Brian Burns darstellt, geht davon aus, dass eine Gaußsche Unschärfe das Bild verfälscht und wie die Gewichtung erfolgt, hängt mit Annahmen darüber zusammen, was war im Bild zu Beginn.
Andere Informationsquellen können das Problem beim Schärfen gut aufwerfen. Häufig sind solche Informationsquellen Videos eines sich bewegenden Objekts oder Einstellungen mit mehreren Ansichten. Das Schärfen in dieser Einstellung wird normalerweise als Superauflösung bezeichnet (was ein sehr schlechter Name dafür ist, aber in akademischen Kreisen stecken geblieben ist). Es hat in OpenCV Super-Resolution - Verfahren seit langer Zeit .... obwohl sie in der Regel arbeiten nicht so gut für reale Probleme dauern ich sie ausgecheckt. Ich gehe davon aus, dass Deep Learning auch hier einige wundervolle Ergebnisse hervorgebracht hat. Vielleicht schreibt jemand eine Bemerkung darüber, was sich da draußen lohnt.
quelle
Um ein Bild zu schärfen, können wir den Filter verwenden (wie in vielen vorherigen Antworten).
Es wird am meisten sein, wenn der Nenner 1 ist und mit zunehmendem Wert abnimmt (2.3 ..)
Am häufigsten wird verwendet, wenn der Nenner 3 ist.
Unten ist die Implementierung.
quelle
Versuchen Sie es damit:
Weitere Informationen finden Sie hier .
quelle