1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 用opencv进行图像处理-利用傅里叶变换进行图像的高通滤波和锐化

用opencv进行图像处理-利用傅里叶变换进行图像的高通滤波和锐化

时间:2020-10-05 19:20:31

相关推荐

用opencv进行图像处理-利用傅里叶变换进行图像的高通滤波和锐化

1 利用傅里叶变换高通滤波

import numpy as npimport cv2from matplotlib import pyplot as pltfrom skimage.draw import diskdef fft_in_np(img):img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)f = np.fft.fft2(img) #灰度图像进行傅里叶变换fshift = np.fft.fftshift(f) #把0频信息放到中心magnitude_spectrum = 20 * np.log(np.abs(fshift)) #制作频谱rows, cols = img.shaperow_half, col_half = rows // 2, cols // 2mask = np.ones((rows, cols), dtype=np.uint8) #创建一个maskrr, cc = disk((row_half, col_half), 10)mask[rr, cc] = 0 #把mask中心半径为10的圆盘值成0fshift = fshift * mask #把频域信息的低频mask为0f_ishift = np.fft.ifftshift(fshift) #把0频信息恢复位置img_back = np.fft.ifft2(f_ishift) #反傅里叶变换img_back = np.abs(img_back)plt.subplot(131),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(133),plt.imshow(img_back, cmap = 'gray')plt.title('img_back'), plt.xticks([]), plt.yticks([])plt.show()img = cv2.imread('dqiocaoxfwu31.png')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)fft_in_np(img)

效果如下:

2 利用傅里叶变换锐化增强图像

import numpy as npimport cv2from matplotlib import pyplot as pltfrom skimage.draw import diskdef fft_in_np(img):img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)magnitude_spectrum = 20 * np.log(np.abs(fshift))rows, cols = img.shaperow_half, col_half = rows // 2, cols // 2mask = np.ones((rows, cols))mask = mask * 1.5rr, cc = disk((row_half, col_half), 10)mask[rr, cc] = 1fshift = fshift * maskf_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.subplot(131),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(133),plt.imshow(img_back, cmap = 'gray')plt.title('img_back'), plt.xticks([]), plt.yticks([])plt.show()img = cv2.imread('dqiocaoxfwu31.png')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)fft_in_np(img)

效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。