KTSpectrum 0.0.1

KTSpectrum 0.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2016年3月
SPM支持 SPM

Kyle Ryan 维护。



即将推出。

背景

最近,我对计算机如何处理图像的方式产生了兴趣。其中一个领域是主导颜色评估,它在自适应 UI 和其他一些酷炫的领域中有所应用。我首先注意到了 Apples Music 背景如何根据您正在收听的专辑的主导颜色而改变。基于此,我对计算机程序如何处理和检测图像的主导颜色产生了兴趣。

CocoaPod

KTSpectrum 以 Cocoapod 的形式提供,您可以通过将以下内容添加到 podfile 中来安装它。

pod 'KTSpectrum'

评估如何工作?

取像素样本

在 UIImage 维度范围内部生成一组随机的 CGPoints。{(x1, y1), (x2, y2), ... (xn, yn)} 其中 n 是一个相当大的数字。然后将这些 CGPoints 发送到 UIImage 扩展,该扩展返回 CGPoint 那里的 UIImage 的像素信息(R, G, B, A)。使用字典存储像素数据,其中 CGPoint 作为键值对的键。像素信息存储后,程序将此字典发送到 k-means 聚类算法。

k-means 聚类

k-means 聚类是一种将 n 个观察值划分为 k 个簇的方法。每个观察值(n)都关联到最近的均值(k)的簇。

使用沃洛诺图可视化 k-means 聚类的结果是最简单的方法。x-y 平面中的每个点都被分配到一个质心 k。算法在质心的移动不大(d < 0.0001)时停止迭代。

您可以使用以下图表更好地可视化算法的步骤

Swift 实现

使用 KTSpectrum 的最简单方法是以下语句

let image = UIImage(named: "image.jpg")
let colors = image.getSpectrum()

getSpectrum() 函数将返回前10种颜色及其百分比。这些值是10个质心的位置。

getSpectrum 将返回一个包含 Spectrum 对象的数组,如下所示。

Spectrum(centroidMeanColor: UIColor, percentage: Double)