2012-04-30 38 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