MATLAB给彩色图像增加轮廓线

img


MATLAB如何将图片中有颜色的区域增加轮廓线,要求相同颜色区域的边缘形成一条封闭的线,有几种颜色就会有几条轮廓线,最后的结果一张黑白的图,里面有几条白色轮廓线

在MATLAB中,可以使用edge函数来实现将图片中有颜色的区域增加轮廓线的功能。具体步骤如下:
1.读入图片并将其转换为灰度图像。

rgbImage = imread('your_image.png');
grayImage = rgb2gray(rgbImage);

2.对灰度图像进行边缘检测,产生包含轮廓线信息的二值图像。

bwImage = edge(grayImage);

3.对二值图像进行连通性分析,将相邻的白色像素标记为同一个区域。

cc = bwconncomp(bwImage);

4.将每个区域的边缘提取出来,形成一条封闭的线。这里使用MATLAB中的regionprops函数进行处理。

props = regionprops(cc, 'PixelList');

5.将这些线绘制在一个空白图像上,得到最终的结果。

bwOut = zeros(size(bwImage)); % 创建一个空白图像
for i = 1:length(props)
    % 获取当前区域的像素坐标
    pixelList = props(i).PixelList;
    % 添加当前区域的轮廓线到空白图像上
    bwOut(sub2ind(size(bwOut), pixelList(:,2), pixelList(:,1))) = 1;
end

最终得到的bwOut即为包含所有白色区域轮廓线的黑白二值图像,其中白色区域的轮廓线形成了相应的白色线条。可以使用imshow函数或imwrite函数来显示或保存该图像。