# Classifier_Test **Repository Path**: x-han/Classifier_Test ## Basic Information - **Project Name**: Classifier_Test - **Description**: No description available - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Classifier_Test ## 一、简介 - 本分类器使用两级级联分类器达到识别目标装甲板数字的功能。 - 将图像数据集放入分类器,则可按照图像中显示的序号进行识别并分类。 - 一级分类器`(像素值求gain)`与二级分类器`(基于ORB特征检测算法)`级联 - 基本可以根据模板识别出所使用的图片集中所有较清晰的装甲板及其号码`(占总数据集的44.4%)` - **注意**:调整相机参数后请先进行如下操作: - 更换`/image/Template/`中的装甲板模板(同一装甲板号可添加多个模板**每个模板文件名的首个字符为该装甲板号码**) - 更改`/include/classifier.hpp`中`GAIN_LIMIT_HIGH` 与 `GAIN_LIMIT_LOW` 宏 ### 1. 运行速度与精度 - 一级分类器每帧运行时间约为`0.2~0.4ms` - 二级ORB分类器每帧运行时间约为`3~4ms` ``` Linux Shell > myTest.compare运行时间:48453.4ms > 单帧平均用时:3.27432ms total:14798 broken_image:34 positive:6563 negative:8201 positive:44.4% negative:55.4% ``` ## 二、代码运行依赖 - Ubuntu 16.04 或 Ubuntu 18.04 - opencv-3.4.7 - opencv_contrib-3.4.7 (NON-FREE) ## 三、文件夹结构 ``` Linux Shell . ├── build //编译文件夹 ├── CMakeLists.txt ├── image │ ├── del_blank //用于rsync快速删除dst中的图片缓存 │ ├── dst //分类器输出图片 │ ├── Template //模板图片 │ ├── raw //待分类的图片集 │ └── Test //待分类的图片集2 ├── include │ ├── classifier.hpp //分类器主头文件 │ ├── createDirectory.hpp //创建文件夹函数 │ ├── getCurrentWorkingDir.hpp //获取当前文件夹 │ ├── get_proportion_thresh.hpp //按百分比二值化 │ ├── removeImageCache.hpp //清除图片缓存函数 │ └── timer.hpp //计时器 ├── main.cpp └── README.md ``` ## 四、使用方法 ``` Linux Shell mkdir build cd build cmake .. make ./main ``` ## 五、宏定义 ``` C++ // #define FRAME_BY_FRAME //逐帧显示进入分类器的图片 //-------------------------------------------------------------------------------------------------- // #define DEBUG_CLASSIFIER //打印分类器调试信息 // #define DEBUG_CLASSIFIER_ORB //打印ORB分类器调试信息 // #define DEBUG_PRINT_ARMORNUM //打印分类器检测的装甲板号码 //-------------------------------------------------------------------------------------------------- // #define SHOW_TEMPLATE_IMAGE_FRAME_BY_FRAME //逐帧显示模板图片 // #define SHOW_CLASSIFIER_IMAGE //显示进入分类器的图片 // #define DRAW_IMAGE_FEATURE_MATCH //显示ORB特征匹配对 //-------------------------------------------------------------------------------------------------- // #define PRINT_CLASSIFIER_RUNTIME //打印一级与二级分类器的运行时间 // #define PRINT_BROKEN_IMAGE //打印损坏图片信息 //-------------------------------------------------------------------------------------------------- #define REMOVE_IMAGE_CACHE //用于清除/image/dst/中的图片结果 #define CLASSIFIER_OUTPUT //控制分类器是否将图片结果输出到/image/dst/ //-------------------------------------------------------------------------------------------------- #define GAIN_LIMIT_HIGH 1000 //通过一级分类器上限gain值————请根据相机参数调整 #define GAIN_LIMIT_LOW -1000 //通过一级分类器的下限gain值————请根据相机参数调整 // ————上下限值越接近,分类器速度越快,但精确度越低 // GAIN_LIMIT_HIGH 与 GAIN_LIMIT_LOW 是用来界定测试样本是否通过一级分类器gain的上限值和下限值 // 1. gain < GAIN_LIMIT_LOW --> 不能通过一级分类器,进入negative_1类别 // 2. GAIN_LIMIT_LOW < gain < GAIN_LIMIT_HIGH --> 通过一级分类器并进入二级分类器进行再分类: // 若通过二级分类器,则进入positive_2类别 // 若未通过二级分类器,则进入negative_2类别 // 3. GAIN_LIMIT_HIGH < gain --> 直接通过一级与二级分类器,进入positive_1 //-------------------------------------------------------------------------------------------------- #define CLASSIFIER_IMAGEPART_ROWS 100 #define CLASSIFIER_IMAGEPART_COLS 120 //将待测图片放缩为CLASSIFIER_IMAGEPART_ROWS与CLASSIFIER_IMAGEPART_COLS #define THRESH_BINAR_TEMPLATE 0.31 //二值化template_image取thresh_binar最亮部分 #define THRESH_BINAR_TEST 0.35 //二值化test_image取thresh_binar最亮部分最亮部分 ``` ## 六、运行结果 - 在开启 ```CLASSIFIER_OUTPUT``` 宏时,会将分类器分类结果放入```/image/dst/```文件夹下 ### 1. ```/image/dst/```文件夹结构 ```Linux Shell . └── image └── dst ├── negative //未成功匹配的图片 ├── positive //成功匹配的图片 └── orb ├── negativeMatch //未通过ORB分类器的图片 └── positiveMatch //通过ORB分类器的图片 ``` ### 2. 分类器的图片输出结果 - 在打开```CLASSIFIER_OUTPUT```宏后,以上的几个文件夹中会写入分类器结果 - 写入的文件名格式为```类别_#识别出的装甲板号码_maxGain_最大gain得分_图片时间戳_该结果对应的原图文件名``` - 如```1_#1_maxGain_214_1583675138335_891.png``` ### 3. 运行速度与精度 - 一级分类器每帧运行时间约为`0.2~0.4ms` - 二级ORB分类器每帧运行时间约为`3~4ms` ``` Linux Shell > myTest.compare运行时间:48453.4ms > 单帧平均用时:3.27432ms total:14798 broken_image:34 positive:6563 negative:8201 positive:44.4% negative:55.4% ``` ### 4. 源数据集截图(例) ![](./源数据集截图.png) ### 5. 输出结果截图(例) ![](./输出结果截图.png) ## 七、更新 2020.4.14:添加多模板支持 ## 八、代码贡献 |姓名|邮箱| |-|-| |韩煦源|xuyuan.HAN@outlook.com|