0

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

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

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

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

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

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

我(掩码)= 128;

我(〜掩码)= 255;

但如果我想检查...

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

有什么解决办法?

谢谢你

问候, Wahyu

4

1 回答 1

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));

我被这个页面启发了这个解决方案。

于 2012-04-30T05:47:39.920 回答