通常RGB图像包含三个颜色通道,这些通道组合可以生成不同颜色,颜色数量表达上限为255255255。
【P mode】但是对于Mask而言,每个颜色通常表示一个物体,而物体的种类是有限的,不需要太大的表达空间,因此可以用P模式。P模式需要预定义好多个颜色的模板,_palette= [0, 0, 0, 128, 0, 0, 0, 128,…],因此数据只需要一个通道存储index即可,(index可以从模板中取出对应的颜色),这样表达颜色个数上限是255但是足够了,而且只占用1/3数据存储空间。颜色模板可以从图像中读取出来。
palette = Image.open(path.expanduser(davis_path + '/Annotations/480p/blackswan/00000.png')).getpalette()
【L mode】同样只存储一个通道数据,但是代表的是灰度图的光照强度,而不是索引。
Anyway, 对于单通道mask image,P模式更合理。对于灰度图用L模式。