Mehr

GRASS Nulldurchgangskantenerkennung

GRASS Nulldurchgangskantenerkennung


Ich habe eine Klassifizierung von Vegetationsgemeinschaften in einer Landschaft im .tif-Format. Ich wollte das GRASS Zero-Crossing Edge Detection Tool in QGIS verwenden, um die Grenzen zwischen meinen Klassen zu definieren - im Moment sind die Kanten jeder Klasse ziemlich gesprenkelt und ich möchte eine klar definierte Grenze. Wenn ich das Tool jedoch ausführe, erhalte ich die folgende Meldung: "Die obigen Dateien konnten nicht geöffnet werden, was wahrscheinlich darauf hindeutet, dass sie vom ausgeführten Algorithmus nicht korrekt erstellt wurden". Weiter heißt es: "GRASS scheint richtig installiert und konfiguriert zu sein".

Ich denke, das Problem liegt möglicherweise an der Eingabedatei, da auf der Hilfeseite steht, dass der Typ "String" sein sollte. Wenn ich meine Datei jedoch in eine .asc-Datei konvertiere, lässt mich das Tool sie nicht als Eingabe auswählen.

Hat jemand dieses Tool schon einmal benutzt? Wenn ja, haben Sie eine Idee, wo das Problem liegt?


Welche Version von QGIS verwenden Sie und auf welchem ​​Betriebssystem (Windows, Mac OS X, Linux)?

Wenn Sie einen GRASS GIS-Algorithmus verwenden, ist es interessant, ein Minimum dieser Software zu kennen.

1) Der GRASS GIS-Befehl ist i.zc und die Hilfe sagt

input=string Name der Eingabe-Rasterkarte

input=stringnur weil der Name einer Ebene keine Zahl ist, daBreite=GanzzahlBeispiel.Der Dialog in GRASS ist:

mit einigen optionalen Werten von GRASS

und in der GRASS-Shell mit den optionalen Werten

i.zc [email protected] outut=result

2) Der gleiche Befehl in QGIS

Wenn Sie einen Algorithmus in Processing verwenden, erstellt/modifiziert dieser einige Dateien im/.qgis2/VerarbeitungMappe. Der erste ist derVerarbeitung.logDatei. Es zeichnet alle Befehle mit den verwendeten Algorithmen und die Fehler auf, falls diese auftreten. In meinem Fall ist das Ergebnis mit den optionalen Werten (ohne Fehler):

ALGORITHMUS|Tue Jun 02 2015 18:27:39|processing.runalg("grass:i.zc","/Users/Shared/test.asc",9,10,1,"202086.577,205625.414407,88411.048,90534.3504441" ,0,"/Users/Shared/result.tif")

Was ist das Ergebnis in IhremVerarbeitung.logDatei ?

Da das Python-Verarbeitungsmodul das Subprocess-Modul verwendet, um die Befehle von GRASS GIS (oder SAGA GIS, oder…) auszuführen, erstellt es temporäre Dateien. Für GRASS GIS heißt esgrass_batch_job.shodergrass_batch_job.bat. Es enthält den effektiven Befehl/das Skript, das von GRASS GIS ausgeführt wird.

g.proj -c proj4="+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.3674866666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.869.3.724 .2978,-106.869.3.724 .2978,-10 ,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs" r.external input="/Users/Shared/test.asc" band=1 output=tmp1433262459625 --overwrite -o -r g.region n= 90534.3504441 s=88411.048 e=205625.414407 w=202086.577 res=35.3883740678 i.zc input=tmp1433262459625 width="9" Threshold="10" Orientierungs="1" output=output8cd3786b7ff941b1990fc702c76d756a --=86output7ffcdout37=86outg. gdal -c createopt="TFW=YES,COMPRESS=LZW" input=output8cd3786b7ff941b1990fc702c76d756a output="/Users/Shared/result.tif" exit

Vergleichen Sie mit Ihrer Datei.

Hoffe, das wird nützlich sein, um Ihr Problem zu lösen.


Nulldurchgangserkennung in simulink

Ich würde gerne wissen, wann die Nulldurchgangserkennungsoption in Simulink-Blöcken aktiviert/deaktiviert werden muss. Bitte erklären Sie es mit einem Beispiel. Was passiert, wenn wir die Option deaktivieren und die Simulation ausführen?

Ich weiß, dass der Nulldurchgangsdetektor anzeigt, wie oft das Signal Null passiert oder das Vorzeichen geändert wurde. Aber ich möchte wissen, wann wir dies aktivieren müssen und ein Echtzeit-Beispiel mit seiner Verwendung?

