Image 将分割区域的边界覆盖在原始图像上

Image 将分割区域的边界覆盖在原始图像上,image,matlab,image-processing,Image,Matlab,Image Processing,我正在尝试从图像中分割一个对象。对象是一片叶子,如左图所示。我对它进行了分割,得到了正确的图像: 现在,我尝试将二值图像中分割区域轮廓的边界覆盖在原始图像上,以便获得与此相似的图像: 我真的不知道该怎么做。我试图跟踪二值图像的边界,然后在主图像上发布,但不知道如何做到这一点。这很容易做到。只需使用你的面具,并计算周长你的面具使用。找到这些边后,可以使用这些位置并将原始图像中的像素设置为黄色。为此,只需提取原始图像的每个颜色平面,然后使用沿遮罩周长的像素索引到每个颜色平面,并将其设置为特定通道

我正在尝试从图像中分割一个对象。对象是一片叶子,如左图所示。我对它进行了分割,得到了正确的图像:

现在,我尝试将二值图像中分割区域轮廓的边界覆盖在原始图像上,以便获得与此相似的图像:


我真的不知道该怎么做。我试图跟踪二值图像的边界,然后在主图像上发布,但不知道如何做到这一点。

这很容易做到。只需使用你的面具,并计算周长你的面具使用。找到这些边后,可以使用这些位置并将原始图像中的像素设置为黄色。为此,只需提取原始图像的每个颜色平面,然后使用沿遮罩周长的像素索引到每个颜色平面,并将其设置为特定通道值。要使其变为黄色,沿周长将红色和绿色值设置为255,沿周长将蓝色值设置为0。如果您想将所有这些合并到一个图像中,请使用并沿着第三维进行操作。换句话说,假设您的二进制图像存储在
mask
中,原始图像存储在
im
中,您可以这样做(假设彩色图像):



out
应该包含原始图像,叶子的周长覆盖在黄色的顶部。

从Matlab版本R2015a开始,您可以在图像处理工具箱中执行此操作:


我认为链接中提供的文档应该很容易理解:)

看起来像另一个有用的工具
bPerim
!谢谢+1@Divakar-酷!现在我在教你东西!有一天,我偶然发现了关于bPerim的事!
perim = bwperim(mask, 8); %// Get perimeter of the mask
red = im(:,:,1); %// Extract the colour planes of the original image
green = im(:,:,2);
blue = im(:,:,3);
red(perim) = 255; %// Set those pixels in the perimeter to yellow
green(perim) = 255;
blue(perim) = 0;
out = cat(3, red, green, blue); %// Make an output image
figure;
imshow(out);