【问题标题】:Checking Black Pixels in Matlab在 Matlab 中检查黑色像素
【发布时间】:2012-05-09 20:43:11
【问题描述】:

我有一个图像 (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);

I(掩码) = 128;

I(~掩码) = 255;

但如果我想检查...

如果有像素值0(黑色)>3,则索引(1,1)到(1,5)的像素变为128(灰色),如果有像素值0(黑色)

解决办法是什么?

谢谢

问候,华宇

【问题讨论】:

  • 如果您希望更多人查看您的问题,请考虑添加更多标签,但要选择与问题相关的标签。

标签: matlab


【解决方案1】:

尝试计算矩阵每一行的直方图,然后读取直方图值为零:

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 启发了我对这个解决方案的启发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多