Untitled
unknown
plain_text
2 years ago
8.2 kB
4
Indexable
# maska 3x3 # Przygotowanie danych wejściowych import cv2 image = cv2.imread('pieski.jpg', 0) # Wczytanie obrazu # Inicjalizacja maski filtra h = [[0, 0, 0], [0, 0, 0], [0, 0, 1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Oryginalny obraz', image) cv2.imshow('Obraz po filtrowaniu', image_filtered) cv2.waitKey(0) cv2.destroyAllWindows() # Uśredniający h = [[1/9, 1/9, 1/9], [1/9, 1/9, 1/9], [1/9, 1/9, 1/9]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Uśredniający', image_filtered) cv2.waitKey(0) # Sobel h = [[-1, -2, -1], [0, 0, 0], [1, 2, 1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Sobel', image_filtered) cv2.waitKey(0) # Detekcja krawędzi h = [[0, -1, 0], [-1, 4, -1], [0, -1, 0]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Detekcja krawędzi', image_filtered) cv2.waitKey(0) # Detekcja narożników h = [[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Detekcja narożników', image_filtered) cv2.waitKey(0) # Wyostrzający h = [[0, -1, 0], [-1, 5, -1], [0, -1, 0]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Wyostrzający', image_filtered) cv2.waitKey(0) # Rozmycie gaussowskie h = [[1/16, 2/16, 1/16], [2/16, 4/16, 2/16], [1/16, 2/16, 1/16]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Rozmycie gaussowskie', image_filtered) cv2.waitKey(0) cv2.destroyAllWindows() # Przygotowanie danych wejściowych import numpy as np import matplotlib.pyplot as plt fs = 1000 # Częstotliwość próbkowania t = np.arange(0,1,1/fs) # Czas x = np.sin(2*np.pi*50*t) # Sygnał wejściowy # Inicjalizacja maski filtra h = [[0, 0, 0], [0, 0, 0], [0, 0, 1]] # Filtrowanie sygnału y = np.convolve(h,x) # Wyświetlenie wyników plt.figure() plt.subplot(2,2,1) plt.plot(t,x) plt.title('Sygnał wejściowy') plt.subplot(2,2,2) plt.plot(t,y) plt.title('Sygnał po filtrowaniu') # Filtrowanie dolnoprzepustowe [b,a] = signal.butter(3,0.3,'low') # Parametry filtru y_low = signal.filtfilt(b,a,x) # Wyświetlenie wyników plt.subplot(2,2,3) plt.plot(t,y_low) plt.title('Filtrowanie dolnoprzepustowe') # Filtrowanie górnoprzepustowe [b,a] = signal.butter(3,0.3,'high') # Parametry filtru y_high = signal.filtfilt(b,a,x) # Wyświetlenie wyników plt.subplot(2,2,4) plt.plot(t,y_high) plt.title('Filtrowanie górnoprzepustowe') # Filtrowanie pasmowoprzepustowe [b,a] = signal.butter(3,[0.2, 0.8]) # Parametry filtru y_bandpass = signal.filtfilt(b,a,x) # Wyświetlenie wyników plt.figure() plt.subplot(2,2,1) plt.plot(t,y_bandpass) plt.title('Filtrowanie pasmowoprzepustowe') # Filtrowanie pasmowozaporowe [b,a] = signal.butter(3,[0.2, 0.8],'stop') # Parametry filtru y_bandstop = signal.filtfilt(b,a,x) # Wyświetlenie wyników plt.subplot(2,2,2) plt.plot(t,y_bandstop) plt.title('Filtrowanie pasmowozaporowe') # Filtrowanie Butterwortha [b,a] = signal.butter(3,0.5) # Parametry filtru y_butterworth = signal.filtfilt(b,a,x) # Wyświetlenie wyników plt.subplot(2,2,3) plt.plot(t,y_butterworth) plt.title('Filtrowanie Butterwortha') plt.show() #maska 5x5 # Przygotowanie danych wejściowych import cv2 image = cv2.imread('obraz.jpg', 0) # Wczytanie obrazu # Inicjalizacja maski filtra h = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Oryginalny obraz', image) cv2.imshow('Obraz po filtrowaniu', image_filtered) cv2.waitKey(0) cv2.destroyAllWindows() # Uśredniający h = [[1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Uśredniający', image_filtered) cv2.waitKey(0) # Sobel h = [[-1, -2, -1, -2, -1], [0, 0, 0, 0, 0], [1, 2, 1, 2, 1], [0, 0, 0, 0, 0], [-1, -2, -1, -2, -1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Sobel', image_filtered) cv2.waitKey(0) # Detekcja krawędzi h = [[0, -1, 0, -1, 0], [-1, 4, -1, 4, -1], [0, -1, 0, -1, 0], [-1, 4, -1, 4, -1], [0, -1, 0, -1, 0]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Detekcja krawędzi', image_filtered) cv2.waitKey(0) # Detekcja narożników h = [[-1, -1, -1, -1, -1], [-1, 8, 8, 8, -1], [-1, 8, 24, 8, -1], [-1, 8, 8, 8, -1], [-1, -1, -1, -1, -1]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Detekcja narożników', image_filtered) cv2.waitKey(0) # Wyostrzający h = [[0, -1, 0, -1, 0], [-1, 5, 5, 5, -1], [0, 5, 9, 5, 0], [-1, 5, 5, 5, -1], [0, -1, 0, -1, 0]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Wyostrzający', image_filtered) cv2.waitKey(0) # Rozmycie gaussowskie h = [[1/256, 4/256, 6/256, 4/256, 1/256], [4/256, 16/256, 24/256, 16/256, 4/256], [6/256, 24/256, 36/256, 24/256, 6/256], [4/256, 16/256, 24/256, 16/256, 4/256], [1/256, 4/256, 6/256, 4/256, 1/256]] # Filtrowanie obrazu image_filtered = cv2.filter2D(image, -1, h) # Wyświetlenie wyników cv2.imshow('Rozmycie gaussowskie', image_filtered) cv2.waitKey(0) cv2.destroyAllWindows() Kod w Pythonie dla filtrów dla zbioru próbek: # Przygotowanie danych wejściowych import scipy.signal as sp import matplotlib.pyplot as plt import numpy as np # Tworzenie sygnału x = np.linspace(0, 10, 1000) y = np.sin(2 * np.pi * x) # Inicjalizacja maski filtra h = [[1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25], [1/25, 1/25, 1/25, 1/25, 1/25]] # Filtrowanie sygnału y_filtered = sp.convolve(y, h) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show() # Filtrowanie dolnoprzepustowe b, a = sp.butter(5, 0.5, 'lowpass') y_filtered = sp.filtfilt(b, a, y) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show() # Filtrowanie górnoprzepustowe b, a = sp.butter(5, 0.5, 'highpass') y_filtered = sp.filtfilt(b, a, y) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show() # Filtrowanie Butterwortha b, a = sp.butter(5, 0.5) y_filtered = sp.filtfilt(b, a, y) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show() # Filtrowanie pasmowoprzepustowe b, a = sp.butter(5, [0.1, 0.9], 'bandpass') y_filtered = sp.filtfilt(b, a, y) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show() # Filtrowanie pasmowozaporowe b, a = sp.butter(5, 0.5, 'bandstop') y_filtered = sp.filtfilt(b, a, y) # Wyświetlenie wyników plt.plot(x, y, label='Oryginalny sygnał') plt.plot(x, y_filtered, label='Po filtrowaniu') plt.legend() plt.show()
Editor is loading...