2014-04-30 4 views
6

Ich habe ein Bild mit einer Reihe von einfachen Graustufen primitive Geometrie (Kurven, 'Saw'-Linien, Ellipsen, Dreiecke, Sterne) von Linien mit einer Breite von etwa 8-10 Pixel gezeichnet .Erkennen Sie einfache Kurven und Linien im Graustufenbild

Wie führt man eine statistische Analyse des Bildes durch? Ich brauche mindestens zwei folgenden Parameter:

  1. Anzahl der scharfen Winkeln
  2. Anzahl der Kurven.

Ich habe versucht, es selbst durch Extrahieren von Konturen zu tun, schrumpfen, bis sie Kanten verbunden (das heißt Kurven werden) und sie durch unterschiedliche Funktionen zu analysieren, aber es nimmt zu viel Zeit für große Bilder.

Angenommen, es gibt eine Art Algorithmus für die Erkennung der Kurve/Winkel/Winkelschärfe?

Was ich brauche, ist entweder ein Open-Source-Framework (java/javascript vorzuziehen), um solche Sachen zu tun oder zumindest den Namen eines Algorithmus, um Kurven/"Säge" -Linien zu erkennen.

+0

@Cerrbrurs, ich habe 10 Jahre Berufserfahrung als Java/JavaEE und Webentwickler (js/typescript) und verwende beide Sprachen. Gehen Sie nicht davon aus, dass wenn jemand "java/javascript" in eine Textzeile schreibt, er keinen Unterschied zwischen ihnen kennt :). Ich habe diese Sprachen hier erwähnt, um klarzustellen, nach welchen Frameworks von Drittanbietern ich suche. Wenn es Javascript ist, würde ich node.js verwenden, um Bild zu verarbeiten, wenn es java ist, würde ich Jetty/Tomcat verwenden, ist es nicht wirklich wichtig. Alles, was ich brauche, ist die mathematische Methode. – setec

+0

Ah, ich sehe :-) In diesem Fall, abgesehen davon, dass ich den Begriff "Kantenerkennung" auf dich geworfen habe, kann ich dir gar nicht helfen, fürchte ich.Bildverarbeitung ist überhaupt nicht meine Stärke ;-) – Cerbrus

+1

[Hough Transformation] (http://en.wikipedia.org/wiki/Hough_transform) funktioniert möglicherweise für einige Ihrer Formen. (Geraden und Ellipsen mindestens) – fabian

Antwort

3

Die Hough transform kann Ihnen bei der Identifizierung von Kurven hilfreich sein. Wenn Sie nur zählen müssen, sollte es gut funktionieren. Es kann verallgemeinert werden, um jede geometrische Form zu erkennen, die unter Verwendung von Parametern oder irgendeiner Form unter Verwendung eines Vorlagenvergleichs beschrieben werden kann. Dies kann jedoch expensive sein.

Für scharfe Ecken können Sie Harris corner detection verwenden, wie von @Diego im obigen Kommentar erwähnt.

Überprüfen Sie auf jeden Fall auch jfeaturelib, es ist hilfreich beim Extrahieren von Funktionen aus Bildern (obwohl, wenn Sie nur wollen/zählen sie könnte es ein wenig schwer für Ihre Zwecke sein).

Im Folgenden sind einige Implementierungen, die Sie auf Ihrem Weg helfen können:

Sie möchten vielleicht auch ImageJ überprüfen, durch Das NIH gibt es durchaus ein paar Java-Plugins, die hilfreich für Sie sein können. Es wird von vielen Biologen (wie mir!) Verwendet, um Bildmerkmale zu erkennen und hat Hunderte von Plugins für fast jeden erdenklichen Zweck.

TherearealsomanyhelpfulquestionsonSO.