击中-击不中变换(约束)—lhMorpHMTC

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

 所采用的9*1 自定义结构为:

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

 

函数:lhMorpHMTC

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

参数:

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

dst 输出图像

sefg 前景结构元素

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

源码:

void lhMorpHMTC(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*  temp1 = cvCreateImage(cvGetSize(src), 8, 1);

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

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

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

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

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

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

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

       cvZero(mask1);

       cvZero(mask2);

       cvZero(mask3);

       cvZero(mask4);

       cvZero(dst);

       cvErode( src, temp1, sebg);

       cvDilate( src, temp2, sebg);

       cvErode( src, temp3, sefg);

       cvDilate( src, temp4, sefg);

       cvCmp(src, temp3, mask1, CV_CMP_EQ);

       cvCmp(temp2, src,  mask2, CV_CMP_LT);

       cvAnd(mask1, mask2, mask2);

       cvCmp(src, temp4, mask3 , CV_CMP_EQ);

       cvCmp(temp1, src, mask4 , CV_CMP_GT);

       cvAnd(mask3, mask4, mask4);

       cvSub(src, temp2, dst, mask2);

       cvSub(temp1, src, dst, mask4);

       cvReleaseImage(&mask1);

       cvReleaseImage(&mask2);

       cvReleaseImage(&mask3);

       cvReleaseImage(&mask4);

       cvReleaseImage(&temp1);

       cvReleaseImage(&temp2);

       cvReleaseImage(&temp3);

       cvReleaseImage(&temp4);

       cvReleaseStructuringElement(&sebg);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值