删除RGB图像中对象周围的阴影

时间:2014-02-07 14:02:14

标签: image matlab image-processing rgb

我有一些图像,想要检测红色物体周围。但是在蓝色物体周围有一个红色的阴影被检测到并且不是真的。如何通过过滤或处理图像来删除这些红色阴影。任何Matlab命令或技术提示将不胜感激。 感谢

这是一个带有不需要的红色阴影的示例对象:  http://tinypic.com/view.php?pic=o7rmsg&s=8

我在这里放了一个不需要的红色阴影边框:  http://tinypic.com/view.php?pic=28jefec&s=8

3 个答案:

答案 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)

enter image description here

答案 1 :(得分:0)

我假设您正在进行某种颜色分割,并且可以得到一个二进制图像(BW),显示图像中检测到的所有“红色对象”,其中一些是您的真实对象,其他这是阴影。

在这种情况下,使用regionprops对检测到的对象的性质进行一些检查,过滤掉不正确的匹配是相当容易的。

stats = regionprops(BW,'basic'); % 'basic', 'all', or specific list of properties to measure

例如,如果检测到的“红色阴影”区域总体上比您要查找的实际对象小得多,则可以检查'Area'属性并删除任何不适合的检测到的部分。或者,您可以计算其他形状的其他度量(例如'Eccentricity'‘Solidity’),例如如果你的真实物体大致是圆形和坚固的,那么应该很容易区分它和你在示例图像中显示的那种区域。

答案 2 :(得分:0)

拍摄图像并将其转换为等效的灰度图像。 现在对此图像应用一般阈值或应用具有特定值/百分比的阈值。通过这样做,消除了小的不需要的红色像素,现在将新图像转换回rgb格式。您也可以尝试使用一些过滤器。