击中-击不中变换(约束)—lhMorpHMTC
所采用的9*1 自定义结构为:
函数: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);
}
击中-击不中变换(约束)—lhMorpHMTC相关推荐
- 击中-击不中变换—lhMorpHMT
函数:lhMorpHMT 说明:形态学击中-击不中变换 参数: src 输入图像,灰度或二值图像 dst 输出图像 sefg 前景结构元素 sebg 背景结构元素,如为空,则默认为前景结构元素sefg ...
- 【youcans 的 OpenCV 例程 200 篇】120. 击中-击不中变换
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 区域填充与击中击不中变换
1,区域填充 %区域填充 clear,clc,close all; BW1 = logical([1 0 0 0 0 0 0 0; 1 1 1 1 1 0 0 0;1 0 0 0 0 0 1 0; 1 ...
- 形态学 - 击中-击不中变换
目录 1. HMT 介绍 2. 代码实现 1. HMT 介绍 HMT全称是Hit miss transformation --- 击中 击不中变换,这里我们只对二值图像做处理 二值图像是图像的灰度值只 ...
- 击中击不中变换的作用理解
学习形态学变换的时候,看到击中击不中变换一直百思不得其解,虽然他的定义写的很清楚明白,但是不知道具体是干嘛用的,按照自己的理解写了一个matlab小程序来试试. 1.击中击不中变换是形态学形状检测的基 ...
- 二值形态学之击中击不中变换
定义 应用 物体识别 细化 击中击不中变换(Hit Miss Transform ,HMT),是通过同时探测图像的内部和外部,进而获取更多的内外标记,体现更多信息的一个方法.他的应用有很多,特别是在图 ...
- OpenCV实现击中击不中变换和形态学细化
1 击中击不中变换 1.1 HMT概述 形态学Hit-or-Miss是形状检测基本工具,只要结构元设置得当,就可以检测一些基本的形状图案,HMT变换只能作用于二值图像,结构元(核)元素值由0.1.-1 ...
- 数字图像处理 击中击不中变换
参考链接 目的: 击中击不中变换就是在A图像上找到和B图像一致的那块区域,举个例子就是:你拿着一张A图片的一部分,你需要在A图像上找到这张图片在A图片上的位置在哪(注意,这里找到的位置,都是一个点,也 ...
- opencvsharp图像处理_腐蚀与膨胀,击中击不中变换(3)
膨胀:dilate为核B对核A做卷积时,核B覆盖区域的像素最大值提取 腐蚀:erode 为核B对核A做卷积时,核B覆盖区域的像素最小值提取 击中击不中变换:有两个不相交集合B={B1,B2},用B1去 ...
最新文章
- Docker 命令自动补全必须有
- centos7开启,关闭防火墙
- 多个sheet拆分成多个文件_Pandas拆分DataFrame到多个文件中
- 机器学习(一):BP神经网络(含代码及注释)
- Paint.NET 3.0正式版发布了
- Celex Update CodeForces - 1358C(打表找规律)
- WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 构架
- [转载] [python3教程]第七章.输入输出(Input and Output)
- JZ5-用两个栈实现队列
- 记录switch sxos TF卡游戏损坏(纯粹记录,很潦草,多多包涵)
- Slideout.js+YDUI Touch+mescroll
- kindle paper write1 kindle pw1 安装多看系统 or 原本是多看双系统,升级kindle系统后多看系统消失,解决方法降级kindle系统+重装kindle系统
- 数据集介绍 - Matting and Segmentation
- background 渐变背景
- 天气预报API接口大全
- android证书在线生成方法
- Springboot毕设项目共享单车管理系统93je9(java+VUE+Mybatis+Maven+Mysql)
- 【NOIP2016提高组】天天爱跑步
- Linux rpm -ivm,PowerLinux 7R1项目实施手册PDF
- Linux:WCP知识库安装及配置
热门文章
- java基础—Hashtable,HashMap,TreeMap的差别
- 注意!!一定要谨慎使用c/c++原生指针
- 基于线性表邻接矩阵结构的图的深度/广度优先搜索算法
- Echart在Openlayers的应用-热力图
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
- 前中华英才产品总监高瑞:被嫌弃的产品经理的一生
- 一位7亿收入产品经理的五大绝招
- React as a UI Runtime(四、条件)
- jQuery-Easyui 1.2 实现多层菜单
- stn,spatial transformer network总结