Низькочастотні та Високочастотні Фільтри
Однією з ключових переваг перетворення Фур'є є можливість виконання високочастотної та низькочастотної фільтрації.
Після застосування перетворення Фур'є:
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