频域图像处理基本步骤
傅里叶级数
离散余弦变换
例子
代码语言:javascript复制import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("lena.jpg",0)
#傅里叶变换
dft=cv2.dft(np.float32(img),flags=cv2.DFT_COMPLEX_OUTPUT)
result1=20*np.log(cv2.magnitude(dft[:,:,0],dft[:,:,1]))
dftShift=np.fft.fftshift(dft)
result=20*np.log(cv2.magnitude(dftShift[:,:,0],dftShift[:,:,1]))
#逆变换
ishift=np.fft.fftshift(dftShift)
iimg=cv2.idft(ishift)
iimg=cv2.magnitude(iimg[:,:,0],iimg[:,:,1])
plt.subplot(141)
plt.imshow(img,cmap='gray')
plt.title('original')
plt.axis('off')
plt.subplot(142)
plt.imshow(result1,cmap='gray')
plt.title('dft')
plt.axis('off')
plt.subplot(143)
plt.imshow(result,cmap='gray')
plt.title('dft-shift')
plt.axis('off')
plt.subplot(144)
plt.imshow(iimg,cmap='gray')
plt.title('ifft')
plt.axis('off')
plt.show()
2.
代码语言:javascript复制import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("lena.jpg",0)
f=np.fft.fft2(img)
fshift=np.fft.fftshift(f)
s1=np.log(np.abs(fshift))
plt.subplot(221),plt.imshow(img,'gray'),plt.title('1')
plt.xticks([]),plt.yticks([])
f1shift=np.fft.ifftshift(np.abs(fshift))
img_back=np.fft.ifft2(f1shift)
img_back=np.abs(img_back)
img_back=(img_back-np.amin(img_back))/(np.amax(img_back)-np.amin(img_back))
plt.subplot(222),plt.imshow(img_back,'gray'),plt.title('2')
plt.xticks([]),plt.yticks([])
f2shift=np.fft.ifftshift(np.angle(fshift))
img_back=np.fft.ifft2(f2shift)
img_back=np.abs(img_back)
img_back=(img_back-np.amin(img_back))/(np.amax(img_back)-np.amin(img_back))
plt.subplot(223),plt.imshow(img_back,'gray'),plt.title('3')
plt.xticks([]),plt.yticks([])
s1=np.log(np.abs(fshift))
plt.subplot(224),plt.imshow(img,'gray'),plt.title('4')
plt.xticks([]),plt.yticks([])
plt.show()
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 喜欢就点一点在看