图像模糊处理的实现
包括有:均值模糊,高斯模糊,运动模糊
实质为使用滤波器算子对图像每个像素点进行卷积处理,改变像素值,实现图像的模糊化。

一.均值模糊

核心为使用均值滤波器。

# 图像模糊处理
# 均值模糊 box blurimport cv2
import numpy as np
import matplotlib.pyplot as pltif __name__ == "__main__":image = cv2.imread('Lena.jpg')image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 此为均值模糊# (30,1)为一维卷积核,指在x,y方向偏移多少位dst1 = cv2.blur(image, (30, 1))# 此为中值模糊,常用于去除椒盐噪声dst2 = cv2.medianBlur(image, 15)# 自定义卷积核,执行模糊操作,也可定义执行锐化操作kernel = np.ones([5, 5], np.float32)/25dst3 = cv2.filter2D(image, -1, kernel=kernel)plt.subplot(2, 2, 1)plt.imshow(image)plt.axis('off')plt.title('Offical')plt.subplot(2, 2, 2)plt.imshow(dst1)plt.axis('off')plt.title('Box blur')plt.subplot(2, 2, 3)plt.imshow(dst2)plt.axis('off')plt.title('median blur')plt.subplot(2, 2, 4)plt.imshow(dst3)plt.axis('off')plt.title('defined blur')plt.show()

效果展示:实际上这里使用了均值滤波器、中值滤波器和一个自定义卷积核的滤波器来比较效果。

二.高斯模糊

# 图像模糊处理
# 高斯模糊 gaussian blur
# 使用自编写高斯噪声及自编写高斯模糊函数与自带高斯函数作效果对比import cv2
import numpy as np
import matplotlib.pyplot as pltdef clamp(pv):if pv > 255:return 255if pv < 0:return 0else:return pvdef gaussian_noise(image):        # 加高斯噪声h, w, c = image.shapefor row in range(h):for col in range(w):s = np.random.normal(0, 20, 3)b = image[row, col, 0]   # blueg = image[row, col, 1]   # greenr = image[row, col, 2]   # redimage[row, col, 0] = clamp(b + s[0])image[row, col, 1] = clamp(g + s[1])image[row, col, 2] = clamp(r + s[2])dst = cv2.GaussianBlur(image, (15, 15), 0)  # 高斯模糊return dst, imageif __name__ == "__main__":src = cv2.imread('Lena.jpg')plt.subplot(2, 2, 1)plt.imshow(src)plt.axis('off')plt.title('Offical')output, noise = gaussian_noise(src)cvdst = cv2.GaussianBlur(src, (15, 15), 0)   # 高斯模糊plt.subplot(2, 2, 2)plt.imshow(noise)plt.axis('off')plt.title('Gaussian Noise')plt.subplot(2, 2, 3)plt.imshow(output)plt.axis('off')plt.title('Gaussian Blur')plt.subplot(2, 2, 4)plt.imshow(cvdst)plt.axis('off')plt.title('defined blur by opencv')plt.show()

结果展示:这里使用了自编写的高斯滤波器和opencv的高斯滤波器来对比效果。

三.运动模糊

使用自定义的卷积核进行卷积计算,实现运动模糊效果。

# 图像模糊处理
# 运动模糊,亦称动态模糊,motion blur
# 运动模糊:由于相机和物体之间的相对运动造成的模糊import numpy as np
import cv2
import matplotlib.pyplot as pltdef motion_blur(image, degree=12, angle=45):image = np.array(image)# 这里生成任意角度的运动模糊kernel的矩阵, degree越大,模糊程度越高M = cv2.getRotationMatrix2D((degree / 2, degree / 2), angle, 1)motion_blur_kernel = np.diag(np.ones(degree))motion_blur_kernel = cv2.warpAffine(motion_blur_kernel, M, (degree, degree))motion_blur_kernel = motion_blur_kernel / degreeblurred = cv2.filter2D(image, -1, motion_blur_kernel)# convert to uint8cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)blurred = np.array(blurred, dtype=np.uint8)return blurredif __name__ == "__main__":img = cv2.imread('Lena.jpg')dst = motion_blur(img)plt.subplot(1, 2, 1)plt.imshow(img)plt.axis('off')plt.title('Offical')plt.subplot(1, 2, 2)plt.imshow(dst)plt.axis('off')plt.title('Motion blur')plt.show()

