Skip to content

Commit d85391a

Browse files
authored
Add files via upload
1 parent 01b48bc commit d85391a

4 files changed

Lines changed: 75 additions & 0 deletions

File tree

blog22-fft/blog22-image02.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
import cv2 as cv
3+
import numpy as np
4+
from matplotlib import pyplot as plt
5+
6+
#读取图像
7+
img = cv.imread('lena.png', 0)
8+
9+
#傅里叶变换
10+
f = np.fft.fft2(img)
11+
fshift = np.fft.fftshift(f)
12+
res = np.log(np.abs(fshift))
13+
14+
#傅里叶逆变换
15+
ishift = np.fft.ifftshift(fshift)
16+
iimg = np.fft.ifft2(ishift)
17+
iimg = np.abs(iimg)
18+
19+
#展示结果
20+
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
21+
plt.axis('off')
22+
plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image')
23+
plt.axis('off')
24+
plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image')
25+
plt.axis('off')
26+
plt.show()

blog22-fft/blog22-image03.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- coding: utf-8 -*-
2+
import numpy as np
3+
import cv2
4+
from matplotlib import pyplot as plt
5+
6+
#读取图像
7+
img = cv2.imread('lena.png', 0)
8+
9+
#傅里叶变换
10+
dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)
11+
12+
#将频谱低频从左上角移动至中心位置
13+
dft_shift = np.fft.fftshift(dft)
14+
15+
#频谱图像双通道复数转换为0-255区间
16+
result = 20*np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]))
17+
18+
#显示图像
19+
plt.subplot(121), plt.imshow(img, cmap = 'gray')
20+
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
21+
plt.subplot(122), plt.imshow(result, cmap = 'gray')
22+
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
23+
plt.show()

blog22-fft/blog22-image04.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
import numpy as np
3+
import cv2
4+
from matplotlib import pyplot as plt
5+
6+
#读取图像
7+
img = cv2.imread('lena.png', 0)
8+
9+
#傅里叶变换
10+
dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)
11+
dftshift = np.fft.fftshift(dft)
12+
res1= 20*np.log(cv2.magnitude(dftshift[:,:,0], dftshift[:,:,1]))
13+
14+
#傅里叶逆变换
15+
ishift = np.fft.ifftshift(dftshift)
16+
iimg = cv2.idft(ishift)
17+
res2 = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])
18+
19+
#显示图像
20+
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
21+
plt.axis('off')
22+
plt.subplot(132), plt.imshow(res1, 'gray'), plt.title('Fourier Image')
23+
plt.axis('off')
24+
plt.subplot(133), plt.imshow(res2, 'gray'), plt.title('Inverse Fourier Image')
25+
plt.axis('off')
26+
plt.show()

blog22-fft/lena.png

222 KB
Loading

0 commit comments

Comments
 (0)