Der folgende Code stellt unser aktuelles Kantenerkennungsprogramm dar. Dieses ist in drei Schritte unterteilt. Als erstes wird ein Bild eingelesen, rauschvermindert und dann in x- und y-Achsenrichtung verschoben. Zum Schluss werden diese beiden Verschiebungsbilder dann miteinander verrechnet, sodass das dargestellte Ergebnis entsteht.
import numpy as np import matplotlib.pyplot as plt from scipy import misc, ndimage, signal import cv2 bild=misc.imread('hund_mittel_kl.jpg',mode='F',) bild=ndimage.filters.gaussian_filter(bild,1) #Rauschverminderung # x-Achsenverschiebung b=ndimage.filters.sobel(bild, axis=-1) cv2.namedWindow("Fenster 1") cv2.imshow("Fenster 1",b) # y-Achsenverschiebung b2=ndimage.filters.sobel(bild, axis=0) cv2.namedWindow("Fenster 2") cv2.imshow("Fenster 2",b2) cv2.waitKey(0) cv2.destroyAllWindows() a=np.sqrt(b[1:,:]**2+b2[:-1,:]**2) # Betrag der x/y-Verschiebung plt.imshow(a,cmap=plt.get_cmap('gray')) plt.show()
Nach Verschiebung in x- und y-Richtung