金属表面划痕检测

发布于:2023-01-13 ⋅ 阅读:(493) ⋅ 点赞:(0)

金属表面划痕检测

此代码是识别金属表面划痕缺陷,对各种方向的缺陷均有效
在这里插入图片描述在这里识别后插入图片描述识别后结果如图

read_image (Image,'Image')
rgb1_to_gray (Image, Image)
get_image_size (Image, Width, Height)
optimize_fft_speed (2448, 2048, 'standard')
gen_empty_region (Domain)
for I:= 0 to 17 by 1    
    invert_image (Image, ImageInvert)
    fft_generic (ImageInvert, Imagefft, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
    gen_gauss_filter (ImageGauss, 8, 1, rad(I*10), 'none', 'dc_center', Width, Height)
    convol_fft (Imagefft, ImageGauss, ImageConvol)
    fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
    get_domain (ImageFFT1, Domain)
    erosion_rectangle1 (Domain, RegionErosion, 10, 10)
    reduce_domain (ImageFFT1, RegionErosion, ImageReduced)
    lines_gauss (ImageReduced, Lines,1.7, 1, 3, 'light', 'true', 'gaussian', 'true')
    union_collinear_contours_xld (Lines, UnionContours, 30, 1, 20, 0.1, 'attr_keep')
    select_shape_xld (UnionContours, xld, 'contlength', 'and', 100, 1000)
    select_shape_xld (xld, SelectedXLD, 'width', 'and', 0, 50)
    length_xld (SelectedXLD, len_xld)
    if (|len_xld|>0)
        dev_display (Image)
        dev_display (xld)
        stop()   
    endif
endfor