0

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

4

2 回答 2

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.

于 2013-11-08T13:10:08.690 回答
1

我假设您的图像大小为 M x N x3(宽度 x 高度 x RGB 分量),并且您想要所有三个分量(R、G、B)都小于 40 的平均像素数(这些将是暗像素)。然后,简单地做

    mean(mean(all(matrix<40,3),2),1)
于 2013-11-08T13:04:22.680 回答