LBG的VQ(矢量量化)实现

代码也是网上找的改了改。语音课老师让介绍并行VQ。VQ是真的好慢好慢…

from scipy.cluster.vq import kmeans, vq
from numpy import array, reshape, zeros
import cv2

vqclst = [2, 10, 100, 256]

data = cv2.imread('018.jpg').astype(float)
(height, width, channel) = data.shape

data = reshape(data, (height * width, channel))
for k in vqclst:
    print('Generating vq-%d...' % k)
    (centroids, distor) = kmeans(data, k)
    (code, distor) = vq(data, centroids)
    print('distor: %.6f' % distor.sum())
    im_vq = centroids[code, :]
    cv2.imwrite('result-%d.jpg' % k, reshape(im_vq, (height, width, channel)))

LBG的VQ(矢量量化)实现_第1张图片
LBG的VQ(矢量量化)实现_第2张图片
LBG的VQ(矢量量化)实现_第3张图片
分别是三种聚类中心数量的效果图,100各中心就差点把我电脑跑崩了。

你可能感兴趣的:(LBG的VQ(矢量量化)实现)