=== Protokoll vom 19. Januar 2017 ===
Der folgende Code sortiert unerwünschte Werte aus unserem Kantenbild aus, mit dem Ziel das Kanten ohne Aussagekraft nicht mitberechnet werden.\\
Stand vom 5. Januar:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import misc, ndimage
import cv2
bild=misc.imread('hund_mittel_kl.jpg',mode='F',)
# Verschiebung in x-Richtung
b=ndimage.filters.sobel(bild, axis=-1)
# Verschiebung in y-Richtung
b2=ndimage.filters.sobel(bild, axis=0)
a=np.sqrt(b[1:,:]**2+b2[:-1,:]**2) # b und b2 werden zum Kantenbild a verrechnet
plt.imshow(a,cmap=plt.get_cmap('gray'))
Mit der Percentile-Funktion wird dafür gesorgt, dass nur die 25% hellsten Punkte als Kandidaten aufgenommen werden. \\ Die Variablen z2 und s2 enthalten alle Zeilen und Spalten des Bildes (0,1,..,z-1 bzw 0,1,...,s-1), im Folgenden werden alle xy-Koordinaten des Bildes in die zunächst leere Liste 'alle_koordinaten' gepackt. \\
Aus 'alle_koordinaten' werden schließlich alle Punkte aus den oberen 25% in einer neue Liste 'kandidaten' gesammelt.
median2 = np.percentile(a,75)
z = a.shape[0] #y
z2 = range(0,z)
s = a.shape[1] #x
s2 = range(0,s)
alle_koordinaten = []
for i in z2:
for j in s2:
alle_koordinaten.append((i,j))
kandidaten = [ p for p in alle_koordinaten if a[p[0],p[1]]>median2 ]
Die Funktion 'kurvenversuch' setzt auf alle ermittelten Kandidaten einen blauen Punkt.
def kurvenversuch():
a_als_farbbild = cv2.cvtColor(a, cv2.COLOR_GRAY2BGR) #a ist ein s/w-bild, um farbe überhaupt anzeigen zu können, wird es in ein bgr konvertiert
for i,j in kandidaten:
cv2.circle(a_als_farbbild,(j,i),1,(1,0,0),-1)
cv2.imshow("1:",a_als_farbbild)
kurvenversuch()
{{kurvenversuch12.png}} \\ **1:** die hellsten 25% \\ **2:** die hellsten 15%