Обработка изображения с помощью преобразования Фурье
На вход поступает ихображение в формате RGB. Необходимо его обработать с помощью преобразования Фурье используя библиотеку. Далее наименьшие значения коофицентов(например, <=5) обнуляются и происходит обратное преобразование. В результате мы должны выделить детали на изображении.
def fourier(img_rgb):
plt.figure(figsize=(6.4*2, 1.8*2), constrained_layout=False)
img_с1 = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
img_c2 = np.fft.fft2(img_с1)
# обрабатываем второе изображение. Берем [спектральный]коофицент, если он меньше нашего значения(например, 5), то зануляем(0). Выводим новое изображение.
img_c2[abs(img_c2) <= 0.5] = 0.0
img_c4 = np.fft.ifft2(img_c2)
img_c5 = img_с1 - img_c4
plt.subplot(151), plt.imshow(img_с1, "gray"), plt.title("Original Image")
plt.subplot(152), plt.imshow(np.log(1+np.abs(img_c2)), "gray"), plt.title("Spectrum")
plt.subplot(153), plt.imshow(np.log(1+np.abs(img_c4)),"gray"), plt.title("Image after Fourier")
plt.show()
Однако, получается, что на изображении выделяются помехи, а детали практически не видны.
Изображение Лена обработанное с помощью Фурье преобразования. Обнулены спектральные коофициенты, которые <= 5, сделано обратное преобразование и выделены детали изображения:
Правильно выполнено Фурье преобразование?
Источник: Stack Overflow на русском