我正在努力检测Java中2个视频之间的相似性。用户将建议两个视频,并且软件必须通过检查文件内容来检测它们是否相似。我了解到可以比较2个视频的每一帧。谁能分享可以用Java实现的任何合适的算法(或代码或方法)?

最佳答案

用于确定图像相似性的算法种类繁多。在Google Scholar中搜索image similarity algorithmvideo similarity algorithm会产生大量相关论文-StackOverflow上还有一些问题(例如this one)。

需要注意的几个重要方面:


没有相似性的通用定义-您需要针对特定​​目的进行定义。例如,具有红色正方形的图像和具有蓝色正方形的图像可以被认为是相似的,因为它们都具有正方形,或者基于色差完全不相似。
相似性通常不是用绝对术语定义的,即不存在或不存在。大多数相似性算法会产生一个相对指标,该指标必须与基线相关才能产生有意义的结果。例如,如果您有一组描述各种颜色的正方形的图像,则绝对值可能会获得较高的相似度值,但应着重注意由颜色变化引起的微小差异。


免责声明:在使用通过搜索引擎找到的任何算法之前,您应该调查其法律地位。视频相似性是一个相当热门的研究领域,专利等可能会阻碍很多算法。使用它们进行学术研究可能是可以接受的,但是您还应该向律师咨询有关...的任何其他信息。

编辑:

我不确定您需要什么,但是我可以提供一些一般性提示:


研究视频元数据(例如长度和分辨率)是否有用。例如,将30秒剪辑的内容与3小时影片进行实际比较是否有意义?
考虑是否可以对来自每个文件中相同时间戳的相应帧的随机样本使用基于图像的相似性。在大多数情况下,详细检查每个帧可能会浪费时间和CPU周期。
考虑使用分层的相似性度量体系结构,在实际的CPU占用率之前,使用更简单,更便宜的方法清除明显的情况。例如,计算帧的平均颜色和其他简单度量可能会更容易而不是轮廓检测或人脸识别。


就是说,我不相信在这里能够得到明确的答案。您将不得不进行实验,看看哪种方法最适合您的实际用例...

07-26 09:30
查看更多