2014-09-05 87 views

回答

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]”)不是黑色。 – 2014-09-05 15:12:43

+0

@高性能表现感谢!就此添加注释。 – Divakar 2014-09-05 15:15:11

+0

我有点失落。如果我的im是<1536x2048x3 uint8>,假设黑色像素是(0,0,0)是正确的吗? – user2916044 2014-09-05 15:19:31