2012-04-30 42 views
0

我有一個圖像(5×5)配有3個值,其值0,128,和255檢查黑色像素在Matlab

我想要查詢的索引(1,1)到(1的像素的像素, 5)。如果存在像素值0(黑色),則索引(1,1)到(1,5)的像素變爲128(灰色),如果沒有,則像素變爲255(白色)。

我想再次執行這些步驟,檢查索引(2,1)到(2,5),(3,1)到(3,5),直到底部。

從上面的問題,我得到這樣一個解決方案:

掩模= repmat(任何(I == 0,2),5,1);

I(mask)= 128;

I(〜mask)= 255;

但如果我想要查詢...

如果有值0(黑)> 3,則指數(1,1)的各像素(1,5)被改變爲128像素(灰色),如果像素值爲0(黑色)< = 3或沒有黑色像素,則像素更改爲255(白色)。

解決方案是什麼?

謝謝

問候,Wahyu

+0

如果你想讓更多的人看你的問題,考慮添加更多的標籤,但選擇與問題相關的標籤。 –

回答

0

嘗試計算矩陣中的每一行的直方圖,然後讀零直方圖值:

x = m[1,:]; 
[counts, bins] = hist(x, unique(x)); 
[diff, pos] = min(abs(bins - 0)); % replace zero with the value you want to search for 
if counts(pos) > 3 
    z = 128 
else 
    z = 255 
end 
m[1,:] = z * ones(1, size(m)(2)); 

我的靈感該解決方案通過this page