图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法

图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法

引言

再来更新一下我们的验证码识别算法,这次解决的是图像匹配点选验证码,如图所示
在这里插入图片描述
,
在这里插入图片描述

还是先给出逻辑,人眼选择步骤:

  1. 首先是看到下面的图像是什么样
  2. 看看上面大图中的四个小的图形
  3. 匹配上面观察到的二者图像,选择正确的

所以对应到用算法进行自动点选,简化为:

  1. 用YOLOv10算法检测出图像中所有的图像文件
  2. 利用位置关系区分上方图像文件和下方图像文件(需要点选的图像通常都在图像y坐标最下方)
  3. 把下面的图像文件和上面的一一匹配,寻找相似度最高的,返回即可

图像采集

在这里插入图片描述
在这里插入图片描述
为了满足泛化性,收集了3w+张图像,如果需要请看我的个人主页获取。
在这里插入图片描述
标注方法如上图所示

YOLOv10目标检测

基于标注好的数据集文件,使用YOLOv10模型检测验证码中的图像元素,提取出它们的位置和特征。检测结果如下:
在这里插入图片描述
YOLO(You Only Look Once)是一种实时目标检测模型,具有非常高的检测精度和速度。YOLOv10作为YOLO系列中的最新版本,针对图像中的目标进行全局性预测,相比传统方法具有更好的准确性和计算效率。
在验证码识别中,YOLOv10通过以下方式发挥了重要作用:

目标检测:YOLOv10能够识别验证码中的各类目标(如数字、字母、特殊符号等),并且能够有效地处理图像的旋转、缩放等变化。
多尺度检测:YOLOv10支持多尺度检测,可以在不同分辨率下提取图像特征,适应各种验证码图像的变化。
高效推理:YOLOv10具有极高的推理速度,在处理实时验证码图像时,可以迅速提取有效信息。

图像匹配

图像匹配:结合传统的图像匹配算法(如模板匹配或特征匹配),根据YOLOv10提取出的特征进一步细化和优化识别结果。

博主主要采用传统图像中的基于直方图的相似度计算、感知哈希(pHash)、均值哈希(aHash)和差值感知哈希(dHash),以及计算汉明距离的方法来对图像进行匹配,代码如下:

1.计算两张图像的灰度直方图相似性

功能:此函数计算两张图像的灰度直方图的相似度,具体步骤如下:
cv2.calcHist:计算图像的灰度直方图,[0]表示计算单通道(灰度)直方图,[256]表示分成256个桶,每个桶对应一个灰度级别(0-255)。
degree:相似度度量,通过遍历两个直方图的每个值计算相似度,若对应的灰度值相同,则相似度增加;若不同,则计算差异并对其做反向处理,使得差异越小,相似度越大。
最终返回两个图像的相似度得分。
应用:该方法用于基于灰度直方图计算两张图像的相似度,适用于图像的对比度或亮度变化不大的场景。

def calculate(image1, image2):
    # 灰度直方图算法
    # 计算单通道的直方图的相似值
    hist1 = cv2.calcHist([image1], [0], None, [256], [0.0, 255.0])
    hist2 = cv2.calcHist([image2], [0], None, [256], [0.0, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值