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