Image 在R?

Image 在R?,image,r,image-processing,Image,R,Image Processing,我这里有一个一般性的问题: 通常使用digicams时,我们倾向于点击大量图片,这些图片可能会重复,在Picassa上共享时会浪费在线空间,或者在尝试删除一些不需要的图片时会增加开销 是否可以使用R对照片进行群集?我的意思是,在Matlab中有一些用于图像处理的聚类功能,但是这种功能是否可用,或者在R中是否有这样做的建议 请提供一些关于这个话题的想法 如果你看看CRAN,有各种(我估计大约10个)包可以读取图像数据。当然,还有各种包可以进行集群。从理论上讲,您可以将原始图像数据插入到聚类算法中,

我这里有一个一般性的问题:

通常使用digicams时,我们倾向于点击大量图片,这些图片可能会重复,在Picassa上共享时会浪费在线空间,或者在尝试删除一些不需要的图片时会增加开销

是否可以使用R对照片进行群集?我的意思是,在Matlab中有一些用于图像处理的聚类功能,但是这种功能是否可用,或者在R中是否有这样做的建议


请提供一些关于这个话题的想法

如果你看看CRAN,有各种(我估计大约10个)包可以读取图像数据。当然,还有各种包可以进行集群。从理论上讲,您可以将原始图像数据插入到聚类算法中,但在实践中,这不会很好地工作。就速度而言,它会非常慢,就准确性而言,它可能也会非常糟糕。对图像数据进行聚类的现代技术依赖于从图像中提取的特殊特征并对其进行操作。最好的特性取决于应用程序,但一些最著名的特性是SIFT、SURF和HOG。旧的技术依赖于图像颜色的直方图作为特征,这在前面提到的R软件包中是完全可行的,但它不是非常准确——它很难区分大海和蓝色房间的图片

那怎么办呢?这取决于你的最终目标,真的。一种方法是使用各种开源特性提取器之一,将数据保存为文本或其他R可读格式,然后像往常一样在R中进行数据处理

提供了一个不错的开源C库,用于提取具有cli接口的功能。如果您使用此选项,我建议在三个颜色通道上使用密集的SIFT提取。然后用连接的SIFT向量表示每个图像,并应用您最喜欢的聚类技术(可以处理数千维的向量)。这很难给你们提供最先进的表演,但这只是一个开始

具有各种功能提取器的参考实现,但仅限于二进制


注意:根据我的经验,R不能很好地扩展大型高维数据集(大小在GB范围内)。我爱死,但用C++来做这件事。谢谢@Neo_Me:我记得有一个Python+C程序基于这些技术对图像进行聚类。据我所知,这是一个用于研究目的的一次性项目,但它可能会带来灵感。