首页 > 代码库 > Region在connection前后进行“交并差”等操作的异同

Region在connection前后进行“交并差”等操作的异同

connection直译为“连接”。其实它的功能不是连接,它的功能是确定区域之间的连接关系,如果简单粗暴地解释的话,可以认为:connection的意思是“打散”,将不连接的区域打散成一个一个的区域。

 

1、用connection之后的region集合减去单一region

 

以下为待处理的图:

技术分享

 1 read_image (Right, 未标题-1.jpg) 2 threshold (Right, One_Circle, 0, 80) 3 opening_circle (One_Circle, One_Circle, 3.5) 4  5 threshold (Right, Four_Reg, 100, 200) 6 opening_circle (Four_Reg, Four_Reg, 3.5) 7  8 dilation_circle (One_Circle, One_CircleDilation, 29.5) 9 10 *ConnectedRegions有几个值,xxx里就有几个值,这里是4个11 connection (Four_Reg, ConnectedRegions)12 difference (ConnectedRegions, One_CircleDilation, xxx)13 area_center (xxx, Area, Row, Column)14 15 *这里yyy只有3个值16 difference (Four_Reg, One_CircleDilation, RegionDifference1)17 connection (RegionDifference1, yyy)18 area_center (yyy, Area1, Row1, Column1)

相关region的形状如下:

技术分享

结果是:

Area := [1307, 4448, 4534, 0]

Area1 := [1307, 4448, 4534]

 

明明区域xxx和yyy看起来一模一样,但是xxx中有4个量,yyy中只有3个(通过Area/Area1元组可明确看出这一点)。

 

2、用connection之后的region集合减去多个region

 

用下面左面的4个region集合difference右边的2个region的集合:

技术分享  技术分享

效果如下,但是结果region集合里还是有4个量。

技术分享

 

 

再举一个类似的例子:

用下面左面的4个region集合difference右边的2个region的集合:

技术分享  技术分享

结果region集合里还是有4个量。

技术分享

但是对结果再执行一次connection算子之后,变成了6个量。

 

请注意,对于本文第一个例子中,对xxx执行connection算子之后,还是有4个量,那个面积为0的region并没有消失。但是如果再执行union1,再执行connection的话,就只有3个量了!

 

3、用单个region减去其他region在connection之后的region集合

 1 read_image (Right, 未标题-1.jpg) 2 threshold (Right, One_Circle, 0, 80) 3 opening_circle (One_Circle, One_Circle, 3.5) 4  5 threshold (Right, Four_Reg, 100, 200) 6 opening_circle (Four_Reg, Four_Reg, 3.5) 7 gen_rectangle1 (ROI_0, 0, 190.5, 288, 242.5) 8 union2 (ROI_0, Four_Reg, RegionUnion) 9 10 connection (RegionUnion, RegionUnion)11 12 dilation_circle (One_Circle, One_Circle_Dilation, 29.5)13 14 difference (One_Circle_Dilation, RegionUnion, Region_Result)15 16 connection (Region_Result, Region_Result_Connected)

 

用下面左面的单个region减去右边的5个region的集合:

技术分享技术分享

 

结果是一个region,如果再执行connection的话,则会变成2个。

技术分享

 

总结:

 

Region在connection前后进行“交并差”等操作的异同