目录

  • 一、基础知识
  • 二、问题分析
  • 三、效果图
  • 四、代码

一、基础知识

图像去模糊是一个经典的图像复原任务。造成图像模糊的原因有很多,可以主要分为三大类

  • 离焦模糊:场景中的物体处于成像景深范围之外而变得模糊。离焦模糊的去除一般对应着景深的扩展技术。
  • 像差模糊:镜头加工和制造的缺陷造成了物方的一个点在成像平面形成了一个弥散斑
  • 运动模糊:成像过程中相机运动或者场景变化所造成的不同空间位置信息的混叠

而最常见的图像去模糊技术一般都是针对运动模糊的去除,因为运动模糊往往是拍摄者不想引入拍摄图像的。我们本次就简单介绍一下图像运动模糊的形成和去除。

图像运动模糊是由于成像过程中相机运动或者场景变化所造成的不同空间位置信息的混叠。拍摄图像时往往需要一定的曝光时间,如果在这一段曝光时间内投射到传感器上的画面运动超过单个像素尺寸,那么模糊就会出现。曝光时间越长,图像中的模糊往往就剧烈。场景点的运动轨迹累计形成的图像即为模糊核,其记录着在曝光时间内,当前场景点在图像上的能量分布和影响范围。

在网络模型方面,许多其他图像复原任务如降噪、超分辨等以及高层视觉任务中的网络结构都被借鉴过来。许多传统去模糊的方法也被借鉴到去模糊网络中,比如传统去模糊中使用金字塔结构从小尺度到大尺度地迭代去模糊,而多尺度递归的网络结构(如SRN)也被应用到去模糊任务中并取得了不错的效果。借助于网络模型,去模糊方法可以打破传统卷积模型的限制,使得去模糊算法可以同时应对相机运动造成的全局非均匀模糊和场景中物体运动造成的局部模糊。同时基于学习的方法缩短了运行时间,随着终端算力的提升,使得去模糊方法的落地变成了可能。

二、问题分析

模拟现实条件中各种失真导致的图像模糊,同时加入噪声,模拟真实情况,用滤波器(逆滤波、维纳滤波)去处理图片。

三、效果图



四、代码

import matplotlib.pyplot as graph
import numpy as np
from numpy import fft
import math
import cv2# 仿真运动模糊
def motion_process(image_size,motion_angle):PSF = np.zeros(image_size)print(image_size)center_position=(image_size[0]-1)/2print(center_position)slope_tan=math.tan(motion_angle*math.pi/180)slope_cot=1/slope_tanif slope_tan<=1:for i in range(15):offset=round(i*slope_tan)    #((center_position-i)*slope_tan)PSF[int(center_position+offset),int(center_position-offset)]=1return PSF / PSF.sum()  #对点扩散函数进行归一化亮度else:for i in range(15):offset=round(i*slope_cot)PSF[int(center_position-offset),int(center_position+offset)]=1return PSF / PSF.sum()#对图片进行运动模糊
def make_blurred(input, PSF, eps):input_fft = fft.fft2(input)# 进行二维数组的傅里叶变换PSF_fft = fft.fft2(PSF)+ epsblurred = fft.ifft2(input_fft * PSF_fft)blurred = np.abs(fft.fftshift(blurred))return blurreddef inverse(input, PSF, eps):       # 逆滤波input_fft = fft.fft2(input)PSF_fft = fft.fft2(PSF) + eps #噪声功率,这是已知的,考虑epsilonresult = fft.ifft2(input_fft / PSF_fft) #计算F(u,v)的傅里叶反变换result = np.abs(fft.fftshift(result))return resultdef wiener(input,PSF,eps,K=0.01):        #维纳滤波,K=0.01input_fft=fft.fft2(input)PSF_fft=fft.fft2(PSF) +epsPSF_fft_1=np.conj(PSF_fft) /(np.abs(PSF_fft)**2 + K)result=fft.ifft2(input_fft * PSF_fft_1)result=np.abs(fft.fftshift(result))return resultimage = cv2.imread('C:/Users/admin/Desktop/OIP-C.jpg')
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
img_h=image.shape[0]
img_w=image.shape[1]
graph.figure(1)
graph.xlabel("Original Image")
graph.gray()
graph.imshow(image)     #显示原图像graph.figure(2)
graph.gray()
#进行运动模糊处理
PSF = motion_process((img_h,img_w), 60)
blurred = np.abs(make_blurred(image, PSF, 1e-3))graph.subplot(231)
graph.xlabel("Motion blurred")
graph.imshow(blurred)result = inverse(blurred, PSF, 1e-3)   #逆滤波
graph.subplot(232)
graph.xlabel("inverse deblurred")
graph.imshow(result)result=wiener(blurred,PSF,1e-3)     #维纳滤波
graph.subplot(233)
graph.xlabel("wiener deblurred(k=0.01)")
graph.imshow(result)blurred_noisy=blurred + 0.1 * blurred.std() * \np.random.standard_normal(blurred.shape)   #添加噪声,standard_normal产生随机的函数graph.subplot(234)
graph.xlabel("motion & noisy blurred")
graph.imshow(blurred_noisy)      #显示添加噪声且运动模糊的图像result = inverse(blurred_noisy, PSF, 0.1+1e-3)    #对添加噪声的图像进行逆滤波
graph.subplot(235)
graph.xlabel("inverse deblurred")
graph.imshow(result)result=wiener(blurred_noisy,PSF,0.1+1e-3)          #对添加噪声的图像进行维纳滤波
graph.subplot(236)
graph.xlabel("wiener deblurred(k=0.01)")
graph.imshow(result)graph.show()

图像处理之仿真运动模糊复原【使用逆滤波、维纳滤波】相关推荐

  1. 基于matlab的运动模糊图像处理,基于matlab运动模糊图像处理

    基于matlab运动模糊图像处理 基于 MATLAB 的运动模糊图像处 理 提醒: 我参考了文献里的书目和网上的一些代码而完成的,所以误差会比较大,目前 对于从网上下载的模糊图片的处理效果很不好, 这 ...

  2. 图像处理/计算机视觉/ python环境下如何用滤波器(/逆滤波/均值滤波/低通滤波/高通滤波)处理图片【附代码】

    计算机视觉滤波器实操 基础知识 一. 计算机视觉技术中常见的几种滤波器 二.滤波器相关知识 应用一:算术均值.几何均值.谐波逆谐波 一.问题分析 二.结果图 三.代码附录 应用二:维纳滤波,逆滤波 一 ...

  3. 数字图像处理——图像退化(大气湍流模型与运动模糊模型)与图像复原(逆滤波与维纳滤波)

    一.图像退化 一般来说,图像的退化模型可以表示为 其中g(x,y) 表示退化后的图像,h(x,y)表示退化模型,f(x,y)表示原图像,n(x,y)表示噪声. 在频域上面可以表示为 下面介绍常见的两种 ...

  4. 运动模糊图像复原算法实现及应用

    MATLAB图像复原系统 概述 1.1选题背景 从历史上来看,数字图像处理研究有很大部分是在图像恢复方面进行的,包括对算法的研究和针对特定问题的图像处理程序的编写.数字图像处理中很多值得注意的成就就是 ...

  5. 4.3 Python图像处理之图像恢复-无约束滤波器(逆滤波)、有约束滤波器(维纳滤波器)

    4.3 Python图像处理之图像恢复-无约束滤波器(逆滤波).有约束滤波器(维纳滤波器) 文章目录 4.3 Python图像处理之图像恢复-无约束滤波器(逆滤波).有约束滤波器(维纳滤波器) 1 算 ...

  6. 数字图像处理个人练习04--图像复原

    图像复原的基本原理 图像的复原就是要尽可能恢复退化图像的本来⾯⽬,它是沿图像降质的逆向过程进⾏.典型的图像复原是根据图像退化的先验知识建⽴⼀个退化模型,以此模型为础,采⽤各种逆退化处理⽅法进⾏恢复,使 ...

  7. matlab 维纳滤波恢复运动模糊,运动模糊恢复专题

    相关背景知识 1.运动模糊的定义 wiki百科上的定义是:运动模糊或运动模糊(motion blur)是静态场景或一系列的图片像电影或是动画中一样快速移动,使物体产生明显运动痕迹. [图片上传失败.. ...

  8. 两个一样的图像相除会怎么样_【壮凌自动化分析】一种动力电池生产中基于图像运动模糊的速度检测方法...

    一种动力电池生产中基于图像运动模糊的速度检测方法 1.西南大学 电子信息工程学院,重庆 400715) 2.非线性电路与智能信息处理重庆市重点实验室,重庆 400715) 1.当前背景与成熟方法介绍 ...

  9. 图像处理:图像复原与重建之逆滤波、维纳滤波、约束最小二乘滤波——Matlab实现

    参考资料: 陷波滤波器-matlab实现 http://blog.sina.com.cn/s/blog_ebd29d830102wdzw.html 图像复原之约束最小二乘方滤波 https://blo ...

最新文章

  1. 2018python培训-Python学习之路—2018/7/2
  2. 最小生成树的两个性质:
  3. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.69. Vim-7.4...
  4. Oracle 技术集锦
  5. kubernetes不同的命名空间下的容器能通信吗_在Kubernetes环境中,容器间如何进行网络通信?...
  6. SpringCloud实战2-Ribbon客户端负载均衡
  7. redis 字符串基本操作
  8. error: ‘_beginthreadex‘ undeclared (first use in this function); did you mean ‘SDL_beginthread‘?
  9. Atitit 施政策略总结 目录 1. 行政综合方面的策略 2 1.1. 加强宣传无处不在策略 占领各大网络与实体阵地 2 1.2. 装点门面,不花钱或者少花钱的东西体系全部搞起来 2 1.3. 加大
  10. JAVA中的运算规则
  11. Hrbust2294修建传送门(尺取法)
  12. ubuntu16.04 护眼神器Redshift
  13. 进入BeOS的花花世界 系列九
  14. 匆匆一面,此生无言(课余篇)
  15. Python量化投资——股票择时到底能否赚钱?TA-Lib 33种技术指标有效性横向大评比
  16. 注解 @RequiredArgsConstructor与@NonNull系列注解的用法:
  17. usim卡如何换nano卡_5G 超级 SIM 卡发布,小内存手机有福了
  18. 极客时间-左耳听风-程序员攻略-技术资源集散地
  19. Odoo与浪潮合资研发PS Cloud之如何报废产品
  20. 这些年造过的一些轮子

热门文章

  1. 超详细图文保姆级教程:App开发新手入门(二)
  2. M8SDK教程-游戏开发心得(三):DDraw进阶教程-贴图,Alpha和Sprite动画,RPG游戏雏形
  3. 使用Thumbnails等比例压缩图片
  4. C语言处理批量数据的好伙伴——C语言数组的介绍与应用
  5. 基于STM32F1自写移植代码分享系列之0.96寸OLED模块
  6. 新浪微博优秀工具和应用非深度主流试用体验分析推荐
  7. 信息安全——NMAP网络扫描
  8. 浅谈VUE全家桶(Vue、VueX、Vue-Router、axios、Vue-cli)的理解与认识
  9. 为了取一个花名,我爬下了中草药网所有的名字!
  10. ME4012磁盘服务器更换硬盘