如何检测仅具有红色物体的图像中的边缘

bk *_*dha 2 matlab image image-processing

我有一个图像,在该图像中检测到所有红色物体.

这是一个有两个图像的例子:

http://img.weiku.com/waterpicture/2011/10/30/18/road_Traffic_signs_634577283637977297_4.jpg

但是当我继续使用该图像进行边缘检测时,我得到的输出只有黑色.但是,我想检测那个红色物体的边缘.

r=im(:,:,1); g=im(:,:,2); b=im(:,:,3);
diff=imsubtract(r,rgb2gray(im));
bw=im2bw(diff,0.18);
area=bwareaopen(bw,300);
rm=immultiply(area,r);  gm=g.*0;  bm=b.*0;
image=cat(3,rm,gm,bm);
axes(handles.Image);
imshow(image);

I=image;
Thresholding=im2bw(I);

axes(handles.Image);
imshow(Thresholding)

fontSize=20;
edgeimage=Thresholding;
BW = edge(edgeimage,'canny');
axes(handles.Image); 
imshow(BW);
Run Code Online (Sandbox Code Playgroud)

Ben*_*_11 8

申请时,im2bw您只想使用红色通道I(即第一个通道).因此使用此命令:

Thresholding =im2bw(I(:,:,1));
Run Code Online (Sandbox Code Playgroud)

例如,产生此输出:

在此输入图像描述

  • 哈哈这么简单.我正打算对这个坏男孩应用一些严肃的形态.+1. (2认同)