halcon 缺陷检测 傅里叶变换去除文字

请添加图片描述

图片资源

链接:https://pan.baidu.com/s/1J_wmjQgan3lxblZr-qHQgg
提取码:klin

处理流程

1、傅里叶变换 获取光谱图
2、获取内圈菱形光谱区域(非文字区)
3、获取外圈菱形光谱区域(非文字区)
4、组合内外圈 光谱图 并将区域置0 (滤除非文字区域(背景纹理))
5、逆傅里叶变换 计算 滤波后的图片
6、原图 - 滤波后图(无背景纹理图) = 背景纹理图
7、显示去除文字图片

完整代码

* 通过傅里叶变换 去除图片中的文字

dev_update_off ()
dev_clear_window ()

Scale := [1.0, 0.65]
MinGray := [50, 100]

for Index := 0 to 1 by 1
    **** 1、读取图片 *********************
    read_image (Image, './img/plan_'+ (Index + 1) $'02')
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width * Scale[Index], Height * Scale[Index], 'black', WindowHandle)
    set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
    dev_set_part (0, 0, Height-1, Width-1)
    dev_display (Image)
    disp_message (WindowHandle, '原始图片', 'window', 12, 12, 'black', 'true')
    
    **** 2、傅里叶变换 获取光谱图 *********************
    * 设置 FFT的处理速度
    optimize_fft_speed (Width, Height, 'standard')
    
    * 图片傅里叶变换 
    * to_freq 图片转换为频域  -1 指数符合 sqrt 归一化因子 dc_center 绘制的位置 'complex' 输出图片的类型
    fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
    
    * 显示傅里叶光谱图
    dev_open_window (0, 0, Width * Scale[Index] + 7, Height * Scale[Index] + 7, 'black', WindowHandle1)
    set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')
    dev_set_part (0, 0, Height-1, Width-1)
    dev_display (ImageFFT)
    disp_message (WindowHandle1, '傅里叶光谱图', 'window', 12, 12, 'black', 'true')
    disp_continue_message (WindowHandle1, 'black', 'true')
    stop ()
    
    **** 3、获取内圈菱形区域 *********************
    * fft图片实部与虚部 转为实数
    power_real (ImageFFT, PowerSpectrum)
    * 二值滤波平滑
    binomial_filter (PowerSpectrum, ImageBinomial, 9, 9)
    * 二值化
    threshold (ImageBinomial, Region, MinGray[Index], 999999)
    * 连通域分析与筛选
    connection (Region, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5, 200)
    * 合并挑选区域
    union1 (SelectedRegions, RegionUnion)
    * 聚焦周围区域
    reduce_domain (ImageBinomial, RegionUnion, ImageReduced)
    * 使用局部最大值
    local_max (ImageReduced, LocalMaxima1)
    * 菱形点 组合成区域
    shape_trans (LocalMaxima1, RegionTrans, 'convex')
    
    **** 4、放大外圈 获取外菱形处理区域 *********************
    hom_mat2d_identity (HomMat2DIdentity)
    * 区域放大矩阵 2.1
    hom_mat2d_scale (HomMat2DIdentity, 2.1, 2.1, Height/2, Width/2, HomMat2DScale)
    * 区域放大
    affine_trans_region (RegionTrans, RegionTrans1, HomMat2DScale, 'nearest_neighbor')
    * 区域放大矩阵 1.9
    hom_mat2d_scale (HomMat2DIdentity, 1.9, 1.9, Height/2, Width/2, HomMat2DScale)
    * 区域放大
    affine_trans_region (RegionTrans, RegionTrans2, HomMat2DScale, 'nearest_neighbor')
    * 2.1 - 1.9 获取外菱形区域
    difference (RegionTrans1, RegionTrans2, RegionDifference)
    
    * 聚焦外菱形区域
    reduce_domain (ImageBinomial, RegionDifference, ImageReduced)
    * 二值化
    threshold (ImageReduced, Region, 15, 100000)
    * 再次聚焦二值化后区域
    reduce_domain (ImageReduced, Region, ImageReduced)
    * 外圈局部最大值
    local_max (ImageReduced, LocalMaxima2)
    
    
    **** 5、合并内外菱形区域 获取滤波后的频域图 *********************
    * 合并内外菱形区域
    union2 (LocalMaxima1, LocalMaxima2, RegionUnion)
    * 圆形膨胀算法
    dilation_circle (RegionUnion, RegionDilation, 15.5)
    * 频域图 过滤内外菱形区域(置0)
    paint_region (RegionDilation, ImageFFT, ImageFFTFiltered, 0, 'fill')
    dev_display (ImageFFT)
    dev_set_draw ('margin')
    dev_display (RegionDilation)
    
    disp_message (WindowHandle1, '去非除文字频域区域', 'window', 12, 12, 'black', 'true')
    disp_cont_message(WindowHandle1, 'black', 'true')
    stop ()
    
    **** 6、逆向傅里叶变换(去除背景纹理频域图) 转为byte*********************
    fft_generic (ImageFFTFiltered, ImageFiltered, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
    dev_display (ImageFiltered)
    disp_message (WindowHandle1, '去除背景纹理图', 'window', 12, 12, 'black', 'true')
    
    **** 7、 计算背景纹理图(无文字) *********************
    * 原始图片 - 无纹理文字图 = 背景纹理图
    sub_image (Image, ImageFiltered, ImageTexture, 1, 128)
    
    * 显示并关闭 窗体
    dev_open_window (0, 2 * (Width * Scale[Index]) + 14, Width * Scale[Index], Height * Scale[Index], 'black', WindowHandle2)
    set_display_font (WindowHandle2, 14, 'mono', 'true', 'false')
    dev_set_part (0, 0, Height - 1, Width - 1)
    dev_display (ImageTexture)
    disp_message (WindowHandle2, 'Removed texture', 'window', 12, 12, 'black', 'true')
    if (Index < 1)
        disp_cont_message(WindowHandle2, 'black', 'true')
        stop ()
        dev_close_window ()
        dev_close_window ()
        dev_close_window ()
    endif
endfor

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Halcon是一种常用的图像处理软件,可以用于各种缺陷检测任务。在Halcon中,可以使用不同的算法和技术来进行缺陷检测。根据引用\[1\]中提供的实例,Halcon可以用于背景网格产品刮伤缺陷检测、不均匀表面刮伤检测、产品表面三角缺陷检测、产品毛刺检测、产品上凹坑检测、产品周围缺口检测、电路板短路、断路检测、找出所有网格顶点的位置、化妆品标签褶皱检测、皮革纹理表面缺陷检测、手机摄像头图像表面的轻微缺陷检测、网状产品表面破损检测、铣刀刀口破损缺陷检测和检测印刷数字是否完整等任务。 根据引用\[2\]中的描述,缺陷检测是一项具有挑战性的任务,需要保证稳定性和精度。传统的算法检测缺陷通常需要进行复杂的调试和参数调整,而且容易出现检测不稳定和误测的情况。机器学习和深度学习成为缺陷检测领域的重要技术难点。机器学习方法通常使用类似MLP的神经网络对缺陷特征进行训练和分类。深度学习方法则需要大量的缺陷样本进行训练,并且需要手动标注缺陷位置,训练周期较长。迁移学习法是一种新兴的方法,可以利用已经训练好的网络模型进行缺陷检测。 在日常工程应用中,Halcon通常使用形状匹配进行定位,但当待匹配物体有较大变形时,形状匹配的结果可能不准确,特别是在塑料产品成形时变形或纺织产品因褶皱而变形的情况下。这时需要采用其他方法来获得精确的定位结果。 综上所述,Halcon可以应用于各种缺陷检测任务,并且可以根据具体情况选择合适的算法和技术来实现精确的检测结果。 #### 引用[.reference_title] - *1* [【愚公系列】2023年04月 Halcon机器视觉-15种常用缺陷检测实例](https://blog.csdn.net/aa2528877987/article/details/129943049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于halcon缺陷检测常用方法与示例总结](https://blog.csdn.net/weixin_50016546/article/details/124981131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值