Bazen alınan görüntüde eksik kalan yerlerin tamamlanması gerekebilir. Aşağıdaki örnek kod, tamamlama işini akıllı bir biçimde yapmaktadır.
Yukarıda görüldüğü gibi parçalar arasındaki boşluk, olabildiğince gerçeğe yakın bir şekilde birleştirilmiştir. Birçok yerde kullanılabilecek olan, prosedürel olarak yazılmış HALCON kodu :
read_image (Image, 'C:/Users/Mustafa/Desktop/aa.png') bin_threshold (Image, Region) connection (Region, ConnectedRegions) CombineSplittedRegions (ConnectedRegions, RegionCount) dev_set_draw ('fill') dev_display(Image) dev_display(RegionCount)
Burada asıl işi yapan CombineSplittedRegions prosedürü ise
count_obj(ConnectedRegions, Number) if (Number > 1) while (Number > 1) select_obj (ConnectedRegions, Obj1, 1) select_obj (ConnectedRegions, Obj2, 2) inner_circle(Obj1, Row, Column, Radius1) inner_circle(Obj2, Row, Column, Radius2) minR := Radius1 if (Radius2 < Radius1) minR := Radius2 endif distance_rr_min(Obj1, Obj2, MinDistance, Row1, Column1, Row2, Column2) gen_region_line (RegionLines, Row1, Column1, Row2, Column2) dilation_circle(RegionLines, RegionDilation, minR) union2(ConnectedRegions, RegionDilation, RegionUnion) union1(RegionUnion, RegionCombine) connection(RegionCombine, ConnectedRegions) count_obj(ConnectedRegions, Number) endwhile else copy_obj(ConnectedRegions, RegionCombine, 1, -1) endif inner_circle(RegionCombine, Row, Column, Radius) rank_region(RegionCombine, RegionCount, Radius, Radius, 50) return ()
programda kullanılan orijinal resim aşağıdadır. Programı denemek için bunu kullanabilirsiniz.