电镜作业2的脚本版本

在终端输入:

python 高斯低通滤波.py -i zhn.jpg -d 1.6667

1。正常不需要前面写个python,但是cv2的库需要我们自己去导入,要给他一个环境变量的指明

2. 文件要和脚本放到同一文件夹或给它正确的路径

脚本代码如下:

#Author:zhanghaonan
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.image as mpimg

def GaussianLowFilter(image,d):

    f = np.fft.fft2(image)
    fshift = np.fft.fftshift(f)
    s1 = np.log( np.abs( fshift ) )
    def make_transform_matrix(d):
        transfor_matrix = np.zeros(image.shape)
        center_point = tuple(map(lambda x:(x-1)/2,s1.shape))
        for i in range(transfor_matrix.shape[0]):
            for j in range(transfor_matrix.shape[1]):
                def cal_distance(pa,pb):
                    from math import sqrt
                    dis = sqrt((pa[0]-pb[0])**2+(pa[1]-pb[1])**2)
                    return dis
                dis = cal_distance(center_point,(i,j))
                transfor_matrix[i,j] = np.exp(-(dis**2)/(2*(d**2)))
        return transfor_matrix
    d_matrix = make_transform_matrix(d)
    new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift*d_matrix)))
    return new_img
def do_it(filename,distance):
    img= cv.imread(filename,0)#把你文件名输入进来,尾缀必须有.jpg或.png
    img_d1=GaussianLowFilter(img,distance)
    plt.subplot(111)
    plt.axis("off")
    plt.imshow(img_d1,cmap="gray")
    plt.title('Gaussianlow')
    plt.show()
if __name__ == '__main__':

    import argparse

    parser = argparse.ArgumentParser(
        description='高斯滤波' ,
        formatter_class=argparse.RawTextHelpFormatter
    )

    parser.add_argument( '-i' , '--input' , help='输入你的照片路径' )
    parser.add_argument( '-d' , '--distance' , help='低通滤波大小(default = 1)',type=float )
    parser.add_argument( '-v' , '--version' , action='version' , version='v. 1.0' )
    args = parser.parse_args()
    if not args.input:
        print( '{0}\nPlease provide an input file.\n{0}'.format( 50 * '-' ) )
        parser.print_help()
        quit()
    if not args.distance:
        args.distance=1
    do_it(args.input,args.distance)

 

posted @ 2019-09-21 13:15  Raymone1125  阅读(225)  评论(0编辑  收藏  举报