当前测试基本逻辑:
read_image (Image, '20260410-102844140_2569_f18_F2109_E13500-G0-P20260410_102844078_N1_BQJC_FCE25090832.png')
rgb1_to_gray (Image, GrayImage)
*根据ROI裁剪检测区域
gen_rectangle1 (ROI_0, 650.051, 1500.04, 3204.07, 3051.56)
reduce_domain (GrayImage, ROI_0, ImageReduced)
*最大暗区域即标签区域
fast_threshold (ImageReduced, Region, 0, 180, 200)
closing_rectangle1 (Region, RegionClosing, 1, 25)
fill_up (RegionClosing, RegionFillUp)
opening_circle (RegionFillUp, RegionOpening, 5.5)
closing_circle (RegionOpening, RegionClosing, 5.5)
connection (RegionClosing, ConnectedRegions)
*标签区域转凸包
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
shape_trans (SelectedRegions, LabelRegion, 'convex')
reduce_domain (ImageReduced, LabelRegion, ImageReduced1)
*取油墨区域
binary_threshold (ImageReduced1, Region1, 'max_separability', 'dark', UsedThreshold)
dilation_circle (Region1, RegionDilation, 1.5)
*无油墨区域
difference (SelectedRegions, RegionDilation, RegionDifference)
gray_features (RegionDifference, ImageReduced1, 'median', Value)
*填充油墨区
paint_region (RegionDilation, ImageReduced1, ImageResult, Value, 'fill')
*阈值分割
region_features (LabelRegion, 'height', Value)
mean_image (ImageResult, ImageMean, 3, 0.5*Value)
dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 35, 'light')
opening_circle (RegionDynThresh, RegionOpening, 3.5)
closing_circle (RegionOpening, RegionClosing, 5.5)
connection (RegionClosing, ConnectedRegions)
*排除标签两端
SideShift := 8
region_features (LabelRegion, 'row1', Value1)
region_features (LabelRegion, 'row2', Value2)
region_features (LabelRegion, 'width', Value3)
select_shape (ConnectedRegions, SelectedRegions, ['row1','row2','width'], 'and', [Value1+SideShift,0,0.2*Value3], ['max',Value2-SideShift,'max'])
dev_display (Image)
dev_display (SelectedRegions) |