Низькочастотні та Високочастотні Фільтри
Однією з ключових переваг перетворення Фур'є є можливість виконання високочастотної та низькочастотної фільтрації.
Після застосування перетворення Фур'є:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
необхідно створити фільтруючу маску
Низькочастотна фільтрація (розмиття)
Низькочастотний фільтр видаляє високочастотні компоненти, що призводить до розмиття зображення. Маска низькочастотного фільтра:
rows, cols = image.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
rows, cols = image.shape: отримує кількість рядків і стовпців із зображення у відтінках сірого;crow, ccol = rows // 2, cols // 2: обчислює координати центру зображення;mask = np.zeros((rows, cols), np.uint8): створює маску з нулями з такими ж розмірами, як і зображення;mask[crow-30:crow+30, ccol-30:ccol+30] = 1: встановлює квадратну область 60×60 у центрі маски в 1, пропускаючи лише низькочастотні компоненти (поблизу центру частотної області) та відсікаючи високочастотні деталі.
Високочастотна фільтрація (Виявлення контурів)
Високочастотний фільтр видаляє низькочастотні компоненти та підсилює контури. Маска високих частот:
highpass_mask = np.ones((rows, cols), np.uint8)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
highpass_mask = np.ones((rows, cols), np.uint8): ініціалізує маску з одиниць з такими ж розмірами, як і зображення, тобто всі частоти спочатку пропускаються;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: встановлює невеликий квадрат 10×10 у центрі (область низьких частот) у нуль, ефективно блокуючи ці частоти.
Застосування фільтра
Після створення маски необхідно застосувати фільтр і перетворити зображення назад у просторову область:
dft_filtered = dft_shift * mask
dft_inverse = np.fft.ifftshift(dft_filtered) # Inverse shifting
image_filtered = np.fft.ifft2(dft_inverse) # Inverse transformation
image_filtered = np.abs(image_filtered) # Remove negative values
dft_filtered = dft_shift * mask: застосування маски у частотній області (наприклад, низькочастотної або високочастотної) шляхом поелементного множення із зсунутою ДПФ зображення;dft_inverse = np.fft.ifftshift(dft_filtered): зворотний зсув, який повертає частотні компоненти на їхні початкові позиції;image_filtered = np.fft.ifft2(dft_inverse): обчислення оберненого перетворення Фур'є для перетворення відфільтрованих частотних даних у просторову область;image_filtered = np.abs(image_filtered): взяття модуля для усунення залишкових уявних компонентів, що призводить до отримання дійсного відфільтрованого зображення.
Swipe to start coding
Вам надано зображення вівці у змінній image та зображення у частотній області у змінній dft_shift:
- Отримайте розмірність матриці
imageта збережіть у зміннихrowsіcols; - Обчисліть центральну точку та збережіть у
crowіccol; - Визначте
low_maskяк масив нулів розміром(rows, cols)та типомnp.uint8; - Оберіть 20x20 центральну область у
low_maskта заповніть її1. - Визначте
high_maskяк масив одиниць розміром(rows, cols)та типомnp.uint8; - Оберіть 20x20 центральну область у
high_maskта заповніть її0; - Застосуйте
low_maskтаhigh_maskдоdft_shiftі збережіть відфільтровані частоти уlowpass_dft_filteredтаhighpass_dft_filteredвідповідно; - Виконайте обернене перетворення для
lowpass_dft_filtered:- Виконайте зворотне зміщення та збережіть у
lowpass_dft_inverse; - Виконайте обернене перетворення та збережіть зображення у
image_lowpass; - Видаліть від’ємні значення для
image_lowpass.
- Виконайте зворотне зміщення та збережіть у
- Виконайте обернене перетворення для
highpass_dft_inverse:- Виконайте зворотне зміщення та збережіть у
lowpass_dft_inverse; - Виконайте обернене перетворення та збережіть зображення у
image_highpass; - Видаліть від’ємні значення для
image_highpass.
- Виконайте зворотне зміщення та збережіть у
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Низькочастотні та Високочастотні Фільтри
Свайпніть щоб показати меню
Однією з ключових переваг перетворення Фур'є є можливість виконання високочастотної та низькочастотної фільтрації.
Після застосування перетворення Фур'є:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
необхідно створити фільтруючу маску
Низькочастотна фільтрація (розмиття)
Низькочастотний фільтр видаляє високочастотні компоненти, що призводить до розмиття зображення. Маска низькочастотного фільтра:
rows, cols = image.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
rows, cols = image.shape: отримує кількість рядків і стовпців із зображення у відтінках сірого;crow, ccol = rows // 2, cols // 2: обчислює координати центру зображення;mask = np.zeros((rows, cols), np.uint8): створює маску з нулями з такими ж розмірами, як і зображення;mask[crow-30:crow+30, ccol-30:ccol+30] = 1: встановлює квадратну область 60×60 у центрі маски в 1, пропускаючи лише низькочастотні компоненти (поблизу центру частотної області) та відсікаючи високочастотні деталі.
Високочастотна фільтрація (Виявлення контурів)
Високочастотний фільтр видаляє низькочастотні компоненти та підсилює контури. Маска високих частот:
highpass_mask = np.ones((rows, cols), np.uint8)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
highpass_mask = np.ones((rows, cols), np.uint8): ініціалізує маску з одиниць з такими ж розмірами, як і зображення, тобто всі частоти спочатку пропускаються;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: встановлює невеликий квадрат 10×10 у центрі (область низьких частот) у нуль, ефективно блокуючи ці частоти.
Застосування фільтра
Після створення маски необхідно застосувати фільтр і перетворити зображення назад у просторову область:
dft_filtered = dft_shift * mask
dft_inverse = np.fft.ifftshift(dft_filtered) # Inverse shifting
image_filtered = np.fft.ifft2(dft_inverse) # Inverse transformation
image_filtered = np.abs(image_filtered) # Remove negative values
dft_filtered = dft_shift * mask: застосування маски у частотній області (наприклад, низькочастотної або високочастотної) шляхом поелементного множення із зсунутою ДПФ зображення;dft_inverse = np.fft.ifftshift(dft_filtered): зворотний зсув, який повертає частотні компоненти на їхні початкові позиції;image_filtered = np.fft.ifft2(dft_inverse): обчислення оберненого перетворення Фур'є для перетворення відфільтрованих частотних даних у просторову область;image_filtered = np.abs(image_filtered): взяття модуля для усунення залишкових уявних компонентів, що призводить до отримання дійсного відфільтрованого зображення.
Swipe to start coding
Вам надано зображення вівці у змінній image та зображення у частотній області у змінній dft_shift:
- Отримайте розмірність матриці
imageта збережіть у зміннихrowsіcols; - Обчисліть центральну точку та збережіть у
crowіccol; - Визначте
low_maskяк масив нулів розміром(rows, cols)та типомnp.uint8; - Оберіть 20x20 центральну область у
low_maskта заповніть її1. - Визначте
high_maskяк масив одиниць розміром(rows, cols)та типомnp.uint8; - Оберіть 20x20 центральну область у
high_maskта заповніть її0; - Застосуйте
low_maskтаhigh_maskдоdft_shiftі збережіть відфільтровані частоти уlowpass_dft_filteredтаhighpass_dft_filteredвідповідно; - Виконайте обернене перетворення для
lowpass_dft_filtered:- Виконайте зворотне зміщення та збережіть у
lowpass_dft_inverse; - Виконайте обернене перетворення та збережіть зображення у
image_lowpass; - Видаліть від’ємні значення для
image_lowpass.
- Виконайте зворотне зміщення та збережіть у
- Виконайте обернене перетворення для
highpass_dft_inverse:- Виконайте зворотне зміщення та збережіть у
lowpass_dft_inverse; - Виконайте обернене перетворення та збережіть зображення у
image_highpass; - Видаліть від’ємні значення для
image_highpass.
- Виконайте зворотне зміщення та збережіть у
Рішення
Дякуємо за ваш відгук!
single