gpt4 book ai didi

python - 如何按 "bursts?"对图像进行分组

转载 作者:太空狗 更新时间:2023-10-29 22:29:59 25 4
gpt4 key购买 nike

我认为这需要一些解释,所以请耐心等待...

我以亚秒级连拍一次拍摄了 2000 多张图像,每次 4-6 张。它们都被扔在了同一个地方,所以我需要对它们进行分类。我需要按突发对它们进行排序,但 EXIF 数据仅提供一分钟的分辨率。突发应该是几乎完全一样的东西,不同的突发被设计成明显不同。

我需要查看每张图片,将其与下一张进行比较,看看是否相似。如果差异太大,则它必须来自另一个连拍,它需要进入一个新文件夹,以及以下任何与其相似的图像,依此类推。

我的想法是将当前图像的每个像素与下一个像素之间的差异的绝对值相加。一旦该总和达到阈值,那一定意味着它们来自不同的突发(我可以做一些测试来找出一个好的阈值是什么)。

最大的问题是如何? PIL/Pillow 是否支持这样的东西?有没有更好的方法来查看一张图片是否“大部分”与另一张图片相同?

与使用任何特定技术相比,我对快速排序它们更感兴趣,因此欢迎使用其他方法。

...它几乎必须是 Python。

编辑:这是一对样本图像,它们应该放在同一个文件夹中: 001 002

这是来自以下连拍的两张图像,应该放在另一个文件夹中: 003 004

最佳答案

如果您想进行基于内容的匹配而不是上面好人建议的基于时间戳的排序,OpenCV 库是一个不错的选择。查看这篇关于如何将 OpenCV 库用于图像相似性匹配的不同技术的帖子:Checking images for similarity with OpenCV

关于同一主题有大量 SO 问题,因此通读它们会给你一个更好的主意。

根据上面的时间概念,当我只绘制您的照片拍摄时间时,我得到的是这样的图:

Clusters

不同的颜色代表不同的文件夹(应该使用不同的颜色图以获得更好的可见性,但是哦......)。

仅根据这些时间,您的集群间时间似乎确实比集群内时间明显更明显。

我还在下面的输出中计算了一些集群内和集群间指标:

folder: ImageBurstsDataset/001
Total image files in folder: 6
Total intra-cluster time: 1.0
Average intra-cluster time: 0.166666666667
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/002
Total image files in folder: 7
Total intra-cluster time: 1.0
Average intra-cluster time: 0.142857142857
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/003
Total image files in folder: 6
Total intra-cluster time: 1.0
Average intra-cluster time: 0.166666666667
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/004
Total image files in folder: 6
Total intra-cluster time: 2.0
Average intra-cluster time: 0.333333333333
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/005
Total image files in folder: 6
Total intra-cluster time: 2.0
Average intra-cluster time: 0.333333333333
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/006
Total image files in folder: 6
Total intra-cluster time: 1.0
Average intra-cluster time: 0.166666666667
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/007
Total image files in folder: 6
Total intra-cluster time: 2.0
Average intra-cluster time: 0.333333333333
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/008
Total image files in folder: 5
Total intra-cluster time: 2.0
Average intra-cluster time: 0.4
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/009
Total image files in folder: 6
Total intra-cluster time: 1.0
Average intra-cluster time: 0.166666666667
Max: 1.0, Min: 0.0

folder: ImageBurstsDataset/010
Total image files in folder: 6
Total intra-cluster time: 2.0
Average intra-cluster time: 0.333333333333
Max: 1.0, Min: 0.0


Inter-cluster times: [10.0, 8.0, 7.0, 5.0, 6.0, 6.0, 5.0, 10.0, 6.0]

免责声明:匆忙编写此脚本,只需要返回并确保所有边缘情况都是正确的。但除此之外……我从您上传的数据集中得出的结论是:

  1. 在一个集群中,一张图片与前一张的间隔绝不会超过 1 秒。

  2. 下一组中的第一张图片与前一组中的最后一张图片至少相隔 5 秒。

关于python - 如何按 "bursts?"对图像进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com