• scipy-图片处理


    图片消噪

    scipy.fftpack模块用来计算快速傅里叶变换

    图片是二维数据,注意使用fftpack的二维转变方法

    from scipy.fftpack import fft2, ifft2

    1.使用傅里叶变换把图片转化为频率

    2.频率超过一定的阈值,我们认为是噪点,赋值为0

    3.把频率还原为图片.

    4.显示最终的效果.

    moon_fft = fft2(moon) # 傅里叶变换, 图片转化为频率
    np.abs(moon_fft)

    threshold = 8e2  # 设置过滤的阈值 ,  
    res = np.where(np.abs(moon_fft) > threshold, 0 , moon_fft) # 频率绝对值 超过该阈值,认为是噪点,赋值为0

    moon_ifft = ifft2(res)   # 傅里叶逆变换 将过滤后的结果转换回来
    moon_clean = np.real(moon_ifft)   # 只取实部

     

    数值积分,求解圆周率

    import scipy.integrate as integrate

    half_pi, deviation = integrate.quad(lambda x: (1-x ** 2)**0.5, -1, 1) # 半个pi , 误差

     

    Scipy文件输入/输出

    导包: from scipy import io / import scipy.io as io

    io.savemat()

    使用scipy中的io.savemat()保存数组 文件格式是.mat,标准的二进制文件

    io.savemat('moon_clean.mat', mdict={'data': moon_clean})
    io.loadmat()

    使用io.loadmat()读取数据

    moon_mdict = spio.loadmat('moon_clean.mat')

    moon_clean = moon_mdict['data']

     

    PIL

    from PIL import Image,ImageFilter

    cat = Image.open('../data/cat.jpg')

    cat.filter(ImageFilter.BLUR) # 模糊处理

    cat.filter(ImageFilter.CONTOUR) # 轮廓

     

    图片处理

    from scipy import ndimage

    ndimage用于处理多维图片
    shift移动坐标
    # mode : {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}
    face_shift = ndimage.shift(face, (200,300,0),mode='constant')
    rotate旋转图片

    face_rotate = ndimage.rotate(face,90, mode='mirror') # angle : 旋转角度

    zoom缩放图片

    face_zoom = ndimage.zoom(face,(2,3)) # 使用灰白图片

    切割图片

    face_split = face[200:500,500:800]

    图片进行过滤

    添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理 使图片变清楚

    使用灰色图片添加噪声

    face_noise = face.copy().astype(np.float64) face_noise += face_noise.std() * 0.5 * np.random.randn(*face.shape)

    • 高斯滤波sigma:高斯核的标准偏差

    face_gaussian = ndimage.gaussian_filter(face_noise,sigma=1)  # sigma 标准差   越大范围取得越大,反之
    • 中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入

    face_median = ndimage.median_filter(face_noise,size=4)
    • signal维纳滤波mysize:滤镜尺寸的标量

    face_wiener = wiener(face_noise, mysize=5)

     

  • 相关阅读:
    mysql必知必会+菜鸟(复习sql)
    SpringBoot + Netty初体验
    [Tips] Mac 下vs code无法找到latex命令
    Java中常见集合循环遍历方法
    Java编程的IO操作
    pass,Iass,saas以及中台之间的联系
    记录一些常用的指令
    多线程Future Task
    Sql Server 表被锁?查看 高CPU sql ?
    发送下载文件的请求接后端的文件流
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/11921654.html
Copyright © 2020-2023  润新知