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

均值模糊

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

模糊的基本原理:

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. 在SELECT DISTINCT 状况下使用 Order BY Newid() 随机数选出记录

    在日常作业中,有时候可能是一些活动要抽出得奖人或选出抽查的一些名单, 就常常会使用到 Order BY Newid() 的方式来做随机数选出, 但有可能的状况需是要搭配到 DISTINCT 来选出,这 ...

  2. material mem

    http://blog.csdn.net/caihaijiang/article/details/5903133 http://akunamotata.iteye.com/blog/1625804 刷 ...

  3. javascript的实现事件的一些实例

    嘿嘿,今天学习到了事件,其实在C#中事件只需要我们触发即可实现,但是在javascript并不是这样的,在这里,事件是javascript与html的交互,就是文档或者浏览器窗口发生的一件特定的交互瞬 ...

  4. 深入浅出MFC——消息映射与命令传递(六)

    1. 消息分类: 2. 万流归宗——Command Target(CCmdTarget): 3. "消息映射"是MFC内建的一个信息分派机制.通过三个宏(DECLARE_MESSA ...

  5. 细说php的异常和错误处理机制

    再谈php错误与异常处理 讲的非常好 w3school php异常处理机制 php错误异常处理详解 注: 关注set_error_handler() set_exception_handler() r ...

  6. codeforces水题100道 第十四题 Codeforces Round #321 (Div. 2) A. Kefa and First Steps (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/580/A题意:求最长连续非降子序列的长度.C++代码: #include <iostream ...

  7. (原创)Android Binder设计与实现 - 实现篇(1)

    本文属于原创作品,转载请注明出处并放于明显位置,原文地址:http://www.cnblogs.com/albert1017/p/3849585.html 前言 在学习Android的Binder机制 ...

  8. Web负载均衡与分布式架构

     参考帖子: Web负载均衡的几种实现方式 大型网站架构系列:负载均衡详解(上) DNS 原理入门 解决nginx负载均衡的session共享问题 什么是消息队列 Java应用架构的演化之路 Java ...

  9. Linux下grep命令查找带有tab(退格)的字符

    需要在日志文件统计删除的主帖,而日志文件是tab(退格)字符隔开的:假设日志文件名叫delete.log. 保存格式和保存的数据如下, 删除日期            帖子类型(11为主帖,12为回帖 ...

  10. 2555: SubString[LCT+SAM]

    2555: SubString Time Limit: 30 Sec  Memory Limit: 512 MB Submit: 2601  Solved: 780 [Submit][Status][ ...