13 Stimmen

Niblack-Algorithmus zur Dokumenten-Binarisierung

Ich habe dieses Foto:

Bildbeschreibung hier eingeben

und ich versuche, eine Dokumenten-Binarisierung mithilfe des Niblack-Algorithmus durchzuführen. Ich habe den einfachen Niblack-Algorithmus implementiert

T = Mittelwert + K* Standardabweichung

und das war das Ergebnis:

Bildbeschreibung hier eingeben

Das Problem ist, dass es einige Teile des Bildes gibt, in denen das Fenster keine Objekte enthält, sodass es das Rauschen als Objekte erkennt und verarbeitet.

Ich habe versucht, einen Weichzeichnungsfilter anzuwenden, und dann eine globale Schwellenwertbildung durchzuführen das war das Ergebnis:

Bildbeschreibung hier eingeben

was nicht durch einen anderen Filter gelöst werden kann ich vermute, die einzige Lösung besteht darin, den Algorithmus daran zu hindern, globales Rauschen zu erkennen, wenn das Fenster frei von Objekten ist

Ich bin daran interessiert, dies mithilfe des Niblack-Algorithmus zu tun, nicht mithilfe eines anderen Algorithmus, also irgendwelche Vorschläge?

11voto

Hady Elsahar Punkte 2071

Ich habe den Sauvola-Algorithmus in diesem Paper ausprobiert Adaptive Dokumentenbild-Binarisierung J. Sauvola*, M. PietikaKinen Abschnitt 3.3

Es handelt sich um eine modifizierte Version des Niblack-Algorithmus, der eine modifizierte Gleichung des Niblack verwendet Bildbeschreibung hier eingeben

die ziemlich gute Ergebnisse lieferte: Bildbeschreibung hier eingeben

Außerdem habe ich eine weitere Modifikation von Niblack ausprobiert, die in diesem Paper implementiert ist in Algorithmus Nr. 5.5 No. 9a: Université de Lyon, INSA, Frankreich (C. Wolf, J-M Jolion)

die ebenfalls gute Ergebnisse lieferte:

Bildbeschreibung hier eingeben

4voto

Serg Punkte 12800

Hast du hier geschaut: https://stackoverflow.com/a/9891678/105037

local_mean = imfilter(X, filt, 'symmetric');
local_std = sqrt(imfilter(X .^ 2, filt, 'symmetric'));
X_bin = X >= (local_mean + k_threshold * local_std);

Ich sehe hier nicht viele Optionen, wenn du darauf bestehst, Niblack zu verwenden. Du kannst die Größe und Art des Filters sowie den Schwellenwert ändern.

Übrigens, es scheint, dass dein Originalbild Farben hat. Diese Information kann die Erkennung von schwarzen Text erheblich verbessern.

2voto

Egor Ershov Punkte 21

Es gibt eine Reihe von Methoden, die in dieser Situation helfen können:

  1. Natürlich können Sie den Algorithmus selbst ändern =)
  2. Sie können auch einfach Morphologie-Filter anwenden: Zuerst wenden Sie das Maximum im Fenster an und danach das Minimum. Sie sollten die Fenstergröße anpassen, um ein besseres Ergebnis zu erzielen, siehe Wiki.
  3. Sie können den schwierigsten, aber besseren Weg wählen und versuchen, das Niblack-Schema zu verbessern. Es ist erforderlich, die Fenstergröße von Niblack zu erhöhen, wenn die Standardabweichung kleiner als eine feste Zahl ist (sollte eingestellt werden).

-1voto

Gogo Punkte 292

Ich habe den Niblack-Algorithmus mit k=-0,99 und windows=990 unter Verwendung von Optimierung ausprobiert:

Shafait – "Effiziente Implementierung lokaler adaptiver Schwellwerttechniken unter Verwendung von Integralbildern", 2008

mit: T = Mittelwert + K* Standardabweichung; Ich habe dieses Ergebnis:

Bildbeschreibung hier eingeben

Die Implementierung des Algorithmus erfolgt hier

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X