Scippy(科学計算キット)


記事の目次
  • フーリエ変換を使用してノイズを除去する
  • matplotlib.pylotで円を描きます.
  • Scripyファイル入出力
  • 書き込み配列ファイル
  • 読み書き画像
  • [pillow]https://pillow.readthedocs.io/en/latest/)画像処理
  • scipyのndimageを使って画像を処理する
  • フーリエ変換を使ってノイズを除去します.
    コードはjupyter notebookの写真に基づいてリンクします.
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy import fftpack
    %matplotlib inline
    #              
    img = plt.imread('data/moolanding.png')
    #     
    plt.imshow(img)
    
    #            ,  (   )--->    (      )——>            ,    
    img_fft = fftpack.fft2(img)#         ,      
    #              
    
    #    np.where(condition, x, y)   condition   x,   ,  y
    #    800       0,800      ,                  
    img_filter = np.where(np.abs(img_fft)>8e2,0,img_fft)
    #             ,       ,      
    img_result = np.real(moon_filter)
    #     
    plt.figure(figsize=(12,9))
    #         
    plt.imshow(img_result,cmap='gray')
    
    matplotlib.pylotを使って円を描きます.
    import matplotlib.pyplot as plt
    #       :(x-a)**2+(y-b)**2 = R**2
    #          1,       
    x = np.linspace(-1,1,1000) #  -1 1  1000 
    y = (1-x**2)**0.5 #   y 
    #           
    plt.plot(x,  y)
    #         
     plt.plot(x,y,x,-y)
    
    #       
    import scipy.integrate as integrate
    
    #          ,deviation      
    #             
    half_areas,deviation = integrate.quad(lambda x :(1-x**2)**0.5, -1, 1)
    half_areas
    
    Scripyファイル入出力
    読み書き配列ファイル
    from scipy import io as spio
    #       img_result
    #         .mat,         
    spio.savemat('moon.mat',{'moon':img_result})
    #   io.loadmat()  .mat  
    data = spio.loadmat('moon.mat')
    data
    
    絵を読み、書きます
    画像の位置
    import imageio
    #   
    cat = imageio.imread('data/cat.jpg')
    #  
    imageio.imwrite('cat.jpg',cat)
    #     
    import skimage.transform as st
    # mode :{'constant', 'edge', 'symmetric', 'reflect', 'wrap'}
    #       
    cat_rotate = st.rotate(cat, angle=90,mode='wrap')
    plt.imshow(cat_rotate)
    # skimage.transform            ,   1.2.0           
    #     Pillow       
    
    pillow画像処理
    from PIL import Image,ImageFilter
    cat = Image.open('data/cat.jpg')
    #       
    cat
    #  cat                ,
    # ImageFilter.     tab      
    cat.filter(ImageFilter.SHARPEN)
    # pillow python        ,         ,        ,       
    
    scipyのndimageを使って画像を処理します.
    写真のリンク
    from matplotlib import pyplot as plt
    from scipy import ndimage
    face = plt.imread('data/huanxiong.jpg')
    plt.imshow(face)
    # shift       ,              
    #               {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}
    face_shift = ndimage.shift(face, (200,300,0), mode="wrap")
    plt.imshow(face_shift)
    
    #      rotate,180 
    face_rotate = ndimage.rotate(face,angle=180,model='reflect')
    #     ,zoom ,          ,
    face_zoom = plt.imread('data/huanxiong.jpg',gray=True)
    face_zoom = ndimage.zoom(face,zoom(0.3,0.6))
    plt.imshow(face_zoom,cmap='gray)
    #       ,               
    face_noise = face.copy().astype(np.float64)
    face_noise+=*face_noise.std()*np.random.randn(*face.shape)
    plt.imshow(face_noise,cmap='gray')
    
    #     sigma:        
    face_gaussian = ndimage.gaussian_filter(face_noise, sigma=1)
    
    #       size:                     ,          
    face_median = ndimage.median_filter(face_noise, size=5)
    # signal    mysize:       
    
    import scipy.signal as signal
    face_wiener = signal.wiener(face_noise, mysize=4)