Ein Beispiel für einen Hüpfball, auf den hier Bezug genommen wird, ist in dem unten stehenden Link von phil Goddard in seinem Kommentar zu sehen. Ich verstehe die Dynamik des springenden Balls. Zunächst wird ein Ball mit einer Anfangsgeschwindigkeit von 15 m/s nach oben geworfen. Wenn wir also das Geschwindigkeitsdiagramm sehen, nimmt die anfängliche Geschwindigkeit ab und wenn die Kugel ihre Spitze erreicht, ist die Geschwindigkeit Null und dann beginnt die Kugel nach unten zu fallen und die Geschwindigkeit nimmt in Richtung -ve zu. Wenn der Ball den Boden berührt, wird kinetische Energie in potentielle Energie und wenig Wärmeenergie umgewandelt und wiederum wird potentielle Energie in kinetische Energie umgewandelt und der Ball beginnt sich zu erheben. Deshalb wird bei Position Null die Geschwindigkeit wieder bis zum Maximum angehoben und die gleiche Sequenz folgt. Ich habe das Modell mit aktivierter und deaktivierter Nulldurchgangserkennung ausgeführt, aber ich habe keinen Unterschied im Oszilloskopdiagramm festgestellt.


Der Canny Edge-Detektor

In früheren Beiträgen haben wir den Canny-Kantendetektor ziemlich oft verwendet. Wir haben es verwendet, um einen umwerfenden mobilen Dokumentenscanner zu bauen, und wir haben einen Game-Boy-Bildschirm in einem Foto gefunden, nur zwei Beispiele.

Der Canny Kantendetektor wurde bereits 1986 von John F. Canny entwickelt. Und er ist auch heute noch weit verbreitet und war einer der Standard-Kantendetektoren in der Bildverarbeitung.

Der Canny-Kantenerkennungsalgorithmus kann in 5 Schritte unterteilt werden:

  • Schritt 1: Glätten Sie das Bild mit einem Gaußschen Filter, um hochfrequentes Rauschen zu entfernen.
  • Schritt 2: Berechnen Sie die Gradientenintensitätsdarstellungen des Bildes.
  • Schritt 3: Wenden Sie eine nicht maximale Unterdrückung an, um “falsche”-Reaktionen auf die Kantenerkennung zu entfernen.
  • Schritt 4: Wenden Sie Schwellenwerte an, indem Sie eine untere und eine obere Grenze für die Gradientenwerte verwenden.
  • Schritt 5: Verfolgen Sie Kanten mithilfe von Hysterese, indem Sie schwache Kanten unterdrücken, die nicht mit starken Kanten verbunden sind.

Wenn Sie mit der OpenCV-Implementierung des Canny-Kantendetektors vertraut sind, wissen Sie, dass die Funktionssignatur wie folgt aussieht:

cv2.canny(Bild, unten, oben)

Dabei ist image das Bild, in dem wir Kanten erkennen möchten, und untere und obere sind unsere ganzzahligen Schwellenwerte für Schritt 4.

Das Problem besteht darin, diese unteren und oberen Schwellenwerte zu bestimmen.

Was ist der optimale Wert für die Schwellenwerte?

Diese Frage ist besonders wichtig, wenn Sie mehrere Bilder mit unterschiedlichen Inhalten verarbeiten, die unter unterschiedlichen Lichtverhältnissen aufgenommen wurden.

Im Rest dieses Blogposts zeige ich dir einen kleinen Trick, der darauf beruht grundlegende Statistikendie Sie anwenden können, um die manuelle Anpassung der Schwellenwerte für die Canny-Kantenerkennung zu entfernen.

Dieser Trick erspart Ihnen Zeit bei der Parameterabstimmung — und Sie erhalten nach Anwendung der Funktion immer noch eine schöne Canny-Edge-Map.

Um mehr über diesen Null-Parameter-Trick zur automatischen Canny-Kantenerkennung zu erfahren, lesen Sie weiter.


Erkennen des Nulldurchgangs in einem nach Laplace-Operator gefilterten Bild

Dies ist meine erste Frage auf dieser Seite, kompletter Noob. Aber hier gehts.

Ich habe einen positiven Laplace-Operator

Jetzt wird dieser Laplace-Operator verwendet, um die äußeren Kanten eines Bildes zu finden, IIRC. Das Bild, das ich im Binärformat habe, ist dieses

Es ist hier schwer zu erkennen, aber das Bild stellt eine Art Treppenbild dar. Ich habe ein PY-Skript, das die Faltung durchführt und mir das folgende Ergebnis der Faltung zurückgibt:

Das Zeichnen einer geraden Linie durch alle Einsen gibt mir tatsächlich die äußere Kante des Binärbilds.

Der Nulldurchgangsalgorithmus hat mich jedoch verwirrt. Laut diesem Link ist der Algorithmus zur Erkennung von Nulldurchgängen:

  1. Schau dir deine vier Nachbarn an, links, rechts, oben und unten
  2. Wenn alle das gleiche Vorzeichen haben wie du, bist du kein Nulldurchgang
  3. Wenn du sonst den kleinsten Absolutwert im Vergleich zu deinen Nachbarn mit entgegengesetztem Vorzeichen hast, dann bist du ein Nulldurchgang

