在matlab中定义一个黑色图像

时间:2013-11-08 12:56:11

标签: matlab image-processing matrix normalization

我正在编写一个算法来定义整个或大部分是黑色的图像 我检查了一些图像,发现RGB格式的这些图像的值大多是30到40 我的想法是对的吗? 如果是的话,我怎样才能检查矩阵中的大多数值(在这种情况下是matric是我的图像)是否在30到40之间?
我使用了mean,但结果仍在数组中,然后我使用了norm,但是出现了这样的错误:
未定义的函数'norm'用于'uint8'类型的输入参数

2 个答案:

答案 0 :(得分:1)

我假设你的图像大小为M x N x3(宽x高x x RGB分量),你想要 all 三个分量的平均像素数(R,G, B)小于40(那些将是暗像素)。然后,只需做

    mean(mean(all(matrix<40,3),2),1)

答案 1 :(得分:1)

如果您想查看图片中出现的值,请执行以下操作:

假设你有一张图片M:

M = uint8(magic(5));

以下是如何进行粗略分发:

hist(double(M(:)))

您可以一次在整个图像上使用此功能,也可以按通道执行此操作,如下所示:

M = uint8(round(255*randn(5,5,3)))

hist(double(M(:))) % Will give the results for all color channels at once
hist(double(M(:,:,1))) % Will give the results for only the first (red?) color channel

使用hist可以让您了解分布的一般概念,但是如果您想知道最常发生的确切值。将hist替换为mode