python图像平滑处理原理
作者:ONEFPGA 发布时间:2023-07-07 00:21:11
前言:
图像滤波是图像处理和计算机视觉中最常用、最基本的操作。主要是去除图像中的噪声,因为图像平滑处理过程中往往会使得图像变的模糊,因此又叫模糊处理。
基本原理
图像平滑的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值。
图像平滑处理的方法有很多,比如均值滤波,方框滤波,高斯滤波,中值滤波,双边滤波。
(这里就不讲公式推导了)
1均值滤波
在进行均值滤波的时候要考虑需要对周围多少个像素去平均值,即确定核 的大小,通常情况下都是以当前像素点为中心,读行数和列数相等的一块区域内的所有像素点求平均。将计算得到的结果作为该点的像素。
原始图像像素
当前像素点为226的位置,我们对其周围5x5区域内像素点求平均计算方法为:
新值=(197+25+106+156+159+149+40+107+5+71+163+198+226+223+156+222+37+68+233+157+75+193+250+2+42)/25
计算得到的新值即为226像素点位置的新的像素。
其中均值滤波的核如下所示:
1.1函数语法
在OpenCV中,实现均值滤波的函数是cv2.blur(),语法格式如下:
dst=cv2.blur(src,ksize,anchor,borderType)
dst是返回值,表示进行均值滤波后得到的结果
src是需要处理的图像,即原始图像,图像的深度有CV_8U,CV_16U,CV16S,CV32F,CV_64F.
ksize是核 的大小,
anchor是锚点,一般情况该值直接默认即可
borderType是边界样式,该值决定以何种方式处理边界,一般情况下不需要考虑该值的取值,直接默认即可。
因此函数cv2.blur()的一般形式为:
dst=cv2.blur(src,ksize)
接下来看一段程序:
import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
blurImg=cv.blur(img,(5,5))
print('imgshape',img.shape)
print('blurImg',blurImg.shape)
cv.imshow('img',img)
cv.imshow('blurImg',blurImg)
cv.waitKey()
cv.destroyAllWindows()
原始图像:
均值滤波后的图像
2.高斯滤波
在均值滤波中,其邻域内每个像素的权重都是一样的,在高斯滤波中,中心点的权重值加大,远离中心点的权重值减少,在此基础上计算邻域内各个像素值不同权重的和。
高斯滤波卷积核示例
2.1函数语法
dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)
式中:
dst为高斯滤波后得到的结果
src是需要处理的图像,
ksize是滤波卷积核。需要注意的是滤波核 的值必须是奇数
sigmaX是卷积在水平方向的标准差,或者X方向求导
sigmaY是卷积在垂直方向的标准差,或者说Y方向上
bordenType是边界类型
因此高斯滤波的一般形式为:
dst=cv2.GaussianBlur(src,ksize,0,0)
程序演示:
import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
GS_blurImg=cv.GaussianBlur(img,(5,5),1,1)
print('imgshape',img.shape)
print('blurImg',GS_blurImg.shape)
cv.imshow('img',img)
cv.imshow('GS_blurImg',GS_blurImg)
cv.waitKey()
cv.destroyAllWindows()
相比原始图像,高斯滤波处理后的图像模糊了一些,但是相对于均值滤波来说,要好一些,这是因为高斯滤波卷积核在中心点的权重更高。
3.中值滤波
中值滤波就是将当前像素点及其邻域内的像素点排序后取中间值作为当前值的像素点。
中值滤波的处理过程为:将226像素点周期的8个像素点一起排序即5,37,40,68,107,198,223,223,226,所以226像素点的新 的像素值为107.
3.1函数语法
dscv2.medianBlur(src,ksize)
其中需要注意的是ksize核的大小必须是比1大的奇数,比如3,5,7等
import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
medianblurImg=cv.medianBlur(img,5)
cv.imshow('img',img)
cv.imshow('medianblurImg',medianblurImg)
cv.waitKey()
cv.destroyAllWindows()
在中值滤波处理中,噪声成分很难被选中,所以可以在几乎不影响原有图像的情况下去除所有的噪声,但是由于需要进行排序等操作,中值滤波需要的运算较大。中值滤波对椒盐噪声去除效果较明显,下次补充,还有双边滤波以及方框滤波后面补充。
来源:https://blog.csdn.net/ONEFPGA/article/details/125255288


猜你喜欢
- 1.首先在Pycharm Tools->Deployment->Configurations打开新建SFTP输入host: ip
- 我们在写代码的过程中,会经常使用到for循环,去循环列表,那么如果我们拿到一个类型为str的列表,对它进行for循环,结果看下面的代码和图:
- 关于Python 黑魔法 metaclass 的两种极端观点:这种特性太牛逼了,是无所不能的阿拉丁神灯,必须找机会用上才能显示自己的 Pyt
- 1、mysql 导出文件:SELECT `pe2e_user_to_company`.company_name, `pe2e_user_to
- 我们知道Excel有一个match函数,可以做数据匹配。比如要根据人名获取成绩而参考表sheet1的内容如下:要根据sheet1匹配每人的成
- 无论何时,IE总是让页面制作者感到那么的黯然销魂,尤其是IE6,IE7次之,虽然IE8已经做了很大的改进,但由于XP用户的数量实在太大,而且
- 本文实例讲述了python实现京东订单推送到测试环境,提供便利操作。分享给大家供大家参考,具体如下:# -*- coding: utf-8
- 本文实例讲述了vue.js使用v-model实现表单元素(input) 双向数据绑定功能。分享给大家供大家参考,具体如下:v-model 一
- 本文实例为大家分享了python合并同类型excel表格的具体代码,供大家参考,具体内容如下python脚本如下,验证有效。#!/usr/b
- 本文实例讲述了Python爬虫实现简单的爬取有道翻译功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#!p
- 简介:上文中已经介绍如何安装Pycharm已经环境变量的配置。现在软件已经安装成功,现在就开始动手做第一个Python项目。第一个“Hell
- 一、定时器概述window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInter
- 拼接table请将以下代码直接运行:换下bootstrap.css jquery-1.12.3.min.js bootstrap-pagin
- 注:本文是应Alan邀请为《CSS布局实录》写的一个web标准入门指导。书已经上市近一年了,现在摘选出来,给初学者一个参考。希望了解更多实现
- 1. 创建用户模块应用创建应用users$ python manage.py startapp users 2. 注册用户模块应用
- 移动互联网被称为“第五次科技革命”,而随着iPhone和Android等智能手机的日渐流行和iPad等平板电脑的出现,移动互联网的潜力和趋势
- 一、普通进度条import sysimport time# 普通进度条# 在代码迭代运行中进行统计计算,并使用格式化字符串输出代码运行进度d
- 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
- 【题目】keras中的Merge层(实现层的相加、相减、相乘)详情请参考:Merge层一、层相加keras.layers.Add()添加输入
- MVC设计模式MVC (Model-View-Controller) 是软件工程中常用的软件架构模式,它是一种分离业务逻辑与显示界面的设计方