Files
splider/README.md
2025-10-25 19:23:02 +08:00

95 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 豆瓣滑块验证码检测器v1.0.0
基于 sharp 图像处理库实现的滑块验证码缺口精确识别工具。
## 功能特性
- ✅ 自动检测图片中的滑块缺口位置
- ✅ 支持多滑块检测(一张图片中检测多个滑块)
- ✅ 多策略候选区域搜索与自适应评分体系
- ✅ 自动在图片上绘制蓝色边框标注检测结果
- ✅ 支持基于 ground-truth 的准确率评估
## 安装依赖
```bash
npm install
```
## 使用方法
### 运行检测(默认数据集)
```bash
npm run detect
```
该命令会:
1. 验证算法准确性(使用 `images/douban-target` 中的红框标注图片)
2. 处理 `images/douban` 目录中的所有图片
3. 将检测结果(带蓝色边框)输出到 `images/output` 目录
### 自定义目录
```bash
npm run detect -- --pic-dir=images/custom
```
> `--pic-dir` 为 `README` 所在目录的相对路径,检测结果仍然输出到 `images/output`。
### 目录结构
```
images/
├── douban/ # 豆瓣滑块真实截图(待检测)
├── douban-target/ # 红框标注图片(用于验证算法准确性)
├── slider/ # 滑块形状模板图片
├── target/ # 滑块标注图片
└── output/ # 检测结果输出目录(蓝色框标注)
```
## 检测算法
### 核心思路
1. **多阈值暗/亮检测**:从增强对比度后的图像中提取亮/暗连通域
2. **Sobel 边缘候选**:基于边缘图的形态学操作补充候选框
3. **颜色量化与 LAB 色差扫描**:强化低对比度场景下的候选覆盖
4. **候选融合**:利用 IoU 去重并按颜色一致性、内部边缘密度、梯度平滑度打分
5. **自学习滑块扩展**:在首个高置信度框的基础上,使用模板匹配寻找第二个滑块
## 开发
### 编译
```bash
npm run build
```
### 调试
核心逻辑已经拆分为模块化的检测管线:
- `src/detection/candidate-search.ts`:多策略候选区域查找与评分
- `src/utils/image.ts`:图像形态学、边缘工具函数
- `src/detector.ts`:检测器主体、框体精炼与多滑块协同策略
- `src/cli.ts`:命令行入口,负责加载 ground-truth 与批量处理
- `src/validator.ts`IoU/容差匹配与统计分析
## 技术栈
- TypeScript
- Sharp (图像处理)
- Node.js
## 版本历史
- v1.0.0引入模块化检测管线、CLI 工具、ground-truth 验证与多策略候选融合。
## 优化方向
1. 提高对低对比度图片的检测能力
2. 优化形态学操作参数
3. 增加边缘检测辅助判断
4. 支持更多滑块形状变体