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

函数: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、付费专栏及课程。

余额充值