zoukankan      html  css  js  c++  java
  • 图像运动模糊

    一. motion blur

            运动模糊是我们在日常生活中很常见的一种模糊。当我们按下快门拍照时,如果照片里的事物(或者我们的相机)正在运动的话,我们拍出的照片就会产生运动模糊。


    二. motion filter


    图1:大小为3*3,对角线方向上的运动模糊算子 ↑  
     

    图2:大小为5*5,竖直方向上的运动模糊算子 ↑
     

    使用 图2 这个5*5的竖直方向运动模糊算子作用于清晰图像后产生的图像 ↑

    三. python实现3*3的对角线方向的运动模糊滤波器(图1滤波器)

    import cv2
    
    import numpy as np
    
    # motion filter
    
    def motion_filter(img, K_size=3):
    
        H, W, C = img.shape
    
        # Kernel
    
        K = np.diag( [1] * K_size ).astype(np.float)
    
        K /= K_size
    
        # zero padding
    
        pad = K_size // 2
    
        out = np.zeros((H + pad * 2, W + pad * 2, C), dtype=np.float)
    
        out[pad: pad + H, pad: pad + W] = img.copy().astype(np.float)
    
        tmp = out.copy()
    
        # filtering
    
        for y in range(H):
    
            for x in range(W):
    
                for c in range(C):
    
                    out[pad + y, pad + x, c] = np.sum(K * tmp[y: y + K_size, x: x + K_size, c])
    
        out = out[pad: pad + H, pad: pad + W].astype(np.uint8)
    
        return out
    
    # Read image
    
    img = cv2.imread("../paojie.jpg")
    
    # motion filtering
    
    out = motion_filter(img, K_size=3)
    
    # Save result
    
    cv2.imwrite("out.jpg", out)
    
    cv2.imshow("result", out)
    
    cv2.waitKey(0)
    
    cv2.destroyAllWindows()

    四. 上面程序的输出结果:


    3*3的对角线方向运动模糊算子模糊后的图像 ↑
     

    原图像 ↑

    五. 参考内容:

      https://www.jianshu.com/p/c1ae53060a9e

  • 相关阅读:
    C++ 构造函数初始化列表
    虚函数
    thread 学习
    vim学习笔记
    Python重载比较运算符
    python使用插入法实现链表反转
    【好文转】Python中yield的理解与使用
    【转】Python中自定义可迭代对象
    linux安装python3.6.6和新建虚拟环境
    【转】Python 并行分布式框架 Celery
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12502192.html
Copyright © 2011-2022 走看看