图像快速傅里叶变换的工业应用案例简介:图像自相关,背景纹理去除,旋转矫正,划痕检测

快速傅里叶变换是非常重要的数学分析工具,同时也是一种非常重要的信号处理方法。

下面借助Halcon商业图像处理库,介绍些工业应用案例,我们可以通过案例理解图像快速傅里叶变换的一些应用场景。

案例1:图像自相关性确定芯片间距

下图示意的晶圆图像中有芯片周期性的排列,而自相关函数计算纹理周期具有很好的效果。

图片

wafer

为提升计算效率,我们可以应用快速傅里叶变换将晶圆图像转换到频域中去计算自相关图像。

图片

频域方法计算晶圆图像的自相关图像

* 代码片段选自Halcon例程文件: determine_die_pitch_fft_correlation.hdevrft_generic (Wafer, ImageFFT, 'to_freq', 'n', 'complex', Width)correlation_fft (ImageFFT, ImageFFT, ImageCorrelation)rft_generic (ImageCorrelation, ImageFFTInv, 'from_freq', 'n', 'real', Width)

图片

wafer image auto-correlation

自相关图像上  点的灰度值是将图像水平移动  、垂直移动  后与原始图像做相关运算得到的相关值。

上图示意的是自相关图像计算结果中,自相关图像原点的灰度值很高,因为这点代表没有移动的图像与其自身的相关性。如果原图像上有周期性宽度  和高度  的矩形结构,在自相关图像的  位置上也会得到高的相关值。通过在相关图像上找到与原点最近的局部极大值,直接得到周期结构的尺寸。

应用 local_max_sub_pix 图像局部极大值的亚像素精确检测函数,提取自相关图像中的局部极值点。亚像素精度局部极大值可以通过如下代码得到:

  local_max_sub_pix (ImageFFTInv, 'gauss', 3, 0.0001, Row, Column)

确定芯片周期间距后,可以进一步应用基于形状的模板匹配准确的定位芯片位置,并从晶圆图片中分割出每个芯片。

案例2:去除背景纹理

如何通过频域过滤将前景信息从干扰的背景纹理中分离出来?

首先,对图像进行傅里叶变换,以获得其频谱。然后,我们检测频谱中与干扰性背景纹理相对应的频率峰值。之后,建立一个消除这些频率的滤波器,并将其应用于频谱。通过对过滤后的频谱进行反傅立叶变换,我们得到一个过滤后的图像,其中的干扰性背景纹理将被去除。

图片

remove_texture_fft

背景纹理在频谱图中对应的是高频信号,频谱图像中间区域为低频信号。

图片

频谱图

我们通过阈值分割提取信号显著的低频区域。

图片

低频区域

以低频区域的以两倍的频率构建高频波段ROI区域,在高频波段ROI区域中,阈值分割提取显著的高频分量,如下图中红色圈注为高频分量区域。

图片

高频分量区域

将频谱图中的高频分量区域置为0,以此过滤高频分量。

图片

将过滤后的频谱图反傅里叶变换即可得到去除背景纹理的图像。

案例3:对栅格图像进行旋转校正

快速傅里叶变换将图像从时域转换到频域,定义0度栅格图像,并以0度栅格为基础创建基准信息。下图为0度栅格图像

图片

0°栅格图像

统计基准图像的边缘梯度方向

使用边缘检测的算子(如Roberts,Sobel,Scharr等)来计算图像中的水平、垂直和对角方向的梯度。得到水平和垂直方向的一阶导数值,由此便可以确定像素点的梯度的大小和方向。Halcon中提供了edges_image算子计算边缘梯度方向图,该算子输出的梯度方向图的灰度值范围为[0,179],即0°~179°.

图片

边缘梯度方向图

以0°~179°范围统计梯度方向直方图。即每个角度在图像中的像素总数。灰度边缘方向统计直方图如下图所示

图片

边缘梯度方向统计直方图

对于栅格图像,当图像旋转时,其梯度方向直方图也会同步水平平移,因此计算与标准梯度直方图最佳相关性可以得到相对的旋转角度,频谱图上计算相关性图基本原理是待检图直方图和标准图直方图的FFT 频域乘积再转换回时域,其相当于时域卷积结果。

确定要处理的图像的旋转角度

  • 计算待处理图像的边缘方向统计直方图(该直方图用图像表示,其行列为1*180)。待处理图像的边缘方向直方图与基准图像的边缘方向直方图如下图所示

    图片

  • 计算旋转物体边缘方向统计直方图的FFT图像与基准边缘方向统计直方图FFT图像

  • 找到目标和参考FFT之间的最佳相关性,该最佳相关性对应于两个图像之间的相对角度。最佳相关性需要在相关性图的局部极值中筛选。

案例4:检测划痕缺陷

通过频域滤波检测非均匀照明表面中的缺陷(划痕)。待处理图像如下图所示:

图片

划痕图像

  • 首先,反转图像

图片

划痕图像反转

  • 创建合适的带通滤波器。然后,在频域对输入图像进行傅里叶变换和滤波,从而增强高频信息。

* Enhance the scratches by filtering in the frequency domain
gen_sin_bandpass (ImageBandpass, 0.4, 'none', 'rft', Width, Height)
rft_generic (ImageInverted, ImageFFT, 'to_freq', 'none', 'complex', Width)
convol_fft (ImageFFT, ImageBandpass, ImageConvol)
rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width)

gen_sin_bandpass 产生旋转不变带通滤波器,其响应为频域中的正弦函数,频域带通滤波器图像如下图

