衡阳网站建设开发价格,做网站的支付,WordPress主题制作教程三,建设手机网站经验分享高斯平滑 高斯平滑即采用高斯卷积核对图像矩阵进行卷积操作。高斯卷积核是一个近似服从高斯分布的矩阵#xff0c;随着距离中心点的距离增加#xff0c;其值变小。这样进行平滑处理时#xff0c;图像矩阵中锚点处像素值权重大#xff0c;边缘处像素值权重小。
import cv2 …高斯平滑 高斯平滑即采用高斯卷积核对图像矩阵进行卷积操作。高斯卷积核是一个近似服从高斯分布的矩阵随着距离中心点的距离增加其值变小。这样进行平滑处理时图像矩阵中锚点处像素值权重大边缘处像素值权重小。
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from cv2 import GaussianBlurimg cv.imread(rC:\Users\mzd\Desktop\opencv\images.jpg)
img_gauss cv.GaussianBlur(img,(3,3),1) #opencv中提供了GaussianBlur()函数来进行高斯平滑
cv.imshow(img,img) #显示原图
cv.imshow(img_gauss,img_gauss) #显示高斯平滑图
cv.waitKey(0) #参数为 0表示程序会无限期地等待用户按下键盘上的任意键。
cv.destroyAllWindows() #cv.destroyAllWindows() 是 OpenCV 中的一个函数调用用于关闭所有通过 cv2.imshow() 打开的图像窗口。这个函数没有参数调用它会关闭当前打开的所有窗口。GaussianBlur()代码使用示例和效果如下(相比于原图平滑后图片变模糊) cv2.GaussianBlur() 是 OpenCV 中用于对图像进行高斯模糊Gaussian Blur的函数。高斯模糊是一种常用的图像平滑技术它可以有效地去除图像中的噪声使图像变得更加平滑。
该函数的基本语法如下
cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])参数说明
src: 输入图像。ksize: 高斯核的大小。通常为正的奇数如3、5、7…。高斯核的大小影响了模糊的程度。sigmaX: X 方向上的高斯核标准差。如果设为0则根据 ksize 计算。dst可选: 输出图像。sigmaY可选: Y 方向上的高斯核标准差。如果设为0则与 sigmaX 相等。borderType可选: 边界处理的方式通常为默认值 cv2.BORDER_DEFAULT。
均值平滑
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as npimg cv.imread(rC:\Users\mzd\Desktop\opencv\images.jpg)
img_blur cv.blur(img,(3,5)) #均值平滑
# img_blur cv.boxFilter(img,-1,(3,5))
cv.imshow(img,img)
cv.imshow(img_blur,img_blur)
cv.waitKey(0)#参数为 0表示程序会无限期地等待用户按下键盘上的任意键
cv.imshow(img,img)
cv.destroyAllWindows()#cv.destroyAllWindows() 是 OpenCV 中的一个函数调用用于关闭所有通过 cv2.imshow() 打开的图像窗口。这个函数没有参数调用它会关闭当前打开的所有窗口。cv2.blur() 是 OpenCV 中用于对图像进行均值模糊Blur的函数。均值模糊是一种简单的平滑技术它通过取图像局部区域的平均值来模糊图像从而实现去噪的效果。
该函数的基本语法如下
cv2.blur(src, ksize[, dst[, anchor[, borderType]]])参数说明
src: 输入图像。ksize: 决定了模糊程度的核的大小。通常为正的奇数如3、5、7…。dst可选: 输出图像。anchor可选: 锚点默认值 (-1, -1) 表示核的中心。borderType可选: 边界处理的方式通常为默认值 cv2.BORDER_DEFAULT。
中值平滑 中值平滑也有核但并不进行卷积计算而是对核中所有像素值排序得到中间值用该中间值来代替锚点值。opencv中利用medianBlur()来进行中值平滑中值平滑特别适合用来去除椒盐噪声。
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import random
img cv.imread(rC:\Users\mzd\Desktop\opencv\images.jpg)
rows,cols img.shape[:2]
#加入椒盐噪声
for i in range(100):r random.randint(0,rows-1)c random.randint(0,cols-1)img[r,c]255
img_medianblur cv.medianBlur(img,5)
cv.imshow(img,img)
cv.imshow(img_medianblur,img_medianblur)
cv.waitKey(0)
cv.destroyAllWindows()cv2.medianBlur() 是 OpenCV 中用于对图像进行中值模糊的函数。中值模糊是一种非线性的平滑技术它将每个像素的值替换为相应邻域中所有像素的中值。这种方法对于去除图像中的椒盐噪声等离群点非常有效。 该函数的基本语法如下
cv2.medianBlur(src, ksize[, dst])参数说明
src: 输入图像。ksize: 决定了模糊程度的核的大小。通常为正的奇数如3、5、7…。dst可选: 输出图像。
双边滤波 相比于上面几种平滑算法双边滤波在平滑的同时还能保持图像中物体的轮廓信息。双边滤波在高斯平滑的基础上引入了灰度值相似性权重因子所以在构建其卷积核核时要同时考虑空间距离权重和灰度值相似性权重。在进行卷积时每个位置的邻域内根据和锚点的距离d构建距离权重模板根据和锚点灰度值差异r构建灰度值权重模板结合两个模板生成该位置的卷积核。
#coding:utf-8import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import random
import math
img cv.imread(rC:\Users\mzd\Desktop\opencv\images.jpg)
img_bilateral cv.bilateralFilter(img,0,0.2,40)
cv.imshow(img,img)
cv.imshow(img_bilateral,img_bilateral)
cv.waitKey(0)
cv.destroyAllWindows()cv2.bilateralFilter() 是 OpenCV 中用于进行双边滤波的函数。双边滤波是一种非线性滤波技术它考虑了像素之间的空间距离和像素值之间的灰度相似性。这使得双边滤波能够在平滑图像的同时保留边缘。 该函数的基本语法如下
cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])参数说明
src: 输入图像。d: 领域直径。如果非正数会从 sigmaSpace 计算。sigmaColor: 色彩空间的标准差。较大的值表示在颜色空间中考虑更广泛的区域。sigmaSpace: 坐标空间的标准差。较大的值表示在空间中考虑更广泛的区域。dst可选: 输出图像。borderType可选: 边界处理的方式通常为默认值 cv2.BORDER_DEFAULT。