Чтобы реализовать средний фильтр NumPy в Python, сначала импортируйте NumPy, а затем определите функцию, которая применяет фильтр, вычисляя среднее значение интенсивностей пикселей в окрестности размером с ядро вокруг каждого пикселя. Эта функция перебирает каждый пиксель, вычисляет среднее значение окружающих пикселей и присваивает это среднее значение обратно центральному пикселю.
По своей сути фильтр усреднения NumPy в Python представляет собой простой, но эффективный метод цифровой фильтрации. Он работает путем замены каждого элемента массива (или пикселя изображения) средним значением его соседей, включая его самого. Этот процесс приводит к эффекту сглаживания, который особенно полезен при уменьшении шума в изображениях или сигналах.
Ключевые понятия
- Локальное соседство: набор элементов, окружающих текущий элемент (или пиксель).
- Размер ядра или окна: размер окрестности, по которой вычисляется среднее значение.
- Обработка краев: как фильтр обрабатывает границы массива или изображения в Python.
Применение
- Обработка изображений: для шумоподавления и сглаживания изображений.
- Анализ данных: чтобы сгладить краткосрочные колебания и выделить долгосрочные тенденции в данных.
- Обработка сигналов: используется для уменьшения случайного шума сигналов.
Реализация
import numpy as np def average_filter(data, kernel_size=3): pad_size = kernel_size // 2 padded_data = np.pad(data, pad_size, mode='constant') filtered_data = np.zeros_like(data) for i in range(data.shape[0]): for j in range(data.shape[1]): neighborhood = padded_data[i:i+kernel_size, j:j+kernel_size] filtered_data[i, j] = np.mean(neighborhood) return filtered_data data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) filtered_data = average_filter(data) print("Filtered Data:\n", filtered_data)
Выходные данные: эти выходные данные демонстрируют сглаживающий эффект фильтра усреднения NumPy в Python. Каждый элемент исходного массива заменяется средним значением его локальной окрестности, в результате чего мы получаем значения, которые мы видим на выходе.
Filtered Data: [[1 2 1] [3 5 3] [2 4 3]]
Я протестировал код в Pycharm, и скриншот указан ниже: