[python-opencv] 模糊操作
@不要在奋斗的年纪 选择安逸
均值模糊
- 中值模糊
- 自定义模糊
- 意义与应用场景
模糊的基本原理:
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] 模糊操作的更多相关文章
- opencv python:模糊操作
均值模糊 中值模糊 自定义模糊 模糊操作的基本原理 基于离散卷积 定义好每个卷积核 不同卷积核得到不同的卷积效果 模糊是卷积的一种表象 blur cv2.blur(image, (1, 3)) 第二个 ...
- python实现模糊操作
目录: (一)模糊或平滑与滤波的介绍 (二)均值模糊 (1) 原理 (2)代码实现-----均值模糊函数blur() (三)中值模糊------mediaBlur函数 (四)高斯模糊------Gau ...
- Python openCV基础操作
1.图片加载.显示和保存 import cv2 # 读取图片 img = cv2.imread("img1.jpg") # 生成灰色图片 imgGrey = cv2.imread( ...
- Python+OpenCV图像处理(七)—— 滤波与模糊操作
过滤是信号和图像处理中基本的任务.其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息.过滤可以移除图像中的噪音.提取感兴趣的可视特征.允许图像重采样等等.频域分析将图像分成从低频到高频 ...
- 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化
一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...
- python - opencv 的一些小技巧备忘
python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...
- python anaconda 常用操作;conda 命令指南
在使用 python anaconda时,经常会用到很多常用操作,记录下来,方便以后更好地使用: conda: Conda既是一个包管理器又是一个环境管理器.你肯定知道包管理器,它可以帮你发现和查看包 ...
- python+opencv实现车牌定位
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
随机推荐
- java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available
好久没有使用MyEclipse10了,今天打开看了以前大学的项目,在Tomcat7中发布启动,我嚓嘞,报错: SEVERE: Exception initializing random number ...
- Oracle查询锁表和解锁
1.查询是否锁表 SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machi ...
- phpadmin试用
在Windows或者Linux下mysql安装后默认的密码为空,又当我们又安装了mysql的管理工具phpmyadmin后登陆时 出现“空密码登陆呗禁止(参见允许密码为空)”.不能登录成功 ...
- 基于Elasticsearch 5.4.3的商品搜索系统
源码已提交至http://github.com
- centos6.4安装GCC
1. Last login: Mon Aug 4 11:46:15 2014 from 10.3.7.128 [jifeng@jifeng04 ~]$ ls hadoop jdk1.7.0_45 ...
- 《Lua程序设计》9.2 管道(pipe)与过滤器(filter) 包含使用协同函数实现“生产者——消费者”问题的实例代码
一个关于协同程序的经典示例是“生产者-消费者”问题.这其中涉及到两个函数,一个函数不断地产生值(比如从一个文件中读取值),另一个则不断地消费这些值(比如将这些值写到另一个文件).通常,这两个函数大致是 ...
- JSON语法介绍
官网:https://www.json.org/ JSON (JavaScript Object Notation) is a lightweight data-interchange f ...
- 异构GoldenGate 12c 双向复制配置
1.配置window,添加checkpoint表(本文windows和linux互为source和target) GGSCI (WIN-GM5PVS1CILH) 1> view param ./ ...
- ELK系列四:Logstash的在ELK架构中的使用和简单的输入
1.ELK架构中Logstash的位置: 1.1.小规模集群部署(学习者适用的架构) 简单的只有Logstash.Elasticsearch.Kibana,由Logstash收集日志或者流量信息,过滤 ...
- 如何分离p12(或pfx)文件中的证书和私钥
p12(或者pfx)文件里一般存放有CA的根证书,用户证书和用户的私钥 假设我们有一个test.p12文件 在安装了openssl的linux服务器上执行以下命令: 提取用户证书: openssl p ...