视频相似性检测

视频相似性检测通常用于处理因压缩、缩放、亮度等因素导致非完全一致的视频。通过一秒一帧切取并使用PHash算法提取每帧的指纹,再进行相似度对比。PHash是一种图像指纹提取方法,包括缩放图像、转为灰度图、DCT变换、取均值二值化等步骤,最后计算汉明距离确定视频帧的相似度。

背景

完全一样的视频可以通过MD5判断,但视频可能因为压缩格式、缩放、明暗、尾部截断导致非完全一致,故需要对视频帧进行重复检测。非常相似定义:缩放、亮度、帧率、水印、格式变换等造成的视频差异(旋转的效果不佳)。本文采用一秒一帧切帧,对每帧提取Phash(perceptual hash algortihm 感知hash算法)值,进行相似度对比。

PHash简介

用于提取图像指纹

  1. 缩放为32*32的小图
  2. 转为灰度图, Gray = R0.299 + G0.587 + B*0.114
  3. DCT离散余弦变换,只保留左上角8*8的部分
  4. 求均值,根据均值二值化,变成64位01串

步骤

  1. 下载视频
  2. 获取视频帧,间隔为24帧(一般为1s)
  3. 每帧提取phash特征,补齐64位拿到指纹
  4. 指纹间求汉明距离 diff对有多少个,根据测试集调整阈值
# @Description: 比较两个视频是否非常相似
#               非常相似定义:缩放、亮度、帧率、格式变换等造成的视频差异(旋转的效果不佳)

import cv2
import numpy as np


def pHash(img):
    """
    get image pHash value
    """

    # 缩放图片为32x32灰度图片
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img = cv2.resize(img, (32, 32), interpolation=cv2.INTER_CUBIC)

    # 创建二维列表
    h, w = img.shape[:2]
    vis0 = np.zeros((h,w), np.float32)
    vis0[:h,:w] = img

    # 二维Dct变换
    vis1 =
【资源说明】 基于Vue+Flask+python实现的短视频相似度检测系统源码(使用多种哈希算法+孪生神经网络)+项目说明.zip 文本相似度检测算法使用Jaccrad,余弦相似度及Dice,最终结果为三者取平均值 视频相似度检测即为遍历关键帧对比,使用均值哈希,差值哈希,感知哈希,三直方图及SSIM指标,若这五个指标中有四个及以上大于阈值0.55,则调用神经网络进行进一步对比,最终分数为0.1*(前五个算法之和) + 神经网络/100 前端 node.js版本v14.17.1 frontend目录下npm i && npm run serve 生产环境搭建命令为npm run build,文件在dist目录下 ### 后端 Python版本(Anaconda)3.7 backend目录下pip install -r requirements 数据库建议清空,测试用户名ivy,密码ivy 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
OpenCV(Open Source Computer Vision Library)是一款开源的计算机视觉库,专门为图像和视频处理任务设计,广泛应用于学术研究、工业应用以及个人项目中。以下是关于OpenCV的详细介绍: 历史与发展 起源:OpenCV于1999年由英特尔公司发起,旨在促进计算机视觉技术的普及和商业化应用。该项目旨在创建一个易于使用、高效且跨平台的库,为开发者提供实现计算机视觉算法所需的基础工具。 社区与支持:随着时间的推移,OpenCV吸引了全球众多开发者和研究人员的参与,形成了活跃的社区。目前,OpenCV由非盈利组织OpenCV.org维护,并得到了全球开发者、研究机构以及企业的持续贡献和支持。 主要特点 跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG、DNN等)、视频分析、相机校正、立体视觉、机器学习(SVM、KNN、决策树等)、深度学习(基于TensorFlow、PyTorch后端的模型加载与部署)等。 高效性能:OpenCV代码经过高度优化,能够利用多核CPU、GPU以及特定硬件加速(如Intel IPP、OpenCL等),实现高速图像处理和实时计算机视觉应用。 多语言支持:尽管OpenCV主要使用C++编写,但它提供了丰富的API绑定,支持包括C、Python、Java、MATLAB、JavaScript等多种编程语言,方便不同领域的开发者使用。 开源与免费:OpenCV遵循BSD开源许可证发布,用户可以免费下载、使用、修改和分发库及其源代码,无需担心版权问题。 架构与核心模块 OpenCV的架构围绕核心模块构建,这些模块提供了不同层次的功能: Core:包含基本的数据结构(如cv::Mat用于图像存储和操作)、基本的图像和矩阵操作、数学函数、文件I/O等底层功能。 ImgProc:提供图像预处理、滤波、几何变换、形态学操作、直方图计算、轮廓发现与分析等图像处理功能。 HighGui:提供图形用户界面(GUI)支持,如图像和视频的显示、用户交互(如鼠标事件处理)以及简单的窗口管理。 VideoIO:负责视频的读写操作,支持多种视频格式和捕获设备。 Objdetect:包含预训练的对象检测模型(如Haar级联分类器用于人脸检测)。 Features2D:提供特征点检测(如SIFT、ORB)与描述符计算、特征匹配与对应关系估计等功能。 Calib3d:用于相机标定、立体视觉、多视图几何等问题。 ML:包含传统机器学习算法,如支持向量机(SVM)、K近邻(KNN)、决策树等。 DNN:深度神经网络模块,支持导入和运行预训练的深度学习模型,如卷积神经网络(CNN)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值