需要源码和图片集请点赞关注收藏后评论区留言私信~~~
一、Scipy的图像处理
简单的介绍一下SciPy在图像处理方面的应用,如果专业做图像处理当然还是建议使用OpenCV
1 图像平滑
图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法
图像平滑的方法包括:插值方法,线性平滑方法,卷积法等
ndimage.median_filter实现中值滤波
import numpy as np from scipy import ndimage from scipy import misc import matplotlib.pyplot as plt %matplotlib inline image = misc.ascent() aa = plt.subplot(1,3,1) plt.title("title") plt.imshow(image) plt.axis('off') plt.subplot(1,3,2) plt.title("medi_filter") filter = ndimage.median_filter(image,size=10) #使用SciPy的中值滤波处理图片 plt.imshow(filter) plt.axis('off') plt.subplot(1,3,3) plt.title("gausfilter") blurred_face = ndimage.gaussian_filter(image, sigma = 7)#高斯滤波 plt.imshow(blurred_face) plt.axis('off')
2 图像旋转和锐化
图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程
图像锐化就是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰
经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。从频域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰
图像的旋转和锐化
image = misc.ascent() #显示全部图片 plt.subplot(131) plt.title("title") plt.imshow(image) plt.axis('off') plt.subplot(132) rotate = ndimage.rotate(image,60) plt.title("rotate") plt.imshow(rotate) plt.axis('off') #边缘检测 plt.subplot(133) prewitt = ndimage.prewitt(image) plt.title("prewitt") plt.imshow(prewitt) plt.axis('off')
二、Scipy的信号处理
信号处理(signal processing)是指对信号进行提取、变换、分析、综合等处理,以便抽取出有用信息的过程。信号处理基本的内容有变换、滤波、调制、解调、检测以及谱分析和估计等
Python中的scipy.signal模块专门用于信号处理
1 数据重采样
重采样指将数据序列从一个频率转化为另一个频率进行处理的过程。将高频率数据转化为低频率数据为降采样,低频率转化为高频率为升采样。SciPy中的signal.resample()函数可以将信号重采样成n个点
信息采样
import numpy as np import matplotlib.pyplot as plt from scipy import signal t = np.linspace(0, 5, 100) x = np.sin(t) x_resampled = signal.resample(x, 20) plt.plot(t, x) plt.plot(t[::5], x_resampled, 'k*') plt.xlabel('X') plt.ylabel('Y') plt.show()
2 信号的卷积
卷积是两个变量在某范围内相乘后求和的结果。一维卷积常用于序列模型,如自然语言处理领域。二维卷积常用于计算机视觉、图像处理领域
import numpy as np import matplotlib.pyplot as plt digital=np.concatenate((np.zeros(20),np.ones(20),np.zeros(20))) print(digital) norm_h=np.hamming(80)/np.sum(np.hamming(80)) print(norm_h) res=np.convolve(digital,norm_h) plt.plot(digital,color='k',label='digital') plt.plot(norm_h,color='b',label='normal_hamming') plt.plot(res,color='g',label='convolve_result') plt.legend() plt.show()
3 信号的时频分析
信号的表示是信息分析与处理的核心问题之一。在信号分析中,最基本的变量是时间和频率。信号一般用时间作为自变量表示,通过时频变换,信号也可以使用频率作为自变量表示。常用的变换方法有傅里叶变换、小波变换等
SciPy中利用fft方法将信号从时域变换到频率,用ifft方法将频域信号逆变换回时域
信号的傅里叶变换
import numpy as np import matplotlib.pyplot as plt from scipy.fftpack import fft,ifft np.random.seed(971) x=np.arange(200) res=fft(data) data_new=ifft(res) data=np.random.randn(200)+np.sin(x) plt.figure(figsize=(12,5)) plt.subplot(1,3,1) plt.plot(data,linewidth=1,color='k',alpha=0.8) plt.xlabel('orignal signal') plt.subplot(1,3,2) plt.plot(res,linewidth=1,color='k',alpha=0.8) plt.xlabel('FFT signal') plt.subplot(1,3,3) plt.plot(data_new,linewidth=1,color='k',alpha=0.8) plt.xlabel('construct signal') plt.show()
创作不易 觉得有帮助请点赞关注收藏~~~