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

所采用的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相关推荐

  1. 击中-击不中变换—lhMorpHMT

    函数:lhMorpHMT 说明:形态学击中-击不中变换 参数: src 输入图像,灰度或二值图像 dst 输出图像 sefg 前景结构元素 sebg 背景结构元素,如为空,则默认为前景结构元素sefg ...

  2. 【youcans 的 OpenCV 例程 200 篇】120. 击中-击不中变换

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...

  3. 区域填充与击中击不中变换

    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 ...

  4. 形态学 - 击中-击不中变换

    目录 1. HMT 介绍 2. 代码实现 1. HMT 介绍 HMT全称是Hit miss transformation --- 击中 击不中变换,这里我们只对二值图像做处理 二值图像是图像的灰度值只 ...

  5. 击中击不中变换的作用理解

    学习形态学变换的时候,看到击中击不中变换一直百思不得其解,虽然他的定义写的很清楚明白,但是不知道具体是干嘛用的,按照自己的理解写了一个matlab小程序来试试. 1.击中击不中变换是形态学形状检测的基 ...

  6. 二值形态学之击中击不中变换

    定义 应用 物体识别 细化 击中击不中变换(Hit Miss Transform ,HMT),是通过同时探测图像的内部和外部,进而获取更多的内外标记,体现更多信息的一个方法.他的应用有很多,特别是在图 ...

  7. OpenCV实现击中击不中变换和形态学细化

    1 击中击不中变换 1.1 HMT概述 形态学Hit-or-Miss是形状检测基本工具,只要结构元设置得当,就可以检测一些基本的形状图案,HMT变换只能作用于二值图像,结构元(核)元素值由0.1.-1 ...

  8. 数字图像处理 击中击不中变换

    参考链接 目的: 击中击不中变换就是在A图像上找到和B图像一致的那块区域,举个例子就是:你拿着一张A图片的一部分,你需要在A图像上找到这张图片在A图片上的位置在哪(注意,这里找到的位置,都是一个点,也 ...

  9. opencvsharp图像处理_腐蚀与膨胀,击中击不中变换(3)

    膨胀:dilate为核B对核A做卷积时,核B覆盖区域的像素最大值提取 腐蚀:erode 为核B对核A做卷积时,核B覆盖区域的像素最小值提取 击中击不中变换:有两个不相交集合B={B1,B2},用B1去 ...

最新文章

  1. Docker 命令自动补全必须有
  2. centos7开启,关闭防火墙
  3. 多个sheet拆分成多个文件_Pandas拆分DataFrame到多个文件中
  4. 机器学习(一):BP神经网络(含代码及注释)
  5. Paint.NET 3.0正式版发布了
  6. Celex Update CodeForces - 1358C(打表找规律)
  7. WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 构架
  8. [转载] [python3教程]第七章.输入输出(Input and Output)
  9. JZ5-用两个栈实现队列
  10. 记录switch sxos TF卡游戏损坏(纯粹记录,很潦草,多多包涵)
  11. Slideout.js+YDUI Touch+mescroll
  12. kindle paper write1 kindle pw1 安装多看系统 or 原本是多看双系统,升级kindle系统后多看系统消失,解决方法降级kindle系统+重装kindle系统
  13. 数据集介绍 - Matting and Segmentation
  14. background 渐变背景
  15. 天气预报API接口大全
  16. android证书在线生成方法
  17. Springboot毕设项目共享单车管理系统93je9(java+VUE+Mybatis+Maven+Mysql)
  18. 【NOIP2016提高组】天天爱跑步
  19. Linux rpm -ivm,PowerLinux 7R1项目实施手册PDF
  20. Linux:WCP知识库安装及配置

热门文章

  1. java基础—Hashtable,HashMap,TreeMap的差别
  2. 注意!!一定要谨慎使用c/c++原生指针
  3. 基于线性表邻接矩阵结构的图的深度/广度优先搜索算法
  4. Echart在Openlayers的应用-热力图
  5. LA 4254 Processor 处理器 【二分 贪心 优先队列】
  6. 前中华英才产品总监高瑞:被嫌弃的产品经理的一生
  7. 一位7亿收入产品经理的五大绝招
  8. React as a UI Runtime(四、条件)
  9. jQuery-Easyui 1.2 实现多层菜单
  10. stn,spatial transformer network总结