「图像处理matlab函数」imclearborder与bwareaopen

imclearborder与bwareaopen

两个函数介绍

imclearborder与bwareaopen,是matlab里的功能函数,博客里把他们变成python版本

功能介绍:

  • imclearborder:删除图像的边界,什么意思呢,就是一张800X600的图片,如果再图片的边缘有半个足球,那么,我们可以指定将周围的一圈像素置为0 具体可以看:资料参考1
  • bwareaopen:删除面积小于x区域的代码,使用连通性删除微小对象BW2 = bwareaopen(BW,P,conn)
    第一个参数是图片,P表示删除小于P像素面积的对象,conn表示指定所需的连通性,默认使用8连通区域进行像素归属的判断具体可以参考:mathwork里的说明。

python代码

def imclearborder(imgBW, radius):

    # 给定黑白图像,首先找到其所有轮廓
    imgBWcopy = imgBW.copy()
    contours,hierarchy = cv2.findContours(imgBWcopy.copy(), cv2.RETR_LIST,  
        cv2.CHAIN_APPROX_SIMPLE)
 

    # 获取图像尺寸
    imgRows = imgBW.shape[0]
    imgCols = imgBW.shape[1]

    contourList = [] # 接触边界的轮廓的ID列表

    # 对每个轮廓进行
    for idx in np.arange(len(contours)):
        # 得到轮廓
        cnt = contours[idx]

        # 查看轮廓中的每一个点
        for pt in cnt:
            rowCnt = pt[0][1]
            colCnt = pt[0][0]

            # 如果在边界的指定半径内部
            # 那么删除这个轮廓
            check1 = (rowCnt >= 0 and rowCnt < radius) or (rowCnt >= imgRows-1-radius and rowCnt < imgRows)
            check2 = (colCnt >= 0 and colCnt < radius) or (colCnt >= imgCols-1-radius and colCnt < imgCols)

            if check1 or check2:
                contourList.append(idx)
                break

    for idx in contourList:
        cv2.drawContours(imgBWcopy, contours, idx, (0,0,0), -1)

    return imgBWcopy
def bwareaopen(imgBW, areaPixels):
    # 给定黑白图像,找到所有轮廓
    imgBWcopy = imgBW.copy()
    contours,hierarchy = cv2.findContours(imgBWcopy.copy(), cv2.RETR_LIST,
        cv2.CHAIN_APPROX_SIMPLE)

    # 计算每个轮廓的面积
    for idx in np.arange(len(contours)):
        area = cv2.contourArea(contours[idx])  # 计算轮廓面积
        if (area >= 0 and area <= areaPixels):
            cv2.drawContours(imgBWcopy, contours, idx, (0,0,0), -1)

    return imgBWcopy

小结

最近什么也没有干,写了小论文的提纲,写完突然不知道该干嘛了,准备写第一篇小论文,发现想要下决心开始好难哇,不如先写几篇CSDN哈哈,轻松愉快无压力。BINGO

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值