Ich glaube nicht, dass meine Antwort vollständig sein wird, aber ich werde anbieten, was ich weiß, und da dies eine von der Community bearbeitete Website ist, hoffe ich, dass jemand bald eine kostenlose Antwort geben wird :)
Adaptive Schwellenwertmethoden verwenden nicht im gesamten Bild den gleichen Schwellenwert .
Für einige einfachere Verwendungen reicht es jedoch manchmal aus, einen Schwellenwert mit einer Methode auszuwählen, die intelligenter ist als die einfachste iterative Methode . Otsus Methode ist eine beliebte Schwellenwertmethode, bei der davon ausgegangen wird, dass das Bild zwei Klassen von Pixeln enthält - Vordergrund und Hintergrund und ein bimodales Histogramm aufweist . Anschließend wird versucht, ihre kombinierte Streuung (klasseninterne Varianz) zu minimieren.
Die einfachsten Algorithmen, die als wirklich adaptive Schwellenwertmethoden angesehen werden können, sind diejenigen, die das Bild in ein Gitter von Zellen aufteilen und dann auf jede Zelle eine einfache Schwellenwertmethode (z. B. iterative oder Otsu-Methode) anwenden, die sie als separates Bild behandelt (und voraussetzt) ein bimodales Histogramm). Wenn ein Teilbild nicht gut mit einer Schwelle versehen werden kann, kann die Schwelle von einer der benachbarten Zellen verwendet werden.
Ein alternativer Ansatz zum Finden der lokalen Schwelle besteht darin , die Intensitätswerte der lokalen Nachbarschaft jedes Pixels statistisch zu untersuchen . Der Schwellenwert ist für jedes Pixel unterschiedlich und wird aus der lokalen Umgebung berechnet (ein Median, ein Durchschnitt und andere Auswahlmöglichkeiten sind möglich). Es gibt eine Implementierung dieser Art von Methoden, die in der OpenCV-Bibliothek in der cv::adaptiveThresholding
Funktion enthalten sind.
Ich fand eine andere ähnliche Methode namens Bradley Local Thresholding . Außerdem wird die Nachbarschaft jedes Pixels untersucht, wobei die Helligkeit auf Schwarz gesetzt wird, wenn die Pixelhelligkeit um t Prozent unter der durchschnittlichen Helligkeit der umgebenden Pixel liegt. Das entsprechende Papier finden Sie hier .
Diese Stackoverflow-Antwort erwähnt eine lokale (adaptive) Schwellenwertmethode namens Niblack , von der ich bisher noch nichts gehört habe.
Schließlich gibt es noch eine Methode, die ich in einem meiner früheren kleineren Projekte verwendet habe: Image Thresholding by Variational Minimax Optimization . Es ist eine iterative Methode, die auf der Optimierung einer Energiefunktion basiert, die eine nichtlineare Kombination zweier Komponenten ist. Eine Komponente zielt darauf ab, die Schwelle basierend auf der Position der stärksten Intensitätsänderungen im Bild zu berechnen. Die andere Komponente zielt darauf ab, die Schwelle an den (Objekt-) Grenzbereichen zu glätten. Es hat sich auf Bildern von analogen Instrumenten als ziemlich gut erwiesen (verschiedene Schattierungen und Reflexionen von Glas / Kunststoff vorhanden), erforderte jedoch eine sorgfältige Auswahl der Anzahl der Iterationen.
Späte Bearbeitung : Inspiriert durch den Kommentar zu dieser Antwort . Ich kenne noch eine Möglichkeit, um ungleichmäßige Lichtverhältnisse zu umgehen. Ich werde hier über helle Objekte auf dunklem Hintergrund schreiben, aber die gleiche Argumentation kann angewendet werden, wenn die Situation umgekehrt ist. Schwellenwert Die weiße Top-Hat-Transformation des Bildes mit einem konstanten Schwellenwert anstelle des Originalbildes . Ein weißer Zylinder eines Bildes ist nichts anderes als ein Unterschied zwischen dem Bild und seiner Öffnung . Lassen Sie mich als weitere Erklärung ein Zitat von P. Soille anbieten: Morphologische Bildanalyse :γ ( f )fγ(f)
Durch Öffnen des Originalbildes mit einem großen Quadrat SE werden alle relevanten Bildstrukturen entfernt, die Beleuchtungsfunktion bleibt jedoch erhalten. Der weiße Zylinder des Originalbildes oder die Subtraktion der Beleuchtungsfunktion vom Originalbild gibt ein Bild mit einer homogenen Beleuchtung aus.