2014-02-07 54 views
1

我有一些圖像並希望檢測紅色物體。但是在藍色物體周圍有一個紅色的陰影,它被檢測到並且不是真的。我如何通過過濾或處理圖像來去除這些紅色陰影。任何Matlab命令或技術提示將不勝感激。 感謝刪除RGB圖像中物體周圍的陰影

這是不必要的紅色陰影的樣本對象: http://tinypic.com/view.php?pic=o7rmsg&s=8

我把邊框不必要的紅色陰影的位置: http://tinypic.com/view.php?pic=28jefec&s=8

回答

0

我假定你正在做某種顏色的分割並可以得到一個二值圖像(BW),顯示圖像中檢測到的所有「紅色物體」,其中一些是您的真實物體,另一些是陰影。

在這種情況下,使用regionprops可以很容易地對檢測到的對象的性質進行一些檢查,以濾除不正確的匹配。

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

例如,如果檢測到「紅色陰影」地區在總體上比你在尋找真正的對象總是要小很多,你可以檢查'Area'財產,並刪除任何檢測到的部位其別不適合。或者,您可以計算一些其他形狀的度量(例如,'Eccentricity'‘Solidity’),例如如果你的真實物體大致是圓形的和堅實的,那麼應該很容易區分你在示例圖像中顯示的那種區域。

+0

感謝您的提示是正好我想做一個分割,我成功地做到了,但現在這些陰影也被檢測到,我有消除它們的問題。我期望的物體具有廣泛的變化形式,不幸的是,它們中的大部分都是彎曲的並且非常類似於這種紅色陰影。我上傳另一張包含所需對象的圖片:http://tinypic.com/view.php?pic=2zefsc8&s=8#.UvVRjLSwROw。 –

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

+0

感謝這段代碼,但問題是不裁剪藍色區域看這個圖像http://tinypic.com/view.php?pic=2zefsc8&s=8綠色箭頭顯示所需的對象紅色箭頭顯示那些太褪色的色調太淡在這個樣本圖像中,但在一些圖像中,像在主文章中上傳的圖像更強烈並且被檢測爲期望的對象。這種色調存在於黃色或淺橙色背景上的藍色物體周圍。我尋找像銳化或褪色這樣的濾鏡,可以消除那些紅色陰影而不是紅色的所需對象。 –

+0

因爲我想消除那些紅色陰影和處理圖像,因爲我現在正在做的是成功找到所需的對象,但是這個過程也找到陰影。除了需要的物體之外,只需要去除陰影就不會被檢測到。 –

0

把你的圖像,並將其轉換成它的灰度等效的。 現在將一般閾值應用於此圖像或應用具有特定值/百分比的閾值。通過這樣做,小的不需要的紅色像素被消除,現在將您的新圖像轉換回rgb格式。您也可以嘗試使用一些過濾器。