Matlab: 如何在彩色图像中找到黑色像素的数量?

3
我希望使用MATLAB找出彩色图像中黑色像素的数量,应该怎么做?
谢谢。
1个回答

7

使用 nnz 的方法如下 -

nnz(all(im==0,3))

其中im是您的图像数据。

替代方法- sum(reshape(all(im==0,3),[],1))sum(sum(all(im==0,3)))

这里的假设是黑色像素是三元组(0,0,0)


如果您将黑色像素定义为在所有通道上具有值处于区间[0 th]的像素,请使用此选项-

nnz(all(im<=th,3))

3
当然,要注意您对“黑色”的定义是所有RGB值都恰好为“0”,而接近黑色的颜色,如“1,1,1”(我假设一个范围为[0..255]的比例)不是黑色。 - High Performance Mark
我有点迷失了。如果我的图像是<1536x2048x3 uint8>,那么黑色像素为(0,0,0)的假设是否正确? - hs100
@user2916044 假设你所说的黑色是指纯黑色,而不是对人类来说看起来像黑色的极暗颜色。 - Dan
如果有其他标准来定义您的“黑色”像素,请告诉我们。 - Divakar
@user2916044,为此,更改将是最小的。代码将是- nnz(all(im<=th,3)),其中th是阈值。 - Divakar
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接