我有一些图像,想要检测红色物体周围。但是在蓝色物体周围有一个红色的阴影被检测到并且不是真的。如何通过过滤或处理图像来删除这些红色阴影。任何Matlab命令或技术提示将不胜感激。 感谢
这是一个带有不需要的红色阴影的示例对象: http://tinypic.com/view.php?pic=o7rmsg&s=8
我在这里放了一个不需要的红色阴影边框: http://tinypic.com/view.php?pic=28jefec&s=8
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
我假设您正在进行某种颜色分割,并且可以得到一个二进制图像(BW
),显示图像中检测到的所有“红色对象”,其中一些是您的真实对象,其他这是阴影。
在这种情况下,使用regionprops
对检测到的对象的性质进行一些检查,过滤掉不正确的匹配是相当容易的。
stats = regionprops(BW,'basic'); % 'basic', 'all', or specific list of properties to measure
例如,如果检测到的“红色阴影”区域总体上比您要查找的实际对象小得多,则可以检查'Area'
属性并删除任何不适合的检测到的部分。或者,您可以计算其他形状的其他度量(例如'Eccentricity'
或‘Solidity’
),例如如果你的真实物体大致是圆形和坚固的,那么应该很容易区分它和你在示例图像中显示的那种区域。
答案 2 :(得分:0)
拍摄图像并将其转换为等效的灰度图像。 现在对此图像应用一般阈值或应用具有特定值/百分比的阈值。通过这样做,消除了小的不需要的红色像素,现在将新图像转换回rgb格式。您也可以尝试使用一些过滤器。