Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1617:bilder_zu_bildern:protokolle:170119

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()


1: die hellsten 25%
2: die hellsten 15%

ws1617/bilder_zu_bildern/protokolle/170119.txt · Zuletzt geändert: 2017/03/24 18:08 von Chai_Tee.95-Cara