首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >图像颜色数

图像颜色数

作者头像
裴来凡
发布2022-05-28 16:47:28
发布2022-05-28 16:47:28
6820
举报
代码语言:javascript
复制
import numpy as np
from PIL import Image
import matplotlib.pylab as pylab
from skimage.io import imread, imshow, show
def signaltonoise(a,axis,ddof=0): 
    a=np.asanyarray(a)
    m=a.mean(axis)
    sd=a.std(axis=axis,ddof=ddof)
    return np.where(sd==0,0,m/sd)
img=Image.open('C:/Users/xpp/Desktop/Lena.png')#原始图像
pylab.figure(figsize=(30,45))
num_colors_list=[1 << n for n in range(8,0,-1)]#图像颜色数
snr_list=[]
i=1
for num_colors in num_colors_list:
    im1=img.convert('P',palette=Image.ADAPTIVE,colors=num_colors)
    snr_list.append(signaltonoise(im1,axis=None))
    i+=1
pylab.plot(num_colors_list,snr_list,'r.-')
pylab.xlabel('Max# colors in the image')
pylab.ylabel('SNR')
pylab.title('Change in SNR w.r.t. # colors')
pylab.xscale('log',basex=2)
pylab.gca().invert_xaxis()

[256, 128, 64, 32, 16, 8, 4, 2]

算法:图像颜色数是图像颜色的量化,包括2,4,8,16,32,64,128,256等。一种最简单而又直接的方式就是定义一个含有256*256*256=16777216个元素的数组,然后循环整幅位图,对位图某处对应的颜色值,计算数组的索引。颜色量化虽然缩小了图像的尺寸(比特/像素的数量),但是图像的质量变差了。通常情况下,信噪比是图像质量的一种度量方法,信噪比越高,图像质量越好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档