在Matlab中检查黑色像素

时间:2012-04-30 05:10:22

标签: matlab

我有一个图像(5x5)像素,其中有3个值,值为0,128和255。

我想检查索引(1,1)到(1,5)的像素。

如果有像素值0(黑色),则索引(1,1)到(1,5)的像素变为128(灰色),如果没有,则像素变为255(白色) )。

我想再次执行这些步骤,检查索引(2,1)到(2,5),(3,1)到(3,5),直到底部。

从上述问题中,我得到了这样的解决方案:

mask = repmat(any(I == 0,2),5,1);

我(面具)= 128;

I(~mask)= 255;

但如果我想检查......

如果存在像素值0(黑色)> 3,则如果存在像素值0(黑色),则索引(1,1)至(1,5)的像素变为128(灰色) < = 3或没有黑色像素,则像素变为255(白色)。

解决方案是什么?

谢谢

问候,Wahyu

1 个答案:

答案 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让我对这个解决方案感到鼓舞。