OpenCV形态学操作——Hit-or-Miss
一、学习目标
- 理解什么是Hit-or-Miss
- 学会在OpenCV中使用Hit-or-Miss
二、Hit-or-Miss
形态学算子根据图像的形状来处理图像。这些操作符将一个或多个结构化元素应用于输入图像以获得输出图像。腐蚀和膨胀是两种基本的形态学操作。这两个操作的组合可以产生高级形态学操作,如开运算、闭运算或顶帽、黑帽等。要了解更多关于这些和其他基本形态学操作的信息,请参阅前面的教程。
Hit-or-Miss操作对于在二值图像中寻找指定模式是很有用的。它能发现那些邻域像素匹配第一个结构元素B1的形状而同时不匹配第二个结构元素B2的形状的像素。从数学上讲,对图像A进行Hit-or-Miss的操作可以表示为:

因此,Hit-or-Miss操作包括三个步骤:
- 使用结构元素B1 腐蚀图像A
- 使用结构元素B2 腐蚀图像A的补,即AC
- 对步骤1和步骤2的结果进行AND操作
结构元素B1和B2可以组合成一个元素b。让我们看一个例子:

在本例中,我们试图寻找一种模式,其中中心像素属于背景(-1),而中心像素的上下左右相邻的像素属于前景。其他邻域像素可以是任何类型的,我们不关心它们。现在,让我们把这个内核应用到输入图像上:

使用上述结构元素进行Hit-or-Miss操作后得到如下结果:

可以看到,该图像仅有一个符合模式的地方。
OpenCV中,使用函数cv::morphologyEx实现Hit-or-Miss操作,指定op参数为MORPH_HITMISS即可,函数在前面的教程中已经详细介绍过,此处不再赘述。
使用实例:
#include<opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
// 定义输入图像像素矩阵,0代表背景(黑色),255代表前景(白色)
Mat input_image = (Mat_<uchar>(8, 8) <<
0, 0, 0,

本文介绍了OpenCV中的Hit-or-Miss形态学操作,这是一种用于在二值图像中查找特定模式的高级操作。通过理解其原理和步骤,并结合实例演示了如何使用自定义结构元素进行腐蚀和AND操作,帮助读者实现模式匹配。

461

被折叠的 条评论
为什么被折叠?