Aber hier haben die 0 und 1 die gleichen Vorzeichen, oder? Beides ist positiv. Ich bin diesbezüglich verwirrt. Wenn jemand aus dem Ergebnisbild eine kleine Probe nehmen und mir einen Nulldurchgang markieren kann, ist mir das klar.


Zusammenfassung

Es WIRD Ein neuartiger Coder vorgestellt, der auf der Zerlegung des Bildes in einer niederfrequenten und mehreren hochfrequenten Richtungskomponenten beruht. Die Richtungsfilter und deren Eigenschaften werden beschrieben. Im following WIRd on sterben Implementierung der Zerlegung in sterben Richtungskomponenten und sterben Auswahl der zu codierenden Informationen eingehend. Eine Kombination der Transformationscodierung der niederfrequenten Komponente mit der Ortsbereichscodierung der Richtungskomponenten führt zu akzeptablen Ergebnissen bei Bitraten unter 0.2 bit/Bildpunkt.


Ein Schema für die kantenbasierte Multifokus-Farbbildfusion

In diesem Artikel wird ein neuartiges bereichsbasiertes Multifokus-Farbbildfusionsverfahren vorgeschlagen, das die fokussierten Kanten verwendet, die aus den Quellbildern extrahiert wurden, um ein fusioniertes Bild mit besserem Fokus zu erhalten. Zunächst werden die Kanten aus den Quellbildern gewonnen, indem zwei geeignete Kantenoperatoren (Zero-Cross und Canny) verwendet werden. Dann wird ein blockweiser Bereichsvergleich durchgeführt, um die fokussierten Kanten zu extrahieren, die morphologisch erweitert wurden, gefolgt von der Auswahl der größten Komponente, um isolierte Punkte zu entfernen. Jede Diskontinuität in den erkannten Kanten wird durch Abfragen der Kantenerkennungsausgabe des Canny-Kantenoperators entfernt. Das beste rekonstruierte Kantenbild wird ausgewählt, das später in einen fokussierten Bereich umgewandelt wird. Schließlich wird das fusionierte Bild konstruiert, indem Pixel aus den Quellbildern mit Hilfe einer vorgeschriebenen Farbentscheidungskarte ausgewählt werden. Das vorgeschlagene Verfahren wurde an einem Satz echter 2D-Multifokus-Bildpaare (sowohl Graustufen als auch Farbe) implementiert und getestet. Der Algorithmus weist hinsichtlich der subjektiven und objektiven Bewertung eine konkurrenzfähige Leistung gegenüber den neueren Fusionsverfahren auf.

Dies ist eine Vorschau von Abonnementinhalten, auf die Sie über Ihre Institution zugreifen können.


Beispiel - Text.pdf

Wenn jedoch genau dieselbe PDF-Datei gescannt wird, muss ich die PDF-Seite in ein Bild konvertieren, damit ich OCR auf der Seite ausführen kann. Es wird empfohlen, 300 DPI zu verwenden, wenn OCR auf Bildern durchgeführt wird [Siehe Link].

Dies bedeutet, dass dieselbe PDF-Datei mit denselben Koordinaten wie oben nicht mehr dasselbe Ergebnis ausgibt. Dies liegt daran, dass beim Konvertieren des PDFs in ein Bild mit 300 DPI letztendlich die Breite/Höhe entsprechend geändert wird.

Nehmen wir an, ich beschneide das Bild mit Python gemäß den obigen Koordinaten:

Nehmen wir als Beispiel die PDF-Datei von oben:


Bilder sind technisch auf die ursprüngliche Pixelauflösung beschränkt. Objekte in einem Bild werden bei dieser Auflösung räumlich quantisiert. Eine Kante kann jedoch beispielsweise "zwischen" nativen Pixeln lokalisiert sein. Herkömmliche Werkzeuge wie einfache Farbverläufe bleiben oft bei dieser anfänglichen Auflösung. Unter Verwendung zusätzlicher Informationen (mehrere Daten, Bewegungsvektoren, Prior) kann man jedoch mit a . auf eine genauere Objektposition schließen Subpixel-Auflösung, d. h. mit einer Genauigkeit, die feiner ist als die der Pixelbreite, bei einem Bruchteil der Pixelgröße, mit nicht ganzzahligen Koordinaten.

Dies kann auch für die Verfolgung/Erkennung von Objekten gelten, deren Größe kleiner als die eines Pixels ist. Siehe zum Beispiel: Was ist ein Subpixel?

Durch geschickte Subpixelverschiebungen kann man beispielsweise Asymmetrien aufdecken, die im Originalbild nicht sichtbar sind, wie unten gezeigt:

