金属表面划痕检测
此代码是识别金属表面划痕缺陷,对各种方向的缺陷均有效
识别后结果如图
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