击中-击不中变换(非约束)—lhMorpHMTU

击中-击不中变换(非约束)
击中-击不中变换(非约束)—lhMorpHMTU - 海水和火焰 - 形态学与OpenCV

 

所采用的9*1 自定义结构为:击中-击不中变换(非约束)—lhMorpHMTU - 海水和火焰 - 形态学与OpenCV

 

函数:lhMorpHMTU

说明:形态学非约束击中-击不中变换,当为二值图像时,结果与lhMorpHMTB相同。

参数:

src 输入图像,灰度或二值图像

dst 输出图像

sefg 前景结构元素

sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反

源码:

void lhMorpHMTU(const IplImage* src, IplImage* dst, IplConvKernel* sefg, IplConvKernel* sebg =NULL)

{

       assert(src != NULL && dst != NULL && src != dst && sefg!= NULL && sefg!=sebg);

       if (sebg == NULL)

              sebg = lhStructuringElementNot(sefg);

       IplImage*  temp = cvCreateImage(cvGetSize(src), 8, 1);

       IplImage*  mask = cvCreateImage(cvGetSize(src), 8, 1);

       cvZero(mask);

       cvErode( src, temp, sefg);

       cvDilate(src, dst, sebg);

       cvCmp(temp, dst, mask, CV_CMP_GT);

       cvSub(temp, dst, dst, mask);

       cvNot(mask, mask);

       cvSet(dst, cvScalar(0), mask);

       cvReleaseImage(&mask);

       cvReleaseImage(&temp);

       cvReleaseStructuringElement(&sebg);

}

posted on 2011-12-21 22:13  carekee  阅读(5402)  评论(0编辑  收藏  举报