Kann jemand beschreiben, wie kann ich SWT in Python mit opencv oder simplecv implementieren?Stroke Width Transform (SWT) Implementierung (Python)
Antwort
Ok, so hier geht:
Der Link, der an der Unterseite Details über die Umsetzung mit dem Code Download-Link hat: Es wurde SWT
Aus Gründen der Vollständigkeit, auch zu erwähnen, dass SWT oder Stroke Width-Transformation von Epshtein und anderen im Jahr 2010 entwickelt und hat sich bis heute zu einer der erfolgreichsten Methoden zur Texterkennung entwickelt. Es verwendet kein maschinelles Lernen oder aufwendige Tests. Grundsätzlich wird nach der Canny-Kantendetektion auf dem Eingabebild die Dicke jedes Strichs berechnet, aus dem Objekte im Bild bestehen. Da Text gleichmäßig dicke Striche hat, kann dies ein robustes Erkennungsmerkmal sein.
Die in der Verknüpfung angegebene Implementierung verwendet C++, OpenCV und die Boost-Bibliothek, die sie für die verbundenen Graph-Traversalen usw. verwenden, nachdem der SWT-Schritt berechnet wurde. Persönlich habe ich es auf Ubuntu getestet und es funktioniert ziemlich gut (und effizient), obwohl die Genauigkeit nicht genau ist.
Vielen Dank nochmal – pylover
ich etwas Ähnliches wie die Entfernung implementiert basierend SWT in 'ROBUST TEXT NACHWEIS IN NATURAL Bilder mit EDGE-enhanced maximal STABLE Extremal REGION von Huizhong Chen, Sam S. Tsai, Georg Schroth, David M. beschrieben verwandeln Chen, Radek Grzeszczuk, Bernd Girod '.
Es ist nicht das gleiche wie im Papier beschrieben, aber eine grobe Annäherung, die meinem Zweck diente. Ich dachte, ich sollte es teilen, damit jemand es nützlich finden kann (und auf Fehler/Verbesserungen hinweisen). Es ist in C++ implementiert und verwendet OpenCV.
// bw8u : we want to calculate the SWT of this. NOTE: Its background pixels are 0 and forground pixels are 1 (not 255!)
Mat bw32f, swt32f, kernel;
double min, max;
int strokeRadius;
bw8u.convertTo(bw32f, CV_32F); // format conversion for multiplication
distanceTransform(bw8u, swt32f, CV_DIST_L2, 5); // distance transform
minMaxLoc(swt32f, NULL, &max); // find max
strokeRadius = (int)ceil(max); // half the max stroke width
kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); // 3x3 kernel used to select 8-connected neighbors
for (int j = 0; j < strokeRadius; j++)
{
dilate(swt32f, swt32f, kernel); // assign the max in 3x3 neighborhood to each center pixel
swt32f = swt32f.mul(bw32f); // apply mask to restore original shape and to avoid unnecessary max propogation
}
// swt32f : resulting SWT image
Die lokalen Maxima der Entfernungstransformation ergeben die Halbwertsbreite. Das ist eine nette Beobachtung, obwohl einige Arbeiten in den Jahren 2011-2012 genau dieses Ding in Kombination mit Regionendetektoren wie MSERs verwendet haben. – AruniRC
@AruniRC Das Papier in dem angegebenen Link enthält Details zu dieser Methode. Eigentlich ist dieses halbe Strichbreite-Ding nicht meine Beobachtung. Tut mir wirklich leid, wenn mein Schreiben es so aussehen lässt, dass es mir gehört. All dies sollte den Autoren dieses Artikels zugute kommen. – dhanushka
Oh, ich meinte das überhaupt nicht so. Nur eine Beobachtung. Und es tut mir leid, mein Fehler, dass ich den ICIP-Link zuvor nicht gesehen habe. In der Tat ist die Verwendung der Distanz-Transformation, um die Halbwertsbreite zu erhalten, viel einfacher und eleganter Implementierung. Persönlich hatte ich einen Laplaceoperator benutzt, um die lokalen Extrema von dist zu bekommen. trans. Bild, aber Ihre Art zu erweitern ist sauberer. – AruniRC
- 1. iOS Swift Stroke Width
- 2. Eine erweiterte Tabellen-/Tabellenkalkulation SWT-Implementierung
- 3. Gradient Stroke auf UIButton
- 4. Ellipse Stroke Hintergrundfarbe
- 5. SVG Stroke-Linecap funktioniert nicht für Kreise in Firefox?
- 6. @media min-width & max-width
- 7. Max-Width vs. Min-Width
- 8. WPF - Multi-stroke mit inkcanvas
- 9. Wie SVG Stroke Linecap anpassen
- 10. Umriss/Stroke den formatierten Text
- 11. Transform Bug in Firefox?
- 12. Netcat-Implementierung in Python
- 13. Python - Hash-Heap-Implementierung
- 14. PageRank Python-Implementierung, Algorithmus
- 15. Lyapunov Exponent Python-Implementierung
- 16. Insertion_Sort() Implementierung (Fehler), Python
- 17. Python-Implementierung von YFilter
- 18. Python-Implementierung von Parsec?
- 19. Python String Interpolation Implementierung
- 20. Gmail API Python-Implementierung
- 21. Python Datenbank-Implementierung
- 22. Python TCP-Stack-Implementierung
- 23. Quicksort Implementierung in Python
- 24. Python Threading/Thread-Implementierung
- 25. SWT: Unterbild von Bild
- 26. Tabelle Header Text transform
- 27. Transform: Übersetzen funktioniert nicht
- 28. min-width und max-width mit jQuery
- 29. css min-width und max-width?
- 30. Transform funktioniert nicht auf IOS
Wenn Sie nach einer Papierimplementierung suchen, können Sie einen Link zu diesem Papier hinzufügen oder zumindest einen Link zu SWT bereitstellen. –
kann nützlich sein: http://stackoverflow.com/questions/4837124/stroke-width-transform-swt-implementation-java-c –
Ich sah sie bereits, aber die Verbindung war kaputt, und kein Code oder psudo-Code sind verfügbar . – pylover