连通域 ---- 对自己学习有帮助的资源集锦

前言

学无止境,在学习连通域的理论及使用方法时,有以下文章及代码为我提供了很大帮助,特此附上链接,表示感谢!希望对您也有参考借鉴的意义!

大佬笔记

  1. python数字图像处理(18):高级形态学处理

个人笔记

1. 求一张图中某类别对应分割区域(矩形)凸包顶点坐标(xmin, ymin, xmax, ymax),常用于利用分割label.png得到目标检测label.xml或label.txt。
"""
areas:各类别连通域阈值的字典;
selected_label:选择的某一张2D或3D图;
class_id:各类别索引值+1,比如类别有['apple','pear','banana'],类别apple的索引值为0,class_id为1;
"""

from skimage import filters, morphology, segmentation, measure
import numpy as np

def count_coors_classid(areas, selected_label, class_id):
    class_label = np.zeros_like(selected_label)
    class_label[selected_label == class_id] = class_id

    thresh = filters.threshold_otsu(class_label)  # 阈值分割
    bw = morphology.closing(class_label > thresh, morphology.square(3))  # 闭运算(先膨胀后腐蚀)

    cleared = bw.copy()  # 复制
    segmentation.clear_border(cleared)  # 清除连接到标签图像边界的对象

    label_image = measure.label(cleared)  # 连通区域标记
    borders = np.logical_xor(bw, cleared)  # 异或

    label_image[borders] = -1

    for region in measure.regionprops(label_image):  # 循环得到每一个连通区域属性集
        # 忽略小区域
        if region.area < areas[class_id]:
            continue
        # 绘制外包矩形(若region为3d,则region.bbox为xmin, ymin, zmin, xmax, ymax, zmax)
        xmin, ymin, xmax, ymax = region.bbox
        # xmin, ymin, zmin, xmax, ymax, zmax = region.bbox
        print('xmin, ymin, xmax, ymax --- ', xmin, ymin, xmax, ymax)
        # print('xmin, ymin, zmin, xmax, ymax, zmax ---', xmin, ymin, zmin, xmax, ymax, zmax) 
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页