本帖最后由 holybang 于 2025-10-17 13:20 编辑
第一列是原图,第二列是原图做灰度矫正,第三列是灰度矫正后做降噪,因为比较暗的图被算法强制拉成高亮之后噪声会被加强
Halcon代码如下
- path1 := '你的OK图文件夹'
- path2 := '你的NG图文件夹'
- list_files(path1, ['files'], FilePaths1)
- list_files(path2, ['files'], FilePaths2)
- tuple_concat(FilePaths1, FilePaths2, FilePaths)
- tuple_regexp_select (FilePaths, ['result','invert_match'], FilePaths)
- for Index := 0 to |FilePaths|-1 by 1
-
- tuple_select (FilePaths, Index, FilePath)
- read_image (Image, FilePath)
- decompose3(Image, ImageR, ImageG, ImageB)
- * 设置测量亮度用的ROI
- gen_rectangle1(BrightnessRoi, 635-19, 1325-102, 635+19, 1325+102)
- gray_features (BrightnessRoi, ImageG, 'mean', Brightness)
-
- * 计算亮度矫正系数
- scale := 85/Brightness
-
- * 矫正亮度
- scale_image(ImageG, ImageGS, scale, 0)
-
- * 截取感兴趣区域,方便加速后续处理,因为后续的降噪算子很耗时
- crop_part(ImageGS, ImageGSCropped, 214, 851, 606, 454)
- crop_part(ImageG, ImageGCropped, 214, 851, 606, 454)
-
- * 降噪(和我之前的结果不完全一致,因为halcon没有完全一样的降噪算子,这是最接近的)
- anisotropic_diffusion(ImageGSCropped, ImageAniso, 'weickert', 5, 1, 10)
-
- * 创建一个图片列表对象,将三个图放一起,方便拼接保存到一个图
- gen_empty_obj (ImageList)
- concat_obj(ImageList, ImageGCropped, ImageList)
- concat_obj(ImageList, ImageGSCropped, ImageList)
- concat_obj(ImageList, ImageAniso, ImageList)
-
- tile_images(ImageList, TiledImage, 3, 'horizontal')
-
- tuple_str_replace (FilePath, '.jpg', '_result', ResultFilePath)
- write_image(TiledImage, 'png', 0, ResultFilePath)
-
- endfor
复制代码
|