首页 > 代码库 > 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前后进行“交并差”等操作的异同