@不要在奋斗的年纪 选择安逸

均值模糊

  • 中值模糊
  • 自定义模糊
  • 意义与应用场景

模糊的基本原理:

1、基于离散卷积

2、定义好每个卷积核

3、不同卷积核得到不同的卷积效果

4、模糊是卷积的一种表象

#均值模糊 (2,8)高模糊2 宽模糊8
def blur_demo(image):
dst = cv.blur(image,(2,8))
cv.imshow('blur_demo',dst) #中值模糊 适合椒盐噪声去噪
def median_blur_demo(image):
dst = cv.medianBlur(image,5)
cv.imshow('median_blur_demo',dst) #自定义模糊
def customer_blur_demo(image):
#定义卷积核---均值模糊的效果
# kernel = np.ones([5,5],np.float32/25)
# 定义卷积核---锐化
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
dst = cv.filter2D(image,-1,kernel=kernel)
cv.imshow('customer_blur_demo',dst)

高斯噪点

高斯分布的概率密度函数

numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数的意义为:

loc:float

概率分布的均值,对应着整个分布的中心center

scale:float

概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高

size:int or tuple of ints

输出的shape,默认为None,只输出一个值,可以指定输出值个数返回列表

我们更经常会用到np.random.randn(size)所谓标准正太分布(μ=0, σ=1),对应于np.random.normal(loc=0, scale=1, size)

n = np.random.normal(0,8,4)
print(n)
##[ -5.65830268 4.27277753 2.97616802 -15.1577604 ]

#定义高斯噪声
def gaussian_noise(image):
h,w,ch = image.shape
for row in range(h):
for col in range(w):
s = np.random.normal(0,20,3) #均值为0 方差为20 输出3个值
b = image[row,col,0] #blue
g = image[row,col,1] #green
r = image[row,col,2] #red
# 给blue层加上正态分布噪点
image[row,col,0] = clamp(b + s[0])
image[row,col,1] = clamp(g + s[1])
image[row,col,2] = clamp(r + s[2])
cv.imshow('noise image',image)

"""高斯模糊:这里(5, 5)表示高斯矩阵的长与宽都是5 标准差取6,当取尺寸(5,5)时标准差失效、当取尺寸(0,0)时标准差有效。并且高斯矩阵的尺寸越大或者标准差越大,处理过的图像模糊程度越大"""
dst = cv.GaussianBlur(src,(5,5),6)
cv.imshow('Gaussian Blur1',dst)
dst = cv.GaussianBlur(src,(0,0),10)
cv.imshow('Gaussian Blur2',dst)

EPF(Edge Preserver Filter)边缘保留滤波

高斯模糊只考虑了权重,只考虑了像素空间的分布,没有考虑像素值和另一个像素值之间差异的问题,如果像素间差异较大的情况下(比如图像的边缘),高斯模糊会进行处理,但是我们不需要处理边缘,要进行的操作就叫做边缘保留滤波(EPF)

知识点:边缘轮廓差异较大的时候得到保留、

案例:

"""
#EPF-高斯双边滤波
其中各参数所表达的意义:
src:原图像;
d:像素的邻域直径,可有sigmaColor和sigmaSpace计算可得;
sigmaColor:颜色空间的标准方差,一般尽可能大;
sigmaSpace:坐标空间的标准方差(像素单位),一般尽可能小。
"""
def bi_demo(image):
dst = cv.bilateralFilter(image,0,150,10)
cv.imshow('bilateralFilter',dst) """
#EPF-均值偏移滤波
其中各参数所表达的意义:
src:原图像;
sp:空间窗的半径(The spatial window radius);
sr:色彩窗的半径(The color window radius);
注意: 通过均值迁移来进行边缘保留滤波有时会导致图像过度模糊
"""
def shift_demo(image):
dst = cv.pyrMeanShiftFiltering(image,10,50)
cv.imshow('pyrMeanShiftFiltering',dst)

[python-opencv] 模糊操作的更多相关文章

  1. opencv python:模糊操作

    均值模糊 中值模糊 自定义模糊 模糊操作的基本原理 基于离散卷积 定义好每个卷积核 不同卷积核得到不同的卷积效果 模糊是卷积的一种表象 blur cv2.blur(image, (1, 3)) 第二个 ...

  2. python实现模糊操作

    目录: (一)模糊或平滑与滤波的介绍 (二)均值模糊 (1) 原理 (2)代码实现-----均值模糊函数blur() (三)中值模糊------mediaBlur函数 (四)高斯模糊------Gau ...

  3. Python openCV基础操作

    1.图片加载.显示和保存 import cv2 # 读取图片 img = cv2.imread("img1.jpg") # 生成灰色图片 imgGrey = cv2.imread( ...

  4. Python+OpenCV图像处理(七)—— 滤波与模糊操作

    过滤是信号和图像处理中基本的任务.其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息.过滤可以移除图像中的噪音.提取感兴趣的可视特征.允许图像重采样等等.频域分析将图像分成从低频到高频 ...

  5. 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化

    一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...

  6. python opencv show图片,debug技巧

    debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...

  7. python - opencv 的一些小技巧备忘

    python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...

  8. python anaconda 常用操作;conda 命令指南

    在使用 python anaconda时,经常会用到很多常用操作,记录下来,方便以后更好地使用: conda: Conda既是一个包管理器又是一个环境管理器.你肯定知道包管理器,它可以帮你发现和查看包 ...

  9. python+opencv实现车牌定位

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...

  10. Python OpenCV图片转视频 工具贴(三)

    Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...

随机推荐

  1. mysql5.6.34-debug Source distribution在树莓派下编译的几个错误

    raspberrypi下编译mysql5.6 debug版源码. 1. 启动错误 和mysqld相关的文件及文件夹权限必须设置为mysql用户可读可写可执行,特别是/var/run/mysqld/目录 ...

  2. 解决react-router 的activeClassName 首页重复匹配问题

    首先先看一下我的inedx.js入口文件: 这是未点击的时候index默认的是选中状态, 这是我点击其他的路由之后:,明显index路由重复了,仔细看了官方文档之后,发现其实Navlink也应该使用e ...

  3. Android逆向笔记之AndroidKiller与Android Studio的使用

    https://blog.csdn.net/a_1054280044/article/details/60465267 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  4. thinkphp5.0 实现图片验证效果且能点击图片刷新图片

    思路与文件上传相同,只是验证码一个方法: <img src="{:captcha_src()}" /> 后台文件:app\ceshi\yam <?php name ...

  5. JS插件---->SyntaxHighlighter的使用

    SyntaxHighlighter是一款用于web页面的代码着色工具,可以用来着色多种语言.今天我们通过实例来学习一下它的用法.旧同桌不是老情人,但与你分享过的青春不比初恋少半分. SyntaxHig ...

  6. What you should know about .so files

    In its early days, the Android OS was pretty much supporting only one CPU architecture: ARMv5.Do you ...

  7. sencha touch NavigationView

    NavigationView 是官方根据Container控件扩展而来的,由一个导航栏和一个card组成,具备导航和返回时自动销毁当前界面的功能,非常适合新手使用. 其中导航栏的代码如下: Ext.d ...

  8. SSH 服务器不用密码

    1 A: user assh-keygen -t rsa 2 Created a directory on B, if ~/.ssh exists, which is fine.a@A:~> s ...

  9. C# XML对象序列化、反序列化

    XML 序列化:可以将对象序列化为XML文件,或者将XML文件反序列化为对象还有种方法使用LINQ TO XML或者反序列化的方法从XML中读取数据. 最简单的方法就是.net framework提供 ...

  10. Css控制网页变灰

    兼容IE chrome Firefox..... html{ filter:grayscale(%); -moz-filter:grayscale(%); -o-filter:grayscale(%) ...