1. 描述
在这个练习中,你将使用K-means通过减少图像包含的颜色数量来压缩图像。首先,下载data6.zip并将其内容加载到Matlab/Octave工作目录中。
照片来源:本练习使用的鸟照片属于Frank Wouters,经其许可使用。
2. 图像表示
这个练习的数据包含一个538像素×538像素的TIFF图像,名为bird_large.tiff。它看起来像下面的图片。
在这个练习中,您将使用K-Means将颜色计数减少到k=16.也就是说,你将计算16种颜色作为聚类中心,并将图像中的每个像素替换为最近的聚类中心颜色。
因为计算聚类538×538图像对一台台式电脑很很耗时,你将在128×128的bird_small.tiff上运行K-Means。一旦你计算了小图像上的聚类中心,就可以使用16种颜色替换大图像中的像素。
3. K-means in Matlab/Octave
在Matlab/Octave中,用以下命令将小图像加载到程序中:
A = double(imread('bird_small.tiff'));
这将创建一个三维矩阵A,其前两个索引标识像素位置,最后一个索引表示红色、绿色或蓝色。例如,A(50,33,3)给出了像素在位置y=50,x=33处的蓝色强度。(首先给出Y位置,但在我们的示例中这并不重要,因为X和Y尺寸具有相同的尺寸)
你的任务是从该图像计算16个集群中心,每个中心是一个长度为3的向量,包含一组RGB值。这里是k-均值算法,因为它适用于这个问题:
3.1 K-mean算法
- 初始化时,从原始小图片中随机抽取16种颜色作为样本。μ1,μ2,…,μ16\mu_1,\mu_2,\dots,\mu_{16}μ1,μ2,…,μ<

最低0.47元/天 解锁文章
134

被折叠的 条评论
为什么被折叠?



