如果不使用模板来进行ROI更随,该如何做到呢?
勇哥先把图片放上来:
我想所有人都会想到用形态学算法,阈值勾出电池本体,然后取得电池角度与位置信息,就可以ROI跟随了。
难点在哪里呢?
我们的目的是:“取电池几何中心的位置与电池的方向。”
那么电池的几何中心可以是电池整个外接最小矩形的中心,这个比较容易办到的。
但是方向呢?
我们可以取电矩形本体的外接矩形的角度做为方向,但是这一点因为极耳的干扰,我们取到本体的矩形并不容易做到。
也许有人认为取上图所示电池的顶边就可以确定方向了,但是客户的电池因为是软包的,你永远不要相信它的边会是规则的。靠它确定方向会非常不靠谱。
有一种办法是用电池本体矩形的中心到极耳那块的矩形区域的中心做为方向。
勇哥所指的两部分区域如下图所示。
最终的方向如下图:
有了中心x,y坐标与电池的方向信息,就可以进行ROI跟随了。
我们就实现了不用模板进行ROI跟随。
read_image (Image, 'C:/Users/hackpig/Desktop/8.bmp') gen_rectangle1 (Rectangle1, 375.145, 102.852, 1725.71, 2209.26) read_image (Image, 'C:/Users/hackpig/Desktop/8.bmp') reduce_domain (Image, Rectangle1, Image) set_draw (200000, 'margin') threshold (Image, Region, 0, 180) connection (Region, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999999) dilation_circle (SelectedRegions, RegionDilation, 5) fill_up (RegionDilation, RegionFillUp) smallest_rectangle2 (RegionFillUp, Row3, Column3, Phi, Length1, Length2) gen_rectangle2 (Rectangle, Row3, Column3, Phi, Length1, Length2) area_center (Rectangle, Area1, Row1, Column1) difference (Rectangle, RegionFillUp, RegionDifference) area_center (RegionDifference, Area, Row, Column) angle_lx (Row1, Column1, Row, Column, Angle) disp_arrow (200000, Row1, Column1, Row, Column, 5) *stop() wait_seconds (1)
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

