计算机视觉(二)——图像滤波、边缘检测、案例

本文详细介绍了图像处理中的滤波技术,包括均值、高斯、中值和双边滤波,并展示了它们在图像平滑与边缘保持上的应用。接着,文章探讨了Canny边缘检测算法,解释了其工作原理和参数设置。最后,通过OpenCV实现人脸和眼睛的检测,使用预训练的XML模型定位并标记了人脸和眼睛。

一、图像滤波

      平滑与模糊即失去焦点,致使看不到图像的细节,也就是说像素点与周围像素点混合了,在边缘检测方面很有用处,常用的平滑方法有均值、高斯、中值和双边。实例如下所示:

import cv2 as cv
import numpy as np

test_image = cv.imread(r'E:\kaggleData\computer_version_Data\4.jpg')
cv.imshow('test_image', test_image)
"""
    cv2.blur(img,ksize) 均值滤波
    img:原图像
    ksize:核大小
    原理:它只取内核区域下所有像素的平均值并替换中心元素。
    特征:核中区域贡献率相同。
    作用:对于椒盐噪声的滤除效果比较好
"""
blurred = np.hstack([
    cv.blur(test_image, (3, 3)),
    cv.blur(test_image, (5, 5)),
    cv.blur(test_image, (7, 7))
])
cv.imshow("Averaged", blurred)

"""
    cv2.GuassianBlur(img, ksize,sigmaX,sigmaY) 高斯滤波
    说明:sigmaX,sigmaY分别表示X,Y方向的标准偏差。如果仅指定了sigmaX,则sigmaY与sigmaX相同.如果两者都为零,
    则根据内核大小计算它们。 
    特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。
    作用:高斯模糊在从图像中去除高斯噪声方面非常有。
    第三个参数0表示自动计算核大小
"""
blurred = np.hstack([
    cv.GaussianBlur(test_image, (3, 3), 0),
    cv.GaussianBlur(test_image, (5, 5), 0),
    cv.GaussianBlur(test_image, (7, 7), 0)
])
cv.imshow("Gaussian", blurred)

"""
    cv2.medianBlur(img, k) 中值滤波
    说明:imgs为原图像,k为方框的尺寸,相当于将方框内的个值进行排序,取中值作为当前值。
    特征:中心点的像素被核中中位数的像素值代替。
    作用:对于椒盐噪声有效。
"""
blurred = np.hstack([
    cv.medianBlur(test_image, 3),
    cv.medianBlur(test_image, 5),
    cv.medianBlur(test_image, 7)
])
cv.imshow("Median", blurred)

"""
    双边滤波:
    cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)双边滤波
    说明:d为邻域直径,sigmaColor为空间高斯函数标准差,参数越大,临近像素将会在越远的地方越小。
    sigmaSpace灰度值相似性高斯函数标准差,参数越大,那些颜色足够相近
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI炮灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值