我有一些图像,想要检测周围的红色物体。但是在蓝色物体周围有一个红色阴影,这是检测到的,并不是真的。如何通过过滤或处理图像来去除这些红色阴影。任何Matlab命令或技术提示都将不胜感激。谢谢
这是一个带有不需要的红色阴影的示例对象:http://tinypic.com/view.php?pic=o7rmsg&s=8
我在不需要的红色阴影周围添加了一个边框:http://tinypic.com/view.php?pic=28jefec&s=8
发布于 2014-02-07 23:27:40
I=imread('http://oi62.tinypic.com/o7rmsg.jpg');
I=imcrop(I,[200 100 400 250]);
Ir=I(:,:,1);
Ig=I(:,:,2);
Ib=I(:,:,3);
I1=Ib-Ir;
bw=im2bw(I1,graythresh(I1));
I2(:,:,1)=Ir.*uint8(bw);
I2(:,:,2)=Ig.*uint8(bw);
I2(:,:,3)=Ib.*uint8(bw);
imshow(I2)

发布于 2014-02-07 22:57:31
我假设你正在做某种颜色分割,可以得到一个二值图像(BW),显示在图像中检测到的所有“红色物体”,其中一些是你的真实物体,另一些是阴影。
在这种情况下,很容易使用regionprops对检测到的对象的性质进行一些检查,以过滤出不正确的匹配。
stats = regionprops(BW,'basic'); % 'basic', 'all', or specific list of properties to measure
例如,如果检测到的“红色阴影”区域在总体上总是比你正在寻找的真实对象小得多,你可以检查'Area'属性并删除任何检测到的不适合的部分。或者你可以计算形状的其他度量(例如'Eccentricity'或‘Solidity’ )-例如,如果你的真实物体大致是圆形和实心的,那么应该很容易区分这与你在示例图像中显示的区域的区别。
发布于 2014-02-09 18:29:29
把你的图像转换成它的灰度级等价物。现在对此图像应用一般阈值或应用具有特定值/百分比的阈值。这样做,不需要的小红色像素被消除,现在将您的新图像转换回rgb格式。您也可以尝试使用一些过滤器。
https://stackoverflow.com/questions/21629733
复制相似问题