设置首页收藏本站
开启左侧

halcon选取芯片上划痕

[复制链接]
bjlcx125 发表于 2025-11-10 16:29:54 | 显示全部楼层 |阅读模式
这种芯片上的线痕怎么取出来,试了RGB通道,灰度,阈值分割;频域都取不出来。怎么选取?求大佬帮忙
1.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
大凡光学,专注标定板提供
holybang 发表于 2025-11-10 17:24:46 | 显示全部楼层
2025-11-10_17-22-45-039.PNG

刚好可以用频域处理算法把重复的芯片过滤掉
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| bjlcx125 发表于 2025-11-10 18:15:54 | 显示全部楼层
大佬,我调不出来,能看看你是怎么写的么?谢谢
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
holybang 发表于 2025-11-11 09:36:46 | 显示全部楼层
本帖最后由 holybang 于 2025-11-11 11:16 编辑
  1. * 1. 读取彩色图片
  2. read_image (Image, 'input.png')

  3. * 2. 简单降噪一下并转换为HSV颜色空间并提取亮度通道
  4. gauss_filter (Image, ImageGaussed, 5)
  5. decompose3(ImageGaussed, ImageR, ImageG, ImageB)
  6. trans_from_rgb (ImageR, ImageG, ImageB, ImageH, ImageS, ImageV, 'hsv')

  7. * 3. 获得频谱图
  8. fft_generic (ImageV, VFFT, 'to_freq', -1, 'none', 'dc_center', 'complex')
  9. power_ln (VFFT, VFFT_ln)

  10. * 4. 将频谱图最大最小归一化到0-255,方便后续用图像处理算法处理它
  11. get_image_size(Image, Width, Height)
  12. gen_rectangle1(ImageEntireReg, 0, 0, Width, Height)
  13. min_max_gray(ImageEntireReg, VFFT_ln, 0, Min, Max, Range)
  14. scale_image_range(VFFT_ln, VFFT_ln_scaled, Min, Max)
  15. convert_image_type (VFFT_ln_scaled, VFFT_ln_8u, 'byte')

  16. * 5. 对频谱图简单降噪一下
  17. gauss_filter (VFFT_ln_8u, GaussFiltered, 3)

  18. * 6. 自适应阈值处理,得到频谱局部极值点的region,因为图中要增强的网格特征是一种重复纹理,所以频谱图上一定会表现为距离相等的一些极值点
  19. local_threshold (GaussFiltered, img_thresh, 'adapted_std_deviation', 'light', ['mask_size', 'scale'], [61, 0.1])

  20. * 7. 对频谱极值点区域进行形态学膨胀
  21. dilation_circle (img_thresh, Dilated, 1.5)

  22. * 8. 将区域转换成real类型的蒙版图像,因为后续要将区域作为频域滤波器使用,所以也得做最大最小归一化
  23. region_to_bin(Dilated, ImageMaskFiltered, 255, 0, Width, Height)
  24. invert_image(ImageMaskFiltered, ImageMaskFiltered)
  25. convert_image_type(ImageMaskFiltered, ImageMaskFiltered, 'real')
  26. scale_image(ImageMaskFiltered, ImageMaskFiltered, 1.0/255, 0)

  27. * 9. 应用自定义蒙版图像作为滤波器
  28. convol_fft (VFFT, ImageMaskFiltered, ImageComplex)

  29. * 10. 逆傅里叶变换得到消除芯片之后的亮度通道
  30. fft_generic(ImageComplex, ImageResult, 'from_freq', 1, 'none', 'dc_center', 'real')

  31. * 保存结果
  32. min_max_gray(ImageEntireReg, ImageResult, 0, Min, Max, Range)
  33. scale_image(ImageResult, ImageResult, 255.0/(Max-Min), -255.0*Min/(Max-Min))
  34. convert_image_type(ImageResult, ImageResult, 'byte')
  35. write_image(ImageResult, 'png', 0, 'result.png')
复制代码
result.png

结果和前面我发的略有区别,不过应该够用了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复 支持 3 反对 0

使用道具 举报

 楼主| bjlcx125 发表于 2025-11-11 10:12:54 | 显示全部楼层
holybang 发表于 2025-11-11 09:36
结果和前面我发的略有区别,不过应该够用了

谢谢
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表