行程编码求差集

一.行程编码和Region

行程编码可以表示用来表示图像感兴趣区域,通过(y,x1,n)或者(y,x1,x2)方式,表示一行中连续的区域。在图像处理时Region是一个很常用的概念,在halcon中大量使用,通过将图像处理的范围限制在一个指定的区域(Region)内,容易求解问题和提高速度。

在halcon中经常会求两个Region的并集、差集和交集。一个容易想到的方法是将Region转换为黑白图像,然后求两个图像位运算,在opencv中很容易实现。这种方法有一个问题,如果Region区域比较小,如果是将其转换为图像求,会产生较大的计算量。本文介绍一种无需转换为图像,求Region差集的算法。

二.问题转化

行程编码的Region求差集最终可以转换为一行求差集问题。因此只需要解决行求差集即可。

所谓差集是指区域1中排除区域2所在的部分,如上图所示为行求差集。

三.问题分析

3.1 问题归纳

定义:一个段表示x连续的区域,即(x1,x2)x1为前端xx2为后端x。段集表示多个段的集合。

上图中,假设绿色为减段集X,蓝色为被减段集X’x1,x2X的当前段的前端和后端,x’1,x’2X’的前端和后端,结果为差段集D

任何时候一个减段和被减段的关系存在6种,上图中从左到右。

1)被减段完全在减段左边x’2<=x1;

2)被减段部分在减段左边,即x’1 <= x1 && x1 <= x’2 && x’2 <= x2;

3)被减段在减段中间,即x’1>=x1 && x’2<=x2

4)被减段部分在减段右边,即x1 <= x’1 && x’1 <= x2 && x2 <= x’2

5)被减段完全在减段右边,即x’1>=x2

6)减段完全在被减段中间,即x’1<=x1 && x’2>=x2

用index指向减段,初值为0 index’指向被减段,初值为0;将xp指向待求的差段前端,即第一个减段的前端。算法如下:

3.2 情况1

3.2 情况2

3.3 情况3

3.4 情况4

3.5 情况5

3.6 情况6

四.算法过程

  1. 用index指向减段,初值为0 index’指向被减段,初值为0;将xp指向待求的差段前端,即第一个减段的前端
  2. 判定当前减段和被减段的所属情况,根据上面情况1~情况6操作index、index'和差段集合
  3. 如果index<减段集合个数,则继续2操作,否则结束。

五.实验结果

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值