利用scipy库处理模糊图片

一,使用傅里叶变换处理模糊图片
傅里叶变换是将表示值的值转换为表示变化的值(大概应该是吧)
原图利用scipy库处理模糊图片_第1张图片
观察图片发现白色像素块较多。可利用傅里叶变换转换后将变化较大的值置为0

导入使用模块

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft2,ifft2

使用plt读取图片
moon = plt.imread(’./img/moonlanding.png’)

查看图片
plt.imshow(moon,cmap=‘gray’)

查看图片数据
moon

进行傅里叶变换
moon_fft2 = fft2(moon)
moon_fft2

找出变换较大的值将其置为0
cond = np.abs(moon_fft2) > 1e3
moon_fft2[cond] = 0

反傅里叶变换。重新变回表示值的值
moon_ifft2 = ifft2(moon_fft2)
moon_ifft2

因为是经过傅里叶变化后复数。取实数部分作为结果值
moon_clear = np.real(moon_ifft2)
moon_clear

展示图片
plt.figure(figsize=(12,8))
plt.imshow(moon_clear,cmap=‘gray’)

保存
plt.imsave(’./img/moon_fft2.png’,moon_clear,cmap=‘gray’)

moon_fft2 = fft2(moon)
cond = (np.abs(moon_fft2)>1e3)
moon_fft2[cond] = 0
moon_ifft2 = ifft2(moon_fft2)
moon_clear = moon_ifft2.real
plt.imshow(moon_clear,cmap='gray')
plt.imsave('./img/moon_fft2.png',moon_clear,cmap='gray')

原图
利用scipy库处理模糊图片_第2张图片
转化后的图片
利用scipy库处理模糊图片_第3张图片

二、使用图片降噪方法过滤噪声

高斯滤波
中值滤波
维纳滤波

导入模块

import matplotlib.pyplot as plt
import scipy.ndimage as ndimage
import scipy.signal as signal

导入图片

moon = plt.imread('./img/moonlanding.png')

高斯滤波

moon_gaosi = ndimage.gaussian_filter(moon,2)
plt.imshow(moon_gaosi,cmap='gray')

保存图片

plt.imsave('./img/moon_gaosi.png',moon_gaosi,cmap='gray')

moon_gaosi = ndimage.gaussian_filter(moon,sigma)中sigma值可以根据效果调试设置
高斯滤波处理后图片
利用scipy库处理模糊图片_第4张图片

中值滤波同高斯滤波

moon_median = ndimage.median_filter(moon,6)
plt.imshow(moon_median,cmap='gray')

保存图片

plt.imsave('./img/moon_median.png',moon_median,cmap='gray')

中值滤波效果不甚好
利用scipy库处理模糊图片_第5张图片

不同于高斯滤波与中值滤波。维纳滤波所依赖库不是scipy.ndimage而是scipy.signal
使用方面相似

moon_wiener = signal.wiener(moon,5)
plt.imshow(moon_wiener,cmap='gray')

保存图片

plt.imsave('./img/moon_wiener.png',moon_wiener,cmap='gray')

维纳滤波
利用scipy库处理模糊图片_第6张图片

你可能感兴趣的:(jupyter)