OpenCV官网详细讲解击中击不中的算法,这里简单说明如下。
假设源图像为A,结构元素(核)B1和结构元素B2
击中击不中算法的运算如下:
1、使用结构元素B1对源图像A进行腐蚀操作;
2、使用结构元素B2对源图像A的互补图(取反)进行腐蚀操作(Erode);
3、将步骤1与步骤2的结果进行和操作(AND),即为输出结果。
可以将B1和B2组合为结构元素B,如下
如果上面的话理解起来有些晦涩的话,我个人的理解是:定义一个待匹配的核,其中核内元素值为1,表示该位置需要匹配前景(白色);若为-1,表示该位置需要匹配背景(黑色);若为0,表示任意(前景、背景皆可)。使用该核对源图像扫描后,若匹配上述规则,在锚点位置记为255(非0),若不匹配,则锚点位置记为0,最后得到的结果就是输出图像。
注意,在外推边框没有指定值时,左上角和右下角也出现匹配情况。
将上图放大50倍后显示效果如下