首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

【数字图像处理】使用kmeans算法对TrueColor图片开展优化

2013-11-02 
【数字图像处理】使用kmeans算法对TrueColor图片进行优化实验的主要内容是将truecolor的图片通过一个优化算

【数字图像处理】使用kmeans算法对TrueColor图片进行优化

实验的主要内容是将truecolor的图片通过一个优化算法得到其256色的最优表示。本实验采用kmean做算法对像素的色彩进行聚类的计算,分类得到一个色彩数为256的CodeBook,和一个包含有CodeBook索引的矩阵,原图片的颜色值都从CodeBook中获取,colorMap矩阵保存其中像素颜色的索引值,这样通过索引恢复出一个近似的图片文件,达到比传统的GIF图像更好的效果。

【数字图像处理】使用kmeans算法对TrueColor图片开展优化

【数字图像处理】使用kmeans算法对TrueColor图片开展优化【数字图像处理】使用kmeans算法对TrueColor图片开展优化

【数字图像处理】使用kmeans算法对TrueColor图片开展优化

由上图可见,256色的GIF图像有明显的颗粒感,这是因为图像发色数过低造成的颜色不连贯。

【数字图像处理】使用kmeans算法对TrueColor图片开展优化【数字图像处理】使用kmeans算法对TrueColor图片开展优化

【数字图像处理】使用kmeans算法对TrueColor图片开展优化

上图是通过优化算法计算的256色的图片,从图片上可以看出,颜色过渡平滑,几乎看不出颗粒感,相较于256色的GIF图像有明显的优势。

【数字图像处理】使用kmeans算法对TrueColor图片开展优化【数字图像处理】使用kmeans算法对TrueColor图片开展优化

从图片上可以很好的看出,GIF采用的ColorMap对图像有明显的失真,细节图中颗粒感明显,对比采用优化算法的细节图,同样是256色,优化算法处理之后的图片可以和采用24bitTrueColor的JPG图片相媲美,从图像中几乎看不出失真。

【数字图像处理】使用kmeans算法对TrueColor图片开展优化【数字图像处理】使用kmeans算法对TrueColor图片开展优化【数字图像处理】使用kmeans算法对TrueColor图片开展优化


源代码:

main.py

from scipy.cluster.vq import *from numpy import *import cv2def kmeansImg(fileName,clusterNum):    img=cv2.imread(fileName)    rl=img.shape[0]    cl=img.shape[1]    img=reshape(img,(img.shape[0]*img.shape[1],img.shape[2]))    codeBook,dis1=kmeans(img,clusterNum)    colorMap,dis2=vq(img,codeBook)    colorMap=reshape(colorMap,(rl,cl))    return codeBook,colorMapdef recoveryImg(codeBook,colorMap):    img=[]    for r in range(colorMap.shape[0]):        for l in range(colorMap.shape[1]):            img.append(list(codeBook[colorMap[r,l]]))    img=array(img)    img=reshape(img,(colorMap.shape[0],colorMap.shape[1],3))    return img            






热点排行