Halcon 分割之区域生长法
区域生长法也称为区域生成法,其基本思想是将一幅图像分成许多小的区域,并将具有相似性质的像素集合起来构成区域。具体来说,就是先在需要分割的区域内找一个种子像素作为生长的起始点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判断)合并到种子像素所在的区域中;最后将这些新像素作为新的种子像素继续进行上述操作,直到没有满足条件的像素可被合并进来为止,图像分割随之完成。区域生长法的实质就是把具有某种相似性质的像素连通起来,从而构成最终的分割区域。该方法利用了图像的局部空间信息,可有效克服其他方法存在的图像分割空间不连续的缺点。
案例分析
目标:提取目标区域脊柱
难点:受光线影响会形成阴影,部分区域过曝
案例代码
初步提取目标定位
dev_set_draw ('margin')
read_image (Image, 'E:/Halcon数据/资源图片/左.bmp')
median_image (Image, ImageMedian, 'circle', 35, 'mirrored')
regiongrowing (ImageMedian, Regions, 10, 10, 12, 100)
select_shape (Regions, SelectedRegions,[ 'area','circularity'], 'and', [50000,0.8], [90000,1])
进一步优化
smallest_circle (SelectedRegions, Row, Column, Radius)
gen_circle_contour_xld (ContCircle, Row, Column, Radius+40, 0, 6.28318, 'positive', 1)
gen_region_contour_xld (ContCircle, Region, 'filled')
reduce_domain (Image, Region, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage)
gray_opening_shape (GrayImage, ImageOpening, 11, 11, 'octagon')
min_max_gray (Region, ImageOpening, 0, Min, Max, Range)
scale_image_max (ImageOpening, ImageScaleMax)
threshold (ImageScaleMax, Region1, 100, 255)
connection (Region1, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions1,[ 'area','circularity'], 'and', [70000,0.8], [110000,1])