2.4 Python图像的空域增强处理-空域滤波
2.4 Python图像的空域增强处理-空域滤波
文章目录
- 2.4 Python图像的空域增强处理-空域滤波
- 1 算法原理
- 2 代码
- 3 效果
1 算法原理
空域滤波(线性平滑滤波器、线性锐化滤波器、非线性平滑滤波器、非线性锐化滤波器)
(1)算法原理
空域滤波和空域滤波器的定义使用空域模板进行的图像处理,被称为空域滤波。模板本身被称为空域滤波器。
1)线性平滑滤波器
包含在滤波器邻域内像素的平均值,也称为均值滤波器。作用(1)减小图像灰度的“尖锐”变化,减小噪声2)由于图像边缘是由图像灰度尖锐变化引起的,所以也存在边缘模糊的问题。
下图是两个卷积模板。
用cv2.blur(img,ksize) 实现
img:原图像
ksize:核大小
原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3标准化的盒式过滤器如下所示:
2)非线性平滑滤波器
基于滤波器所在图像区域中像素的排序,由排序结果决定的值代替中心像素的值。
分类(1)中值滤波器:用像素领域内的中间值代替该像素。(2)最大值滤波器:用像素领域内的最大值代替该像素。(3)最小值滤波器:用像素领域内的最小值代替该像素。
以中值滤波器为例
中值滤波器是用模板区域内像素的中间值,作为结果值
公式:R=mid{zk|k=1,2,…,n}
强迫突出的亮点或暗点更象它周围的值,以消除孤立的亮点或暗点。
3)线性锐化滤波器
邻域平均或加权平均(都对应积分)可以平滑图像,反过来利用对应微分的方法可以对图像进行锐化滤波。最简单的锐化滤波器是线性锐化滤波器。
线性锐化滤波器也可用模板卷积来实现,但所用模板与线性平滑滤波器的所用模板不同,线性锐化滤波器的模板仅中心系数为正而周围的系数均为负值。对3×3的模板来说,典型的拉普拉斯模板如下图所示。
更为方便的做法是一步完成细节增强,不论中心系数为正还是负,我们合并叠加到原图像这个步骤,使用下面模板
4) 非线性锐化滤波器
锐化滤波器不仅可以是线性的,也可以是非线性的。非线性锐化滤波器常借助对图像微分结果的非线性组合来设计和构造。
1.锐化模板
图像处理中最常用的微分方法是利用梯度(基于一阶微分)。梯度用一个二维列向量来定义
下图是两个常用模板:
2 代码
运行代码说明
1.要改变代码中的图片地址(地址不能有中文)
更改
put(path)
函数中的路径put(r'../image/image1.jpg')
2.注意最后的
plt.savefig('1.new.jpg')
是保存plt图像,如果不使用可以注释掉
import os
import random
import numpy as np
import cv2
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef sp_noise(noise_img, proportion):'''添加椒盐噪声proportion的值表示加入噪声的量,可根据需要自行调整return: img_noise'''height, width = noise_img.shape[0], noise_img.shape[1]#获取高度宽度像素值num = int(height * width * proportion) #一个准备加入多少噪声小点for i in range(num):w = random.randint(0, width - 1)h = random.randint(0, height - 1)if random.randint(0, 1) == 0:noise_img[h, w] = 0else:noise_img[h, w] = 255return noise_imgdef put(path):image = cv2.imread(path, 1)original_img = cv2.imread(path, 1)image = sp_noise(image,0.025)# 线性平滑滤波ls_img = cv2.blur(image, (5, 5))# 线性锐化滤波kernel_sharpen_1 = np.array([[0, -1, 0],[-1, 5, -1],[0, -1, 0]])lr_img = cv2.filter2D(image, -1, kernel_sharpen_1)# 非线性平滑滤波nls_img = cv2.medianBlur(image, 5)# 非线性锐化滤波nlr_img = cv2.bilateralFilter(image, 5, 31, 31)# 画图fig = plt.figure()ax1 = fig.add_subplot(231)ax1.imshow(cv2.cvtColor(original_img, cv2.COLOR_BGR2RGB))ax1.title.set_text('原图')ax2 = fig.add_subplot(232)ax2.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))ax2.title.set_text('加椒盐噪声图')ax3 = fig.add_subplot(233)ax3.imshow(cv2.cvtColor(ls_img, cv2.COLOR_BGR2RGB))ax3.title.set_text('线性平滑滤波')ax4 = fig.add_subplot(234)ax4.imshow(cv2.cvtColor(nls_img, cv2.COLOR_BGR2RGB))ax4.title.set_text('非线性平滑滤波')ax5 = fig.add_subplot(235)ax5.imshow(cv2.cvtColor(lr_img, cv2.COLOR_BGR2RGB))ax5.title.set_text('线性锐化滤波')ax6 = fig.add_subplot(236)ax6.imshow(cv2.cvtColor(nlr_img, cv2.COLOR_BGR2RGB))ax6.title.set_text('非线性锐化滤波')# plt.savefig('4.new.jpg')plt.show()# 处理函数,要传入路径
put(r'../image/image3.jpg')
3 效果
2.4 Python图像的空域增强处理-空域滤波相关推荐
- 2.3 Python图像的空域增强处理-直方图修正
2.3 Python图像的空域增强处理-直方图修正 文章目录 2.3 Python图像的空域增强处理-直方图修正 1 算法原理 2 代码 3 效果 1 算法原理 直方图均衡化算法和直方图规定化 对于灰 ...
- 2.2 Python图像的空域增强处理-算术运算
2.2 Python图像的空域增强处理-算术运算 文章目录 2.2 Python图像的空域增强处理-算术运算 1 算法原理 2 代码 3 效果 1 算法原理 1)加法与减法. 假设 f(x,y),g( ...
- 2.1 Python图像的空域增强处理-灰度映射
2.1 Python图像的空域增强处理-灰度映射 文章目录 2.1 Python图像的空域增强处理-灰度映射 1 算法原理 2 代码 3 效果 空域增强处理,包括给定变化曲线的灰度映射(求反.动态范围 ...
- 摄像头拍摄后对图片进行图像处理-python(空域增强)
通过摄像头拍摄后对图像进行图像处理(空域增强) 硬件介绍 应用思路 总体设计 具体设计 操作方法 功能体验 客观评价 总结 后续 硬件介绍 据市场调研预测,未来几年内,基于CMOS图像传感器的影像产品 ...
- python设计---空域增强之图片去噪(中值滤波、均值滤波、高斯滤波、双边滤波)
空域增强之图片去噪 引言 中值滤波及均值滤波 中值滤波 理论方法 均值滤波 中值滤波和均值滤波的对比 程序 高斯滤波 程序 双边滤波 程序 ui界面 设计程序 后续 引言 我们在日常工作生活中,总是需 ...
- 【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- 数字图像处理笔记-02(图像空域增强技术及联合运用)
数字图像处理笔记-02(图像空域增强技术及联合运用) (一) 图像增强 1.1 基本概念 由于图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特 征,给分析带来了困难. ...
- python图像数据增强——imgaug (一)
(一)imgaug基础用法 (二)imgaug进阶示例 (三)imgaug图像分割数据增强 在机器学习或者深度学习的问题中,因为受制于图像采集的方式,投入的精力和图像标注的难度等,用于训练的图像数量可 ...
最新文章
- 从头开始学习Adobe Photoshop CC图像编辑
- Vue2接口地址配置(webpack)
- 浅析μC/OS-II OSTimeDly()函数和OSTimeTick()函数工作原理
- python-css反爬之svg映射
- c++callback回调实例
- 90后中国程序员“黑吃黑”博彩网站,半年获利256万,判刑11年半
- SpringBoot热加载实现与类加载浅谈
- 指针数组、数组指针、指针函数、函数指针
- 利用MyEclipse的ant插件生成Hibernate的映射文件
- 代码健壮性 —— 边界条件的判断
- Linux shell脚本sed使用
- 三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
- 华为全系Visio图标下载链接
- 有线异步通信原理_全光纤网络结构原理是什么 全光纤网络结构原理介绍【详解】...
- 脱机使用打印机怎么删除缓存_如何在Windows中使用脱机文件来脱机缓存网络文件...
- stm32 Cubel开发教程
- 连接tcp服务器出现的问题及解决方法
- android学习论坛
- 不放心的dblink--手工关闭dblink
- python项目的QQ机器人使用及部署在腾讯云服务器
热门文章
- 10. 查询没学过“张三”老师教授的任一门课程的学生姓名
- JAVA原理必备(一)
- 微软释新.NET Core 3.0预览版可加速程序加载速度ReadyToRun
- 计算机不识别u盘 批处理文件,U盘格式的秘密你懂么?不格式化转化U盘格式!.bat小工具-批处理文件格式...
- 如何在Windows11下开启IE浏览器
- 吃鸡更新找不到服务器,绝地求生PUBGExperimentalServer为什么找不到_绝地求生PUBGExperimentalServer安装方法_玩游戏网...
- 网站上禁止转载的文字,怎么复制文字?(不包括pdf里的文字)
- python制作螺旋式正方形
- CA6140车床拨叉831003课程设计(说明书+CAD图纸+工序卡)
- 幽门螺旋杆菌的治疗要多久?来听消化内科医生怎么说吧