Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws1617:bilder_zu_bildern:protokolle:170119 [2017/01/19 16:26] isabelschwermer angelegt |
ws1617:bilder_zu_bildern:protokolle:170119 [2017/03/24 18:08] (aktuell) Chai_Tee.95-Cara |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
=== Protokoll vom 19. Januar 2017 === | === 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: | ||
+ | <code python> | ||
+ | #!/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')) | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ | <code python> | ||
+ | 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 ] | ||
+ | </code> | ||
+ | |||
+ | Die Funktion 'kurvenversuch' setzt auf alle ermittelten Kandidaten einen blauen Punkt. | ||
+ | <code python> | ||
+ | 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() | ||
+ | </code> | ||
+ | |||
+ | {{kurvenversuch12.png}} \\ **1:** die hellsten 25% \\ **2:** die hellsten 15% |