结果展示:

python 图像模糊处理实现相关推荐

  1. PIL:处理图像的好模块

    介绍 PIL是一个专门用来处理图像的模块,可以对图象进行各种各样的变换 打开一张图片 python from PIL import Image# 调用Image下的open方法,即可打开一张图片 # ...

  2. Python使用过滤器(filter)进行图像模糊处理

    Python使用过滤器(filter)进行图像模糊处理 目录 Python使用过滤器(filter)进行图像模糊处理 #原始图像

  3. python图像锐化_Python图像处理介绍--图像模糊与锐化

    欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...

  4. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...

  5. python 图片锐化_Python图像处理介绍--图像模糊与锐化

    欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...

  6. 用Python进行图像模糊处理和特征提取

    在本文中,我将带您了解图像处理的一些基本功能.特征提取.但是这里我们需要更深入的数据清理.但是数据清理是在数据集,表格,文本等上完成的.如何在图像上完成? 导入图像 用python导入图像很容易.以下 ...

  7. 基于微软开源深度学习算法,用 Python 实现图像和视频修复

    ‍‍ 作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...

  8. Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

    作者 | 杨秀璋,责编 | 夕颜 题图  | 视觉中国 出品 | CSDN博客 本篇文章主要讲解Python调用OpenCV实现图像平滑,包括四个算法:均值滤波.方框滤波.高斯滤波和中值滤波.全文均是 ...

  9. 实战:使用 Python 和 OpenCV 创建自己的“CamScanner”

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小伙伴们有没有想过"CamScanner"如何 ...

  10. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

最新文章

  1. 复原所有面板设置+剪切板
  2. 高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位
  3. 数据结构与算法——二分查找与二叉查找树汇总整理
  4. 完美收官!java程序内存溢出找原因
  5. Java微信运动步数排序设计_微信小程序仿微信运动步数排行-交互
  6. Elasticsearch地理位置
  7. C++基础学习笔记:第一章、第二章
  8. Linux下mail服务配置(RHEL5)
  9. fiddler自定义显示目标IP和时间
  10. iOS开发中常用的宏
  11. python 找出日期_Python-在字符串中查找日期
  12. SSM(SpringBoot+SpringMVC+Mybatis):班委信息管理附有GIF动图,博主可免费答疑
  13. mysql sql注入工具下载_超级SQL注入工具【SSQLInjection】
  14. 第十八章 数据库服务端设置及操作
  15. 6.26 Python小记**args** kwargs
  16. SqlServer的填充因子
  17. zoj 1582 Careless Tony(水!)
  18. 袋式过滤器 - - 过滤与分离的基本原理,结构和布局的控制袋式过滤器
  19. 消防工程师 6 干粉灭火系统 7.1 泡沫灭火系统-组件
  20. DCN DCSW-6028-pro 内部portal认证

热门文章

  1. 考研数据结构(3)笔记
  2. 网易云音乐ncm格式转换为mp3
  3. 数学建模 员工指派问题 Lingo求解优化问题
  4. mysql数据库中文选什么数据类型_Mysql 数据类型及选择原则
  5. 大数据毕设/课设 - 基于大数据的客流量数据可视化平台
  6. 网课查课插件 支持 60类型+ 彩虹查课插件 网络查课查询
  7. 新华三杯考前突击---Day3---大数据平台技术篇
  8. c语言从入门到精通真垃圾,从入门到精通的C语言(吐血量)
  9. Java面试回忆录:java电子书免费
  10. Latex写作学习——(大学生数学建模论文模板)