如何将彩色颗粒图像转换为黑白 (0,1) 以使颗粒边界保持可识别

How to convert color grain image to black and white (0,1) so that grain boundary remain identifiable

我想使用简单代码将彩色图像转换为二值图像 (0,1) im2bw()

但在这种情况下晶界丢失或不正确可见

我想像

那样设计晶界

.

任何 matlab 或 python 解释都是可以接受的。

MATLAB 有一个函数 boundarymask 可以满足您的需求。

如果输入图像 lab 是带标签的图像,则只需执行 bw=boundarymask(lab).

如果输入图像是RGB,那么你可以这样做:

img = imread('https://i.stack.imgur.com/ZUFSq.png'); % color image from question
bw = boundarymask(img(:,:,1)); % pretend the red channel is a labeled image.

请注意,两个区域可能具有相同的红色值,并且不会绘制边界。为防止这种情况,将 3 个通道中每个通道的结果按元素或运算在一起:

bw = boundarymask(img(:,:,1));
bw = bw | boundarymask(img(:,:,2));
bw = bw | boundarymask(img(:,:,3));