Низькочастотні та Високочастотні Фільтри
Однією з ключових переваг перетворення Фур'є є можливість виконання високочастотної та низькочастотної фільтрації.
Після застосування перетворення Фур'є:
необхідно створити фільтруючу маску
Низькочастотна фільтрація (розмиття)
Низькочастотний фільтр видаляє високочастотні компоненти, що призводить до розмиття зображення. Маска низькочастотного фільтра:
rows, cols = image.shape
: retrieves the number of rows and columns from the grayscale image;crow, ccol = rows // 2, cols // 2
: computes the center coordinates of the image;mask = np.zeros((rows, cols), np.uint8)
: creates a mask of zeros with the same dimensions as the image;mask[crow-30:crow+30, ccol-30:ccol+30] = 1
: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.
Високочастотна фільтрація (Виявлення контурів)
Високочастотний фільтр видаляє низькочастотні компоненти та підсилює краї. Маска високих частот:
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 зображення;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
Низькочастотні та Високочастотні Фільтри
Свайпніть щоб показати меню
Однією з ключових переваг перетворення Фур'є є можливість виконання високочастотної та низькочастотної фільтрації.
Після застосування перетворення Фур'є:
необхідно створити фільтруючу маску
Низькочастотна фільтрація (розмиття)
Низькочастотний фільтр видаляє високочастотні компоненти, що призводить до розмиття зображення. Маска низькочастотного фільтра:
rows, cols = image.shape
: retrieves the number of rows and columns from the grayscale image;crow, ccol = rows // 2, cols // 2
: computes the center coordinates of the image;mask = np.zeros((rows, cols), np.uint8)
: creates a mask of zeros with the same dimensions as the image;mask[crow-30:crow+30, ccol-30:ccol+30] = 1
: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.
Високочастотна фільтрація (Виявлення контурів)
Високочастотний фільтр видаляє низькочастотні компоненти та підсилює краї. Маска високих частот:
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 зображення;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
.
- Виконайте зворотне зміщення та збережіть у
Рішення
Дякуємо за ваш відгук!
Awesome!
Completion rate improved to 3.45single