对提取的目标轮廓上色

    博主在做东西的时候,遇到的问题,对已经提取的目标,将其轮廓用有颜色的曲线在原图上画出来,其实就是为了视觉效果更好,想到以后可能还会用到,在这里给自己留个存档,也想和大家分享一下。在这里声明,只做了轮廓的上色,对于如何进行边缘检测未探讨。

 以下是程序(Matlab2014a编译环境)

%%边缘提取,在边缘处上色
clc
clear
close all
%% 读取图像
I = imread('coin.bmp');
subplot(1,3,1),imshow(I),title('原图')
%% 边缘检测
BW = edge(I,'sobel');
subplot(1,3,2),imshow(BW),title('边缘提取')
%% 边缘
[B,L,N] = bwboundaries(BW,'noholes');
%% 上色
colors=['b' 'g' 'r' 'c' 'm' 'y'];
subplot(1,3,3),imshow(BW),title('标记');hold on
for k=1:length(B)
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1),...
         colors(k),'LineWidth',2);
    %文本标记
    rndRow = ceil(length(boundary)/2);
    col = boundary(rndRow,2); row = boundary(rndRow,1);
    h = text(col+1, row-1, num2str(k));
    set(h,'Color',colors(k),...
        'FontSize',10,'FontWeight','bold');
end
hold off
上面程序运行可以通过,原图是coins图片里截的其中一个硬币,下面是演示结果:

对提取的目标轮廓上色_第1张图片

博主还是新人,如有问题希望大家在评论区批评指证。

你可能感兴趣的:(对提取的目标轮廓上色)