Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
8.2 kB
1
Indexable
Never
# 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()