由于形态学的惯例是用高(白色)像素表示前景物体,用低(黑色)像素表示背景物体,我们需要对图像进行取反。
在opencv中,腐蚀和膨胀由函数cv::erode和cv::dilate实现,用法如下:
<span style="font-size:18px;">cv::Mat image=cv::imread("binary.bmp");</span>
<span style="font-size:18px;">cv::Mat eroded;</span>
<span style="font-size:18px;">cv::erode(image,eroded,cv::Mat());</span>
<span style="font-size:18px;">cv::namedWindow("Eroded Image");</span>
<span style="font-size:18px;">cv::imshow("Eroded Image",eroded);</span>
当应用到一个给定像素时,结构像素的锚点与该像素的位置对齐,而所有与他相交的像素都被包括在当前的像素集合中。
腐蚀替换当前像素位像素集合中找到的最小像素值。膨胀则是相反操作。
腐蚀可以消除一些极其细小的东西(噪声)
膨胀后物体会更大,同时物体内部的一些噪声被填满。
在opencv中,开闭运算用cv::MORPH_CLOSE和cv::MORTH_OPEN实现
闭运算:先膨胀,再腐蚀
开运算:先腐蚀,再膨胀