网站后台登录界面下载,手表网站 云,有哪些可以接单做任务的网站,霸州放心的网络建站图像平滑与滤波
运用它#xff0c;首先就要了解它#xff0c;什么是平滑滤波#xff1f; 平滑滤波是低频增强的空间域滤波技术。它的目的有两类#xff1a;一类是模糊#xff1b;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行#xff0c;就是求邻近像元点的…图像平滑与滤波
运用它首先就要了解它什么是平滑滤波 平滑滤波是低频增强的空间域滤波技术。它的目的有两类一类是模糊另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果直接相关邻域越大平滑的效果越好但邻域过大平滑会使边缘信息损失的越大从而使输出的图像变得模糊因此需合理选择邻域的大小。
在看一下滤波的目的
滤波的本义是指信号有各种频率的成分,滤掉不想要的成分,即为滤掉常说的噪声,留下想要的成分.这即是滤波的过程,也是目的。 一是抽出对象的特征作为图像识别的特征模式在我未来将要进行的一个项目中将会用的到另一个是为适应图像处理的要求消除图像数字化时所混入的噪声。
有关平滑与滤波更多的介绍可以查看百度词条平滑与滤波
里面有对平滑与滤波详细的解释我就不一 一介绍了感谢词条的贡献者感谢分享非常感谢。 对于2D图像可以进行低通或者高通滤波操作低通滤波LPF有利于去噪模糊图像高通滤波HPF有利于找到图像边界。
一2D滤波器cv2.filter2D( )
img cv2.imread(kenan.jpg, 0)
kernel np.ones((5, 5), np.float32)/25dst cv2.filter2D(img, -1, kernel)
cv2.imshow(dst, dst)
cv2.imshow(yuantu, img)
cv2.waitKey(0)
cv2.destroyAllWindows() 二均值滤波 OpenCV中有一个专门的平均滤波模板供使用------归一化卷积模板所有的滤波模板都是使卷积框覆盖区域所有像素点与模板相乘后得到的值作为中心像素的值。OpenCV中均值模板可以用cv2.blur和cv2.boxFilter,比如一个3*3的模板其实就可以如下表示 模板大小m*n是可以设置的。如果不想要前面的1/9可以使用非归一化模板cv2.boxFitter。
cv2.blur()是一个通用的2D滤波函数它的使用需要一个核模板。该滤波函数是单通道运算的
如果是彩色图像那么需要将彩色图像的各个通道提取出来然后分别对各个通道滤波。
如果不想使用归一化模板那么应该使用cv2.boxFilter(), 并且传入参数normalizeFalse
img cv2.imread(kenan.jpg, 0)
blur cv2.blur(img, (3, 5)) # 模板大小为3*5, 模板的大小是可以设定的
box cv2.boxFilter(img, -1, (3, 5))
cv2.imshow(gray, img)
cv2.imshow(gray_new, blur)
cv2.imshow(gray_new2, box)
cv2.waitKey(0)
cv2.destroyAllWindows() 三高斯模糊模板
在上一目录中我们的卷积模板中的值全是1现在把卷积模板中的值换一下不全是1了换成一组符合高斯分布的数值放在模板里这时模板中的数值将会中间的数值最大往两边走越来越小构造一个小的高斯包。这样可以减少原始图像信息的丢失。 在OpenCV实现的函数为cv2.GaussianBlur()。对于高斯模板我们需要制定的是高斯核的高和宽奇数沿x与y方向的标准差如果只给xyx如果都给0那么函数会自己计算。高斯 核可以有效的去除图像的高斯噪声。当然也可以自己构造高斯核相关函数为cv2.GaussianKernel()。
# 高斯模糊模板
img cv2.imread(kenan.jpg, 0)
for i in range(2000): # 在图像中加入点噪声_x np.random.randint(0, img.shape[0])_y np.random.randint(0, img.shape[1])img[_x, _y] 255
blur cv2.GaussianBlur(img, (5, 5), 0) # 5,5表示的是卷积模板的大小0表示的是沿x与y方向上的标准差
cv2.imshow(img, img)
cv2.imshow(blur, blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果为 四中值滤波模板
中值滤波模板就是用卷积框中像素的中值代替中心值达到去噪声的目的。这个模板一般用于去除椒盐噪声。前面的滤波器都是用计算得到的一个新值来取代中心像素的值而中值滤波是用中心像素周围也可以使他本身的值来取代他卷积核的大小也是个奇数。
# 中值滤波模板
img cv2.imread(kenan.jpg, 0)
for i in range(2000): # 加入椒盐噪声_x np.random.randint(0, img.shape[0])_y np.random.randint(0, img.shape[1])img[_x][_y] 255
blur cv2.medianBlur(img, 5) # 中值滤波函数
cv2.imshow(img, img)
cv2.imshow(medianblur_img, blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果为 可以看到中值滤波对于这些白点噪声的去除效果是非常好的。
五双边滤波
双边滤波Bilateral filter是一种可以保证边界清晰的去噪的滤波器。之所以可以达到此去噪声效果是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差决定滤波器系数。它的构造比较复杂即考虑了图像的空间关系也考虑图像的灰度关系。双边滤波同时使用了空间高斯权重和灰度相似性高斯权重确保了边界不会被模糊掉。
cv2.bilateralFilter(img, d, p1, p2)函数有四个参数需要d是领域的直径后面两个参数是空间高斯函数标准差和灰度值相似性高斯函数标准差。
# 双边滤波
img cv2.imread(rose1.jpg, 0)
for i in range(2000): # 添加椒盐噪声_x np.random.randint(0, img.shape[0])_y np.random.randint(0, img.shape[1])img[_x][_y] 255
# 9表示的是滤波领域直径后面的两个数字空间高斯函数标准差灰度值相似性标准差
blur cv2.bilateralFilter(img, 9, 80, 80)
cv2.imshow(img, img)
cv2.imshow(blur_img, blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果为 双边滤波函数后面的两个参数设置的越大图像的去噪越多但随之而来的是图像ji将变得模糊所以根据需要调整好后两个参数的大小。