Alte und aktuelle Referenzen:

Hinweis: Subpixel werden auch beim Subpixel-Rendering auf Displays verwendet und beziehen sich auf farbige Pixelkomponenten (Rot, Grün, Blau plus Gelb, Weiß oder Cyan), die wie ein einzelnes Pixel angezeigt oder angezeigt werden.


GRASS Zero-Crossing Edge Detection - Geografische Informationssysteme

Sie haben eine maschinelle Übersetzung ausgewählter Inhalte aus unseren Datenbanken angefordert. Diese Funktionalität wird ausschließlich zu Ihrer Bequemlichkeit bereitgestellt und soll in keiner Weise die menschliche Übersetzung ersetzen. Weder SPIE noch die Eigentümer und Herausgeber der Inhalte geben ausdrückliche oder stillschweigende Zusicherungen oder Gewährleistungen jeglicher Art ab und lehnen diese ausdrücklich ab, einschließlich und ohne Einschränkung Zusicherungen und Gewährleistungen hinsichtlich der Funktionalität der Übersetzungsfunktion oder der Genauigkeit oder Vollständigkeit von die Übersetzungen.

Übersetzungen werden in unserem System nicht gespeichert. Ihre Nutzung dieser Funktion und der Übersetzungen unterliegt allen Nutzungsbeschränkungen, die in den Nutzungsbedingungen der SPIE-Website enthalten sind.

Verwenden von Verläufen, Ausrichtung und Nähe zum Extrahieren von Kurven und Verbinden von Straßen in Überkopfbildern

Barry Y. Chen, 1 David W. Paglieroni 1

1 Lawrence Livermore National Lab. (Vereinigte Staaten)

ABONNIEREN SIE DIE DIGITALE BIBLIOTHEK

50 Downloads pro 1-Jahres-Abonnement

25 Downloads pro 1-Jahres-Abonnement

Enthält PDF, HTML und Video, falls verfügbar

In diesem Beitrag wird ein robuster Ansatz zum automatischen Extrahieren von Straßen aus Überkopfbildern entwickelt. Der erste Schritt beinhaltet das Extrahieren eines sehr dichten Satzes von Kantenpixeln unter Verwendung einer Technik, die auf der Größe und Richtung von Pixelgradienten basiert. In Schritt zwei werden die Kanten in aufeinanderfolgende Kanäle der Kantenorientierung aufgeteilt, die jeweils Kantenpixel enthalten, deren Gradientenrichtungen innerhalb eines anderen Winkelbereichs liegen. Aus jedem Kanal wird eine übersichtliche Karte von Kantenkurvensegmenten extrahiert, und die Ergebnisse werden zu einer einzigen zusammengesetzten Karte von unterbrochenen Kantenkurven zusammengeführt. Im letzten Schritt werden unterbrochene Kurven in nahezu lineare Segmente unterteilt und jedes Segment als an beiden Enden verbunden oder getrennt klassifiziert. Ein Maß für die Verbindungsfähigkeit zwischen zwei getrennten Liniensegmenten basierend auf Nähe und relativer Ausrichtung wird mathematisch definiert. Jedes getrennte Segment wird mit dem getrennten Segment gepaart, mit dem es am besten verbunden werden kann. Segmentpaare werden zusammengeführt, wenn ihre Trennung und Fehlausrichtung unterhalb der (derzeit manuell spezifizierten) Schwellenwerte liegen und die Verbindungsfähigkeit des Paares optimal ist. Ausgedehnte Kurven- und Straßenextraktionsbeispiele werden unter Verwendung kommerzieller Overhead-Bilder bereitgestellt.

© (2006) COPYRIGHT Society of Photo-Optical Instrumentation Engineers (SPIE). Das Herunterladen des Abstracts ist nur für den persönlichen Gebrauch gestattet.


Der sicherste Weg, dies zu tun, besteht darin, jeden Frame zu testen, ob das Sprite die gewünschten Grenzen (entweder physischer Bildschirm oder Kamera-Ansichtsfenster) überschritten hat, und wenn ja, sie wieder auf die genaue Grenze zu klemmen. Dadurch wird verhindert, dass seltsame Bounce-Effekte versuchen, die Position mithilfe eines Offsets zu korrigieren, und das Sprite kann eng mit den Begrenzungen kollidieren.

Ich komme auch aus einem XNA-Hintergrund, also habe ich zusammen mit dem Code Änderungen vorgenommen, um Ihnen die Struktur hoffentlich bekannter zu machen. Wie auch immer, Ändern Sie Ihren vorhandenen Code:

Beachten Sie, dass dies von der Manschette abgeschrieben und ungetestet ist. Nehmen Sie mit einem Körnchen Salz und einem Auge für Fehler. :)