numpy RGB图像的量化

tnkciper  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(56)

我正在为一个大学项目做一个RGB图像的“卡通”滤镜,所以我想做一些事情来优化图像。我能使用的库只有numpy,matplotlib.pyplot和skimage。
现在我这样做了:

n = 64

quant[:,:,0] = np.floor_divide(R2, 256//(n//4))*(256//(n//4))
quant[:,:,1] = np.floor_divide(G2, 256//(n//4))*(256//(n//4))
quant[:,:,2] = np.floor_divide(B2, 256//(n//4))*(256//(n//4))

plt.imshow(quant)

字符串
通过这种方式,我实现了我的目标,但并不完全,因为我希望n是图像可以具有的颜色的确切数量,不多也不少。
有什么建议吗?

f0brbegy

f0brbegy1#

你要做的是:

  • (1)做颜色空间的k-means clustering,k=n。
  • (2)将每个像素替换为其对应的聚类颜色。

为了加分,您可能希望在感知颜色空间(如CIELAB)中执行此操作,而不是直接在RGB中执行此操作。
让sklearn来做k-means聚类会很方便,但是,如果做不到这一点,在纯NumPy中实现并不太难(可能是一个很好的练习)。
最后,你可能可以用skimage.segmentation.slic来复制这一切。SLIC做了更花哨的事情,在空间和颜色空间中进行聚类,但是你可以使用compactnessconvert2labenforce_connectivity参数来强制它只在颜色空间中进行聚类。

相关问题