1. 边缘特征
边缘检测–公路标线检测
* 检测公路标线
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/autobahn/scene_00.png')
* 原图中划出检测区域
gen_rectangle1 (Rectangle, 130, 0, 512, 512)
reduce_domain (Image, Rectangle, ImageReduced)
* 边缘检测
sobel_amp(ImageReduced, EdgeAmplitude, 'sum_abs', 3)
* 提取边缘线
threshold(EdgeAmplitude, Region, 20, 255)
* 膨胀
dilation_rectangle1(Region, RegionDilation, 30, 30)
* 获取含有公路标线图
reduce_domain (Image,RegionDilation, ImageReduced1)
* 提取公路标线
threshold(ImageReduced1, Region1, 190, 255)
fill_up(Region1, RegionFillUp)
2. 区域特征
检测六角螺帽
* 检测六角螺帽
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/rings_and_nuts.png')
threshold (Image, Region, 0, 180)
connection (Region, ConnectedRegions)
fill_up (ConnectedRegions, RegionFillUp)
select_shape (RegionFillUp, SelectedRegions, 'area', 'and', 2022, 99999)
select_shape (SelectedRegions, SelectedRegions1, 'num_sides', 'or', 5, 10)
3. 纹理特征
分水岭阈值分割
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/lcd/mura_defects_texture_01.png')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('red')
decompose3 (Image, R, G, B)
median_image (R, ImageMedian, 'circle', 9, 'mirrored')
watersheds_threshold (ImageMedian, Basins, 10)
cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)
tuple_find (sgn(Energy - 0.15), -1, Indices)
dev_display (Image)
select_obj (Basins, ObjectSelected, Indices + 1)
4. 角点特征
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/can_with_grid.png')
dev_set_color ('red')
P := []
points_harris (Image, 0.7, 2, 0.08, 1000, Row, Column)
gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)
n0 := |Row|
P := [P,n0]
5. 亚像素边缘特征
提取圆
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/rim.png')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
* 设置字体
set_display_font (WindowHandle, 14, 'mono', 'false', 'false')
* 提取亚像素轮廓
edges_sub_pix (Image, Edges, 'canny', 4, 20, 40)
* 筛选圆
select_shape_xld (Edges, SelectedXLD, 'circularity', 'and', 0.7, 1.0)
* 根据轮廓位置排序
sort_contours_xld (SelectedXLD, SortedContours, 'upper_left', 'true', 'row')
smallest_circle_xld (SortedContours, Row, Column, Radius)
count_obj (SortedContours, Number)
dev_set_color ('yellow')
for i := 1 to Number by 1
select_obj (SortedContours, ObjectSelected, i)
dev_display (Image)
dev_display (ObjectSelected)
distance_pc (ObjectSelected, Row[i-1], Column[i-1], DistanceMin,DistanceMax)
stop()
endfor
6. 图像的颜色特征
RGB
提取PCB焊盘
- 获取灰度图
- 根据灰度阈值提取
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/pcb_color.png')
decompose3 (Image, R, G, B)
threshold (R, Region, 98, 255)
closing_circle (Region, RegionClosing, 3.5)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 62, 99999)
union1 (SelectedRegions, RegionUnion)
reduce_domain (Image, RegionUnion, ImageReduced)
HIS/HSV
统计颜色数量
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Progress/examples/images/color/color_pieces_02.png')
decompose3 (Image, R, G, B)
trans_from_rgb (R, G, B, H, S, V, 'hsv')
* BLUE
threshold (R, Region, 0, 120)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2000, 99999)
count_obj (SelectedRegions, BLUE_Number)
* YELLOW
threshold (G, Region, 200, 255)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, YELLOW_Number)
* RED
threshold (H, Region, 240, 255)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999)
count_obj (SelectedRegions, RED_Number)
总结:总结文档