opencv - 检测人造图案

标签 opencv pattern-recognition

我训练了一个分类器来检测MacBeth色卡,这是一种人工模式,应该易于检测。进行了训练,使用来自Google(http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/)的bg照片检测1500个底片和4000个底片的特征,这些照片与最有可能找到该模式的环境相似。

培训的统计数据似乎非常合理:

===== TRAINING 9-stage =====

POS count : consumed   4000 : 4170

NEG count : acceptanceRatio    1500 : 0.00365317

Precalculation time: 3

|  N |    HR   |    FA   |

|   1|        1|        1|

|   2|        1|        1|

|   3|        1|        1|

|   4|    0.996| 0.865333|

|   5|    0.996| 0.865333|

|   6|  0.99625|    0.688|

|   7|  0.99525| 0.633333|

|   8|  0.99575| 0.517333|

|   9|  0.99525| 0.489333|

它经历了所有10个阶段,并生成了一个33kb的XML级联描述文件。

但是,当我尝试找到模式时,它会将各种事物检测为模式。

有谁知道如何改善设置或正确找到该模式?

这是我的训练参数:
PARAMETERS:

cascadeDirName: /training3

vecFileName: pos_samples_vec_004.vec

bgFileName: bg5.txt

numPos: 4000

numNeg: 1500

numStages: 10

precalcValBufSize[Mb] : 256

precalcIdxBufSize[Mb] : 256

stageType: BOOST

featureType: HAAR

sampleWidth: 32

sampleHeight: 32

boostType: GAB

minHitRate: 0.995

maxFalseAlarmRate: 0.5

weightTrimRate: 0.95

maxDepth: 1

maxWeakCount: 100

mode: ALL

最佳答案

增加阶段数,通常至少需要20个阶段,以实现检测中任何数量的特异性。还要跟踪底片中的接受率,值越低越好。

关于opencv - 检测人造图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107774/

相关文章:

matlab - 连接不连续的骨架形状和不连续的线条

python - 加速 Numpy 数组/OpenCV cv2 图像的迭代

c - 我如何编写可比较的 cffi :translate-into foreign defmethod for this cffi:translate-from-foreign?

Opencv 乘以标量和矩阵

c# - 白色 Blob 检测

python - 如何从跟踪文件中查找重复序列

c++ - 在 IplImage 上写一个字符串

python - 使用opencv python检测到地平线的霍夫线后如何裁剪图像?

video - 在哪里可以找到面部检测软件、算法等?

image-processing - 基于几何形式检测图像上的物体