图片

convol_fft 在频域中用正弦带通滤波器对待检测图的FFT图像进行卷积。从而滤除低频,增强高频信息。最后,将其转换回空间域,并对增强后的缺陷进行形态学后处理。*rft_generic (ImageInverted, ImageFFT, 'to_freq', 'none', 'complex', Width)*计算待检测图的FFT图像rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width) 将频域卷积图像变换回时域。滤波后且增强高频信息的图像如下所示:

图片

  • 阈值分割、形态学处理及缺陷筛选

图片

图片

图片

形态学分析与划痕筛选

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/24698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

体育赛事管理系统的设计与实现(源码+论文)_kaic

摘要 许多年以前,人们在对数据进行统计和记录时候,使用的是纸和笔,对于大量数据的记录很不方便,使用的人力物力也很庞大,到了现在,人们对纸和笔的依赖慢慢降低,在如今的互联网时代,…

python爬虫1:基础知识

python爬虫1:基础知识 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫1:基础知识1. 基础认知1.1 什么是爬虫&…

3.CNI网络

文章目录 CNI网络FlannelUDP模式VXLAN模式部署flannel CalicoCalico模式Calico部署 flannel 和 calico 区别 CNI网络 K8S 中 Pod 网络通信: Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命…

Redis内网主从节点搭建

Redis内网主从节点搭建 1、文件上传2、服务安装3、服务启动4、配置主从复制 1、文件上传 内网环境手动上传gcc-c、redis.tar文件 2、服务安装 # 解压 unzip gcc-c.zip unzip gcc_rpm.zip tar -zxvf redis-6.2.13.tar.gz# 安装 cd gcc_rpm/ rpm -ivh *.rpm --nodeps --force…

【HDFS】每天一个RPC系列----complete(二):客户端侧

上图给出了最终会调用到complete RPC的客户端侧方法链路(除去Router那条线了)。 org.apache.hadoop.hdfs.DFSOutputStream#completeFile(org.apache.hadoop.hdfs.protocol.ExtendedBlock): 下面这个方法在complete rpc返回true之前,会进行重试,直到超过最大重试次数抛异…

ChatGPT下架官方检测工具,承认无法鉴别AI内容

去年底,OpenAI 推出的 ChatGPT ,带来了生成式人工智能涌现的热潮。它不仅能够协助完成撰写邮件、视频脚本、文案、翻译、代码等任务,还能通过学习和理解人类的语言来进行对话,并根据聊天的上下文进行互动。 但随之而来的争议也让人…

整理一些Postgresql工作中常用面试中会问的问题---Postgresql面试题001

1.什么是Postgresql TOAST? TOAST (The Oversized-Attribute Storage Technique,超大尺寸字段存储技术)主要用于存储大字段的值。 PostgreSQL 页面(page)大小是固定的(通常为8KB),且不允许tuples跨多个页面存储。因此不能存储非常大的字段值。为了克服这个限制,大字段…

IOS开发:指定路径创建新文件夹

指定路径创建新文件夹 典型错误示范: let documentDirectoryURL FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] let directoryURL documentDirectoryURL.appendingPathComponent("FolderName", isDirectory: true)if F…

Service not registered 异常导致手机重启分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1, ruby 2,修改launch.json

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

近日,Zebec Protocol 创始人 Sam 作为嘉宾,与社区进行了以“Zebec 生态发展”为主题的 AMA 对话。Sam 在线上访谈上对 Zebec 路线图、Zebec 质押、NautChain通证进行了解读,并对 Zebec 的进展、生态建设的愿景进行了展望。本文将对本次 AMA 进…

C语言第十四课-------结构体的认识和使用-------重要一笔

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂…

P1195 口袋的天空

口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。 题目描述 给你云朵的个数 N N N,再给你 M M M 个关系&…

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…

Rocky(centos) jar 注册成服务,能开机自启动

概述 涉及:1)sh 无法直接运行java命令,可以软连,此处是直接路径 2)sh脚本报一堆空格换行错误:需将转成unix标准格式; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2)SELINUX …

【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)

prometheus 出现NaN场景以及如何去除干扰(Not a Number) 1、在prometheus中使用NaN来表示无效数值或者结果 场景: 一些监控系统使用 NaN 作为空值或缺失值,但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prom…

哪些年,我们编程四处找的环境依赖

基于Maven&#xff0c;快速构建SSM项目 <properties><!-- 将spring和有关的升级版本&#xff0c;设置为5.0.5--><spring.version>5.0.5.RELEASE</spring.version><!-- 将mybatis和有关的升级版本&#xff0c;设置为3.1.1--><my…

深度Q学习的收敛性分析:通过渐近分析方法

深度Q学习收敛性分析:通过渐近分析方法 1. 概述1.1. 理论的相关研究1.2. 主要贡献1.2.1. 目标网络1.2.2. 经验回放2. 神经网络2.1. 前馈网络2.2. 激活函数σ2.3. 深度Q网络3. 深度Q学习:算法和假设4. 收敛性分析4.1. DQN的连续化深度Q学习是一种重要的强化学习算法,它涉及到…

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

【C# 基础精讲】C# 数据类型概述

在C#中&#xff0c;数据类型可以分为以下三大类&#xff1a;值类型、引用类型和指针类型。每种类型都具有不同的特点和适用场景&#xff0c;了解这些类型对于编写高效和稳健的C#程序至关重要。下面将依次介绍这三大类数据类型&#xff0c;并列出C#中常见的每种类型。 值类型 值…