点扩散函数

生成点扩散函数,点扩散函数就是运动模糊的退化模型,点扩散函数可以用于逆滤波与维纳滤波

def get_motion_dsf(image_size, motion_angle, motion_dis):PSF = np.zeros(image_size)  # 点扩散函数x_center = (image_size[0] - 1) / 2y_center = (image_size[1] - 1) / 2sin_val = math.sin(motion_angle * math.pi / 180)cos_val = math.cos(motion_angle * math.pi / 180)# 将对应角度上motion_dis个点置成1for i in range(motion_dis):x_offset = round(sin_val * i)y_offset = round(cos_val * i)PSF[int(x_center - x_offset), int(y_center + y_offset)] = 1return PSF / PSF.sum()    # 归一化

示例

PSF = get_motion_dsf(image.shape, 135, 150)

第一个参数为图像大小,第二个参数为模糊的角度,第三参数为运动像素点个数

也可以显示点扩散函数

dst = np.zeros(PSF.shape)
norm_psf = cv2.normalize(PSF, dst, 1.0, 0.0, cv2.NORM_MINMAX)
cv2.imshow('psf', (norm_psf*255).astype(np.uint8))

知道退化模型后,就可以通过逆滤波与维纳滤波进行图像复原

维纳滤波

下面是维纳滤波的函数

def wiener(input,PSF,eps,SNR=0.001):        #维纳滤波,SNR=0.01input_fft=fft.fft2(input)PSF_fft=fft.fft2(PSF) +epsPSF_fft_1=np.conj(PSF_fft) /(np.abs(PSF_fft)**2 + SNR)result=fft.ifft2(input_fft * PSF_fft_1)result=np.abs(fft.fftshift(result))return result

示例

result=wiener(blurred,PSF,1e-2) 

第一个参数为模糊的图像,PSF为点扩散函数,1e-2为平均噪声功率,SNR默认为0.001

逆滤波

逆滤波函数为

def inverse(input, PSF, eps):       input_fft = fft.fft2(input)PSF_fft = fft.fft2(PSF) + eps #噪声功率result = fft.ifft2(input_fft / PSF_fft) #计算F(u,v)的傅里叶反变换result = np.abs(fft.fftshift(result))return result

示例为

result = inverse(blurred, PSF,1e-3)   #逆滤波

同样,传入参数分别为模糊的图像,点扩散函数,平均噪声功率

python 运动模糊 退化模型 点扩散函数 逆滤波与维纳滤波相关推荐

  1. 【youcans 的 OpenCV 例程 200 篇】104. 运动模糊退化模型

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...

  2. 数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)

    文章目录 一.实验目的 二.实验仪器 三.实验原理 四.实验内容 1.逆滤波:选择MATLAB文件夹中的foggy图像作为实验图像. (1)生成退化函数: (2)复原 (a)直接逆滤波 (b)修正函数 ...

  3. 【youcans 的 OpenCV 例程 200 篇】105. 湍流模糊退化模型

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...

  4. 【OpenCV 例程 300 篇】105. 湍流模糊退化模型

    专栏地址:『youcans 的 OpenCV 例程 300篇 - 总目录』 [第 7 章:图像复原与重建] 104. 运动模糊退化模型 105. 湍流模糊退化模型 [youcans 的 OpenCV ...

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

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

  6. blender python运动模糊 ob对象尺寸

    目录 blender python 获取对象尺寸 blender python 隐藏对象 blender python运动模糊例子 blender python 获取对象尺寸 import bpy# ...

  7. 图像处理之仿真运动模糊复原【使用逆滤波、维纳滤波】

    目录 一.基础知识 二.问题分析 三.效果图 四.代码 一.基础知识 图像去模糊是一个经典的图像复原任务.造成图像模糊的原因有很多,可以主要分为三大类 离焦模糊:场景中的物体处于成像景深范围之外而变得 ...

  8. 第5章 Python 数字图像处理(DIP) - 图像复原与重建14 - 逆滤波

    标题 逆滤波 逆滤波 逆滤波 逆滤波 图像的退化函数已知或者由前面的方法获取退化函数,则可以直接逆滤波 F^(u,v)=G(u,v)H(u,v)(5.78)\hat{F}(u,v) = \frac{G ...

  9. 基于matlab的退化图像复原(二)------逆滤波复原

    差不多就是这个理论,傅里叶变换之后除掉退化函数的傅里叶变换,就变回来了. 说是这么说,写出来就是这样.手写公式简单得多,人懒就是任性. matlab代码. clc I=imread('src.png' ...

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

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

最新文章

  1. Hibernate(九)HQL查询
  2. boost::mpi模块实现scan集合的测试
  3. Linux小细节-1
  4. resultMap1_自定义结果映射规则
  5. 图书馆管理系统用户端心得
  6. php渐变字,jQuery_jQuery实现的立体文字渐变效果,先截两个图看看: 效果很 - phpStudy...
  7. cpu占用100_Java项目服务器cpu占用100%解决办法
  8. 小白学数据分析-----数据指标 累计用户数的使用
  9. sqlmap 注入方式、使用总结
  10. HTML5学习笔记简明版(8):新增的全局属性
  11. 【渝粤教育】电大中专微生物与寄生虫基础_1作业 题库
  12. mybatis配置sql超时时间
  13. 最顶尖的12个IT技能
  14. 视频p2p php,m3u8视频播放器集成p2p加速源码分享
  15. Chrome浏览器所有页面崩溃
  16. 裁剪用C语言,多边形裁剪
  17. 读《Ideal MHD》(1)-磁流体力学方程组推导
  18. DC算法竞赛——员工离职预测
  19. 硬件知识--单片机高精度电流测量电路
  20. SQL Server 2012内部原理及故障排除(专栏)

热门文章

  1. win7计算机iis,win7系统如何打开iis管理器|win7系统打开iis管理器的方法
  2. java数字转读音_java 数字转汉语读音的程序
  3. 睿智的目标检测7——yolo3详解及其预测代码复现
  4. HDMI 2.0高速电平转换芯片——LK361S20
  5. K8S coreDNS部署及简单验证
  6. 计算机多道程序设计是指什么,多道程序设计是什么意思?
  7. pdf文件的预览——几种方式实现——技能提升
  8. SIM800L 模块 使用AT命令打电话
  9. mysql数据库表中重命名语句_mysql数据库重命名sql语句
  10. 客快物流大数据项目(一):物流项目介绍和内容大纲