python数据平滑处理,python数据平滑处理方法
本文主要介绍python图像平滑的原理,图像滤波是图像处理和计算机视觉中最常见、最基本的操作。本文详细内容基于python的相关资料,有需要的朋友可以参考一下。
00-1010序:基本原理1均值滤波1.1函数语法2。高斯滤波器2.1函数语法3。中值滤波器3.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均值滤波
在OpenCV中,实现均值滤波的函数是cv2.blur(),语法格式如下:
dst=cv2.blur(src,ksize,anchor,borderType)
Dst是返回值,意味着平均滤波后得到的结果src就是待处理的图像,也就是原始图像。图像的深度为CV _ 8u,CV _ 16u,CV _ 16s,CV32f,CV _ 64f。K size是内核的大小,anchor是锚点。一般这个值是直接默认的,也就是borderType是边框样式。这个值决定了如何处理边界,一般不需要考虑这个值。因此函数cv2.blur()的一般形式为:
dst=cv2 .模糊(src,ksize)
接下来看一段程序:
将cv2作为cv导入
img=cv . im read(r f : \ AI \ photo \ test \ Lena . jpg )
blurImg=cv.blur(img,(5,5))
print(imgshape ,img.shape)
打印(模糊,模糊.形状)
cv.imshow(img ,img)
cv.imshow(模糊,模糊)
cv.waitKey()
cv.destroyAllWindows()
原始图像:
平均滤波图像
1.1函数语法
在在滤波器中,每个像素在其邻域中的权重是相同的。高斯滤波中,中心点的权重增大,远离中心点的权重减小。在此基础上,计算邻域内每个像素的不同权重之和。
高斯滤波卷积核示例
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 cvimg=cv.imread(rF:\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 cvimg=cv.imread(rF:\AI\photo\test\lena.jpg)
medianblurImg=cv.medianBlur(img,5)
cv.imshow(img,img)
cv.imshow(medianblurImg,medianblurImg)
cv.waitKey()
cv.destroyAllWindows()
在中值滤波处理中,噪声成分很难被选中,所以可以在几乎不影响原有图像的情况下去除所有的噪声,但是由于需要进行排序等操作,中值滤波需要的运算较大。中值滤波对椒盐噪声去除效果较明显,下次补充,还有双边滤波以及方框滤波后面补充。
到此这篇关于python图像平滑处理原理的文章就介绍到这了,更多相关python 图像平滑处理内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。