如何根据内容将一组图像文件聚集到不同的文件夹

Posted

技术标签:

【中文标题】如何根据内容将一组图像文件聚集到不同的文件夹【英文标题】:How to cluster a set of image files to different folders based on their content 【发布时间】:2013-11-24 19:17:23 【问题描述】:

我在一个文件夹中有一组图像,其中每个图像在白色背景上都有一个正方形或三角形(如this 和this)。我想将这些图像分成不同的文件夹(请注意,我不关心检测图像是否是正方形/三角形等。我只想将这两个分开)。

我计划在未来使用更复杂的形状(例如五边形或其他非几何形状),因此我正在寻找一种无人监督的方法。但主要任务始终是将一组图像聚集到不同的文件夹中。

最简单/最好的方法是什么?我查看了图像聚类算法,但它们对图像内部的颜色/形状进行聚类。就我而言,我只是想根据具有的形状分离这些图像文件。

感谢任何指针/帮助。

【问题讨论】:

这是一个非常广泛的问题,其中一些似乎有点无关紧要(文件/文件夹谈话)。要执行聚类,您需要找到代表此任务对象的features。您应该谷歌诸如二维形状描述符和角点检测之类的东西。 Here's a well cited survey paper that seems relevant.。确保您还阅读了基本的聚类技术(例如 k-means)。 【参考方案1】:

你可以按照这个方法:

1. Create a look-up tables with shape you are using in the images
2. Do template matching on the images stored in a single folder
3. According to the result of template matching just store them in different folders
4. You can create folders beforehand and just replace the strings in program according to the usage.

希望对你有帮助

【讨论】:

【参考方案2】:

这实际上取决于您的数据集是什么样的(例如,您的形状图像是什么样的),以及您希望您的解决方案有多强大。棘手的部分是从每个形状图像中提取特征以产生您满意的聚类结果。一些想法:

您可以为每个图像计算 SIFT 特征,然后根据这些特征对图像进行聚类:http://en.wikipedia.org/wiki/Scale-invariant_feature_transform

如果你不想走 SIFT 路线,你可以试试 HOG:http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients

一种更简单的方法 - 如果形状总是相同的比例,并且背景颜色是固定的,您可以根据 形状区域(例如,数量形状占用的像素)。

【讨论】:

以上是关于如何根据内容将一组图像文件聚集到不同的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 iOS 中的 JSON webservices post 方法将一组图像发送到服务器?

如何将一组图像拼接成 MxN 图像拼贴

将一组图像分类为类

如何使用基于一组图像的 opencv 训练 SVM?

如何让我的机器人从一组图像中选择一个随机图像

将一组图像上传到 coredata