python模仿remove_small_objects()函数去除图片中离散点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nijiayan123/article/details/82978685

skimage包的morphology子模块中,提供了一个remove_small_objects()函数,可以通过自己设定的连通域面积阈值有效去掉图片中的噪点。但是在实际中,我们有时候发现只需要删除最远的那个离散点,这个离散点明显就属于噪点了。于是通过模仿模仿remove_small_objects()函数去除图片边缘不感兴趣区域。实现去除图片中离散点。

具体实现代码如下

def remove_max_objects(img):
    x0=200.0
    y0=200.0 #这里以图片大小为400*400为例
    labels = measure.label(img)  
    region = measure.regionprops(labels)  
    # is_del = False
    if len(region) == 1:
        out = img
       
    else:
     
        num = labels.max()  
        del_array = np.array([0] * (num + 1)
        initial_len=50
        save_index=0
        out = img
        for k in range(num):
      
            y,x=region[k].centroid
            k_l= math.sqrt(((x-x0)**2)+((y-y0)**2))
            k_len = k_l 
            if initial_len < k_len:
                initial_len = k_len
                save_index = k + 1
        del_array[save_index] = 1
        del_mask = del_array[labels]      
        out = out * del_mask
            
        out1=img-out
        
        
    return out1

从而实现去除图片中远离中心的离散点。

猜你喜欢

转载自blog.csdn.net/nijiayan123/article/details/82978685
今日推荐