numpy 如何快速生成掩模的像素是彩色的,而不是灰度的SEM图像?

h9vpoimq  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(68)

这是一张SEM图像,上面添加了一些辅助特征线。我的目的是把它们去掉。x1c 0d1x的数据
我发现,对于原生SEM像素,RGB值应该都相同或非常接近,对于彩色线条/像素,RGB值可能会有很大差异。
所以我写了一个函数来提取它们。

def filter_colorful_point(img_obj):

    def check_point_is_colorful(rgb):
        rgb = list(rgb)
        if rgb.count(rgb[0]) == len(rgb):
            return False
        return max(rgb) - min(rgb) >= 30

    colorful_mask = np.apply_along_axis(check_point_is_colorful, axis=2, arr=img_obj).astype('uint8')
    return colorful_mask

字符串
这里我在numpy中使用apply_沿着_axis方法,并比较第三个轴中的值,即BGR值。
而且功能工作得相当好。下面是生成的掩码

我的问题是,如何优化这个函数使其更快?因为我有太多的扫描电镜图像处理。

zzwlnbp8

zzwlnbp81#

您可以使用ptp(峰到峰):

colorful_mask = np.where(np.ptp(im, 2) >= 30, 1, 0)

字符串
或者更简单,如下面的评论中所指出的:

colorful_mask = (np.ptp(im, 2) >= 30).astype('uint8')

相关问题