如何将彩色颗粒图像转换为黑白 (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));
我想使用简单代码将彩色图像转换为二值图像 (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));