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