形态学重建算法
本文将着重介绍《Hands-on morphological image processing》一书中所讲述的形态学重建算法,该书是Dougherty等人于2003年出版的一部关于图像处理算法的书籍,主要讲述了形态学处理的一些基础操作内容。
6.4Gray-Scale Morphological Reconstruction
Dougherty E R, Lotufo R A. Hands-on morphological image processing[M]. SPIE press, 2003.
形态学重建原理
测地膨胀形态学重建代码
/*
* src为标记图(已经过腐蚀操作)
* msk为掩模
* dst为结果图像
* se为执行重建的结构元素
* iterations为标记值
*/
void lhMorpRDilate(cv::Mat& src, cv::Mat& msk, cv::Mat& dst, const cv::Mat& se, int iterations) //执行重建运算
{
if (iterations < 0)
{
int n = 1;
cv::min(src, msk, dst);
cv::dilate(dst, dst, se); //执行一次测地膨胀
cv::min(dst, msk, dst);
cv::Mat temp1; //过渡参数
cv::Mat temp2;
//判断前后两次测地膨胀的结果是否发生变化
do
{
n++;
(dst).copyTo(temp1);
cv::dilate(dst, dst, se); //再执行一次测地膨胀
cv::min(dst, msk, dst);
cv::compare(temp1, dst, temp2, cv::CMP_NE); //比较两次测地膨胀的结果
} while (cv::sum(temp2).val[0] != 0);
}
}