update at 2025-10-25 19:23:02

This commit is contained in:
douboer
2025-10-25 19:23:02 +08:00
parent 7a4f659dda
commit ced4fd4bac
146 changed files with 1709 additions and 4030 deletions

View File

@@ -1,4 +1,4 @@
# 豆瓣滑块验证码检测器
# 豆瓣滑块验证码检测器v1.0.0
基于 sharp 图像处理库实现的滑块验证码缺口精确识别工具。
@@ -6,9 +6,9 @@
- ✅ 自动检测图片中的滑块缺口位置
- ✅ 支持多滑块检测(一张图片中检测多个滑块)
-使用多阈值策略提高检测准确率
-多策略候选区域搜索与自适应评分体系
- ✅ 自动在图片上绘制蓝色边框标注检测结果
- ✅ 支持人工标注对比验证
- ✅ 支持基于 ground-truth 的准确率评估
## 安装依赖
@@ -18,7 +18,7 @@ npm install
## 使用方法
### 运行检测
### 运行检测(默认数据集)
```bash
npm run detect
@@ -29,6 +29,14 @@ npm run detect
2. 处理 `images/douban` 目录中的所有图片
3. 将检测结果(带蓝色边框)输出到 `images/output` 目录
### 自定义目录
```bash
npm run detect -- --pic-dir=images/custom
```
> `--pic-dir` 为 `README` 所在目录的相对路径,检测结果仍然输出到 `images/output`。
### 目录结构
```
@@ -44,22 +52,11 @@ images/
### 核心思路
1. **暗色区域检测**:滑块缺口通常为暗色(阴影)区
2. **多阈值策略**:使用 75、90、105 三个亮度阈值进行检测,提高鲁棒性
3. **形态学处理**:使用闭运算(先膨胀后腐蚀)去除噪点
4. **连通区域分析**:使用洪水填充算法查找所有暗色连通区域
5. **特征筛选**
- 尺寸范围50-95 像素(宽度和高度)
- 宽高比0.8-1.25(接近正方形)
- 位置图片中部区域15%-75%高度)
- 密度:像素填充率 > 55%
### 检测结果
当前性能(在 9 张测试图片上):
- **验证准确率**55.6%5/9
- **检测完成率**66.7%6/9
- 支持多滑块检测(滑块-1.png 检测到 2 个滑块)
1. **多阈值暗/亮检测**:从增强对比度后的图像中提取亮/暗连通
2. **Sobel 边缘候选**:基于边缘图的形态学操作补充候选框
3. **颜色量化与 LAB 色差扫描**:强化低对比度场景下的候选覆盖
4. **候选融合**:利用 IoU 去重并按颜色一致性、内部边缘密度、梯度平滑度打分
5. **自学习滑块扩展**:在首个高置信度框的基础上,使用模板匹配寻找第二个滑块
## 开发
@@ -71,15 +68,13 @@ npm run build
### 调试
查看未检测到的图片特征
```bash
npx ts-node --transpile-only src/debug-threshold.ts
```
核心逻辑已经拆分为模块化的检测管线
分析红框标注信息:
```bash
npx ts-node --transpile-only src/analyze.ts
```
- `src/detection/candidate-search.ts`:多策略候选区域查找与评分
- `src/utils/image.ts`:图像形态学、边缘工具函数
- `src/detector.ts`:检测器主体、框体精炼与多滑块协同策略
- `src/cli.ts`:命令行入口,负责加载 ground-truth 与批量处理
- `src/validator.ts`IoU/容差匹配与统计分析
## 技术栈
@@ -87,6 +82,10 @@ npx ts-node --transpile-only src/analyze.ts
- Sharp (图像处理)
- Node.js
## 版本历史
- v1.0.0引入模块化检测管线、CLI 工具、ground-truth 验证与多策略候选融合。
## 优化方向
1. 提高对低对比度图片的检测能力