如何在扫描电子显微镜图像中快速生成彩色像素而不是灰度像素的掩膜?

huangapple go评论61阅读模式
英文:

How to generate mask fast where pixel is colorful rather than grayscale in SEM image?

问题

这是一张扫描电子显微镜(SEM)图像,上面添加了一些辅助特征线。我的目的是将它们移除。

我发现,对于原生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_along_axis方法,并比较了第三个轴中的值,即BGR值。

这个函数效果相当不错。下面是生成的掩码图像。

如何在扫描电子显微镜图像中快速生成彩色像素而不是灰度像素的掩膜?

我的问题是,我如何优化这个函数以使其更快?因为我需要处理很多SEM图像。

英文:

Here is a SEM image, some asssist feature lines are added on it. My purpose is to remove them.
如何在扫描电子显微镜图像中快速生成彩色像素而不是灰度像素的掩膜?

I found that, for native SEM pixel, RGB values should be all same or very close, for colorful lines/pixels RGB values may vary a lot.

So I write a function to extract them.

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

Here I use apply_along_axis method in numpy and compare the values in third axis, which are BGR values.

And the function works pretty good. Here is the generated mask
如何在扫描电子显微镜图像中快速生成彩色像素而不是灰度像素的掩膜?

My question is, how could I optimize this function to make it faster? Cause I have so many SEM image to process.

答案1

得分: 3

你可以使用 ptp(峰值到峰值):

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

或者更简单,如下评论所指出:

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

You can use ptp (peak to peak):

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

or even simpler as pointed out in the comment below:

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

huangapple
  • 本文由 发表于 2023年7月6日 15:42:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76626556.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定