Bildverlaufsvektorfeld in Python

8

Ich versuche, das Gradientenvektorfeld zu erhalten eines Bildes mit Python (ähnlich wie diese Matlab-Frage ).

Dies ist das Originalbild:

Hier ist mein Code:

%Vor%

Das ist das Ergebnis:

Das Problem ist, dass die Vektoren inkorrekt zu sein scheinen. Dieser Punkt wird deutlicher, wenn Sie das Bild vergrößern:

Warum zeigen einige der Vektoren wie erwartet auf das Zentrum, während andere nicht?

Vielleicht gibt es ein Problem mit dem Ergebnis des Aufrufs von np.gradient ?

    
Rodrigo Baravalle 06.05.2015, 14:31
quelle

1 Antwort

7

Ich denke, deine seltsamen Ergebnisse sind zumindest teilweise, weil p vom Typ uint8 ist. Sogar numpy diff führt zu eindeutig falschen Werten für ein Array dieses dtype. Wenn Sie in eine Ganzzahl mit Vorzeichen konvertieren, indem Sie die Definition von p durch die folgende ersetzen: p = np.asarray(I).astype(int8) , dann sind die Ergebnisse von diff korrekt. Der folgende Code gibt mir das, was wie ein vernünftiges Feld aussieht,

%Vor%

Dies ergibt Folgendes:

und close up das sieht aus wie du es erwartest,

    
Ed Smith 06.05.2015, 15:28
quelle