頻域圖像處理基本步驟
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5ybld2avFWYuljNvwlNwYjMzAjNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
傅裡葉級數
離散餘弦變換
例子
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.
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()
複制
後續
如果想了解更多物聯網、智能家居項目知識,可以關注我的項目實戰專欄。
喜歡就點一點在看