Back to posts Edit this post
Copy content

11 Dec 17:25

ZadanieE
import imageio import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import grey_opening # 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 opening def apply_opening(image, mask): return grey_opening(image, footprint=mask) # Funkcja do wyświetlania obrazów przed i po filtracji def displayImages(Image1, Image2, Title1="img1", Title2="img2"): print(f"{Title1} dimensions: {Image1.shape}, dtype: {Image1.dtype}") print(f"{Title2} dimensions: {Image2.shape}, dtype: {Image2.dtype}") fig, axs = plt.subplots(1, 2, figsize=(12, 6)) axs[0].imshow(Image1, cmap='gray', vmin=0, vmax=255) axs[0].set_title(Title1) axs[1].imshow(Image2, cmap='gray', vmin=0, vmax=255) axs[1].set_title(Title2) fig.tight_layout() plt.show() # 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_opening(image, square_mask) displayImages(image, filtered_square, f"{name} - Original", f"{name} - Opening (Square Mask)") # Filtracja dla maski kołowej filtered_circle = apply_opening(image, circle_mask) displayImages(image, filtered_circle, f"{name} - Original", f"{name} - Opening (Circle Mask)")

No files