11 Dec 17:24
ZadanieC
import imageio
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import grey_erosion, generate_binary_structure
# Wczytanie obrazów testowych z szumem
noised2 = imageio.imread('noised2.png')
noised3 = imageio.imread('noised3.png')
noised4 = imageio.imread('noised4.png')
# Zdefiniowanie elementów strukturujących
def create_square_mask(size):
return np.ones((size, size), dtype=bool) # Kwadratowa maska 5x5
def create_circle_mask(size):
center = size // 2
Y, X = np.ogrid[:size, :size]
distance = (X - center)**2 + (Y - center)**2
return distance <= center**2 # Kołowa maska 5x5
# Funkcja do filtracji z użyciem operacji erosion
def apply_erosion(image, mask):
return grey_erosion(image, footprint=mask)
# Funkcja do wyświetlania obrazów przed i po filtracji
# Stworzenie masek
square_mask = create_square_mask(5) # Kwadratowa maska 5x5
circle_mask = create_circle_mask(5) # Kołowa maska 5x5
# Filtracja obrazów testowych
for image, name in [(noised2, 'Noised2'), (noised3, 'Noised3'), (noised4, 'Noised4')]:
# Filtracja dla maski kwadratowej
filtered_square = apply_erosion(image, square_mask)
displayImages(image, filtered_square, f"{name} - Original", f"{name} - Erosion (Square Mask)")
# Filtracja dla maski kołowej
filtered_circle = apply_erosion(image, circle_mask)
displayImages(image, filtered_circle, f"{name} - Original", f"{name} - Erosion (Circle Mask)")