一、胶路检测
核心算子:
reate_bead_inspection_model` + `apply_bead_inspection_model`halcon
* 创建胶路检测模型
gen_contour_nurbs_xld(ContourRef, 701.767,626.953..., 319.24,336.133..., 'auto', 15,15..., 3, 1, 5)
create_bead_inspection_model(ContourRef, TargetWidth, WidthTolerance, PositionTolerance, Polarity, , , BeadInspectionModel)
* 图像校正与检测
align_bead(Image, ImageAligned, ModelID, RowT, ColumnT)
apply_bead_inspection_model(ImageAligned, BeadInspectionModel, DefectRegions)
关键参数:`PositionTolerance`控制胶路位置偏差容忍度,`WidthTolerance`控制胶宽误差范围^1^2
二、工业贴膜检测
方法:模板匹配差分法
halcon
* 模板匹配定位
create_shape_model(TemplateImage, 'auto', 0, rad(360), 'auto', 'auto', 'use_polarity', ModelID)
find_shape_model(TestImage, ModelID, 0, rad(360), 0.8, 1, 0.5, 'least_squares', Row, Column, Angle)
* 差集运算检测缺陷
affine_trans_region(TemplateRegion, TransRegion, TransMatrix, 'nearest_neighbor')
difference(TestRegion, TransRegion, DefectRegions)
优势:可检测贴膜破损、气泡等局部形变缺陷^7
---
三、脏污检测
方法1:动态阈值法(适合随机脏污)
halcon
mean_image(Image, ImageMean, 31, 31)
dyn_threshold(Image, ImageMean, DirtyRegions, 15, 'light')
opening_circle(DirtyRegions, CleanRegions, 3.5)
方法2:频域滤波(适合周期性背景)
halcon
fft_image(GrayImage, ImageFFT)
gen_gauss_filter(Filter, 50, 50, 0, 'none', 'rft', Width, Height)
convol_fft(ImageFFT, Filter, ImageConvol)
fft_image_inv(ImageConvol, ImageInv)
threshold(ImageInv, DirtyRegions, 50, 255)
适用场景:灰尘、油渍等微小异物检测^10^11
---
四、二维测量
亚像素级精度实现:
halcon
create_metrology_model(MetrologyHandle)
add_metrology_object_circle_measure(MetrologyHandle, Row, Column, Radius, 30, 5, 1, 30, , , Index)
apply_metrology_model(Image, MetrologyHandle)
get_metrology_object_result(MetrologyHandle, Index, 'all', 'radius', Result)
精度控制:`measurelength1`参数调整测量区域密度^13^14
---
五、缺陷检测
方法1:形态学差异(表面划痕)
halcon
mean_image(Image, ImageMean, 31, 31)
dyn_threshold(Image, ImageMean, RegionDynThresh, 15, 'dark')
opening_circle(RegionDynThresh, DefectRegions, 3.5)
方法2:深度学习(复杂缺陷)
halcon
read_dl_model('defect_detection.hdl', DLModelHandle)
apply_dl_model(Image, DLPreprocessParam, DLResult)
get_dict_tuple(DLResult, 'defect_regions', DefectRegions)
对比:传统方法实时性强,深度学习适合复杂纹理缺陷^5^8
---
六、MTF(调制传递函数)
清晰度量化评估:
halcon
edges_sub_pix(Image, Edges, 'canny', 1.5, 20, 40)
get_contour_global_attrib_xld(Edges, 'mtf', MTFValue)
评价指标:MTF50值对应空间频率响应衰减到50%时的频率^17
---
七、图像清晰度
评价算子对比:
halcon
* Tenegrad梯度法
sobel_amp(Image, EdgeAmplitude, 'sum_sqrt', 3)
intensity(EdgeAmplitude, EdgeAmplitude, Value, Deviation)
* 方差法
region_to_mean(Image, Image, ImageMean)
sub_image(Image, ImageMean, ImageSub, 1, 0)
mult_image(ImageSub, ImageSub, ImageResult, 1, 0)
应用:自动对焦系统中清晰度峰值搜索^18^19
---
八、双目测距
核心流程:
halcon
binocular_calibration(CalibDataID) * 双目标定
binocular_disparity(Image1, Image2, Disparity, 'sgm', , )
disparity_to_distance(Disparity, CameraParam, Distance)
精度影响:基线距离和镜头畸变校正精度^22^24
---
九、FOV计算
公式推导:
$$ FOV = 2 \times \arctan\left(\frac{SensorSize}{2 \times FocalLength}\right) $$
Halcon实现:
halcon
get_calib_data(CalibDataID, 'camera', 0, 'params', CameraParam)
focal_length := CameraParam0
sensor_width := CameraParam4
fov := 2 * atan(sensor_width / (2 * focal_length))
应用:视野范围与分辨率匹配计算^14^22
---
关键建议:
1. 胶路/贴膜检测优先使用模板匹配+差分法组合^2^7
2. 高精度测量需配合相机标定与亚像素算法^13^14
3. 复杂缺陷检测推荐传统算法与深度学习融合方案^5^8
4. 实时性要求高的场景避免使用频域变换等复杂运算
完整示例代码可参考Halcon安装目录下的:
- `examples/hdevelop/Applications/Bead-Inspection/apply_bead_inspection_model.hdev`^1
- `solution_guide/vision/code_metrology.hdev`^13
领取专属 10元无门槛券
私享最新 技术干货