智能识别系统设计---滤波算法,图像二值化算法

本文探讨了智能识别系统中的滤波算法,包括Sobel算子、锐化算子、高斯滤波、均值滤波和中值滤波。同时,介绍了图像二值化的方法,如全局迭代法和大津法,并展示了如何通过获取图像轮廓来计数图像中的目标。文章还提及了滤波和二值化的应用实例。
摘要由CSDN通过智能技术生成

滤波算法

cv.filter2D()

这个就是我们用来滤波的函数,作用大概就是根据传入的图片和kernel来对图片进行卷积

参数:

  • src: 原图像
  • ddepth: 目标图像深度(指数据类型)
  • kernel: 卷积核
  • anchor: 卷积锚点
  • delta: 偏移量,卷积结果要加上这个数字
  • borderType: 边缘类型

卷积函数(目前只能处理单通道图片)
(now:这个函数实现的不好,滤波效果很差,不用了)

def imgConvolve(image, kernel):
    '''
    :param image: 图片矩阵
    :param kernel: 滤波窗口
    :return:卷积后的矩阵
    '''
    img_h = int(image.shape[0])
    img_w = int(image.shape[1])
    kernel_h = int(kernel.shape[0])
    kernel_w = int(kernel.shape[1])
    # padding
    padding_h = int((kernel_h - 1) / 2)
    padding_w = int((kernel_w - 1) / 2)

    convolve_h = int(img_h + 2 * padding_h)
    convolve_W = int(img_w + 2 * padding_w)

    # 分配空间
    img_padding = np.zeros((convolve_h, convolve_W))
    # 中心填充图片
    img_padding[padding_h:padding_h + img_h, padding_w:padding_w + img_w] = image[:, :]
    # 卷积结果
    image_convolve = np.zeros(image.shape)
    # 卷积
    for i in range(padding_h, padding_h + img_h):
        for j in range(padding_w, padding_w + img_w):
            image_convolve[i - padding_h][j - padding_w] = int(
                np.sum(img_padding[i - padding_h:i + padding_h+1, j - padding_w:j + padding_w+1]*kernel))

    return image_convolve

准备

导入图像

img_bubble=cv.imread('bubble.jpg',0)# 单通道读入
img_rice=cv.imread('rice.png',0)# 单通道读入

bubble:
在这里插入图片描述

rice:
在这里插入图片描述

Sobel算子

竖边滤波

可以过滤出图像中竖直方向的边

kernel_col = np.array([[-1,0,1],# 提取竖边的卷积核
                    [-1,0,1],
                    [-1,0,1]])

dst = cv.filter2D(img_rice, -1, kernel_col)

plt.figure(figsize=(8,8)) #设置窗口大小
plt.suptitle('col filter') # 图片名称

plt.subplot(2,2,1)
plt.imshow(img_rice,cmap='gray')
# cv.imshow('rice',img_rice)

plt.subplot(2,2,2)
plt.imshow(dst,cmap='gray')
# cv.imshow('median',dst)
# cv.waitKey(0)

在这里插入图片描述
横边滤波

可以过滤出图像中水平方向的边

kernel_row = np.array([[-1,-1,-1],# 提取横边的卷积核
                       [0,0,0],
                       [1,1,1]])

dst = cv.filter2D(img_rice, -1, kernel_row)

plt.figure(figsize&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值