2016-05-25 50 views
1

我有一個形象巴紐,我想要做下列任務與給定的圖像:如何從圖像中刪除特定的顏色並識別位置?

1 -從圖像中刪除不必要的白色陰影。

2 -確定圖像中黑色大點的位置/座標。

對於Task 1我的嘗試是:

img = imread('1.png'); 
imshow(img); 
I = img; 
[r c] = size(I); 
for i=1:r 
    for j=1:c 
     if I(i,j) > 230 %here i am changing 240 to different values to get result 
      %but this is just some hack 
      I(i,j) = 0; 
     end 
    end 
end 
imshow(I); 

其中原始圖像:

duck_unprocess

和MATLAB的結果是:

duck_process 而對於(2)我出的想法我怎麼做,任何幫助表示讚賞。

注:我是圖像處理新手,所以我很容易解釋我,所以我可以理解。感謝

+0

(1)轉換圖像的灰度圖像,然後應用閾值(例如'I_gray> 0.4;' - >然後應用的https://de.mathworks。 com/help/images/ref/regionprops.html來找到圖像的邊界框 (2)使用與centroid選項相同的函數'regionprops'來查找你的圓圈如果你提前了粗略的圓圈大小,那麼你甚至可以指定它來獲得最好的結果 – tim

+0

找到邊界框的另一種方法很好:http://stackoverflow.com/a/10140148/701049 – tim

回答

0

對於任務1,我不完全相信你所說的「刪除」,從您的代碼是什麼意思,我想你想的像素值設置爲0 一個簡單且快速的方法是:

img = imread('1.png'); 
img(img>230)=0; 

此代碼將img中所有高於230的值設置爲零。 img> 230創建一個大小爲img的邏輯數組,對於大於230的元素爲true,對於其他人爲false。 然後這個邏輯陣列被用來設置這些像素爲0.(但你可以做任何你想要的東西)

Matlab被設計成對矢量和矩陣進行操作,循環遍歷元素通常要慢得多。

有關任務2,也許看這個:http://nl.mathworks.com/help/images/examples/detect-and-measure-circular-objects-in-an-image.html

+0

這是我用過的相同的邏輯,但相反的任務1是通過這種方法實現的[SO Question](http://stackoverflow.c om/a/20499918/5896744),但我正在努力將圖像背景存儲爲透明,並且仍然不知道如何實現第二個任務 –

+0

哦,我看到了,您希望將其存儲爲透明的白色。我發現這個主題的鏈接: http://ch.mathworks.com/matlabcentral/newsreader/view_thread/140948 我認爲你應該玩imwrite。 對於任務二,從我發佈的其他鏈接中獲取靈感,對於您的圖像應該很容易。 –

相關問題