当前位置: 首页 > news >正文

十 缺陷检测解决策略之三:频域+空域

十 缺陷检测解决策略之三:频域+空域

read_image (Image, '矩形')
* 中间低频,四周高频
fft_image (Image, ImageFFT)
* 中间低频,四周高频
fft_generic (Image, ImageFFT1, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 中间高频,四周低频
rft_generic (Image, ImageFFT2, 'to_freq', 'sqrt', 'complex', 512)read_image (Image, '圆')
* 中间低频,四周高频
fft_image (Image, ImageFFT)
* 中间低频,四周高频
fft_generic (Image, ImageFFT1, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 中间高频,四周低频
rft_generic (Image, ImageFFT2, 'to_freq', 'sqrt', 'complex', 512)*******
* 猜方向
*******
read_image (Image, '菱形3')
rgb1_to_gray (Image, GrayImage)
* 中间低频,四周高频
fft_image (GrayImage, ImageFFT)
* 中间低频,四周高频
fft_generic (GrayImage, ImageFFT1, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 中间高频,四周低频
rft_generic (GrayImage, ImageFFT2, 'to_freq', 'sqrt', 'complex', 512)
dev_get_window (WindowHandle)
* 读取图像
read_image (Image1, 'test1.png')
* 转灰度图(空间域转频域)
rgb1_to_gray (Image1, GrayImage)
* 傅里叶变换
fft_image (GrayImage, ImageFFT)
* 生成矩形
gen_rectangle1 (ROI_0, 27.4359, 25.9474, 190.912, 261.505)
* 生成矩形
gen_rectangle1 (TMP_Region, 210.916, 276.316, 368.874, 522.453)
* 区域合并
union2 (ROI_0, TMP_Region, ROI_0)
* 绘制区域
paint_region (ROI_0, ImageFFT, ImageResult, 0, 'fill')
* 反傅里叶变换(频域转空间域)
fft_image_inv (ImageResult, ImageFFTInv)
* 显示结果图像
dev_display (ImageFFTInv)* 傅里叶变换
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 生成矩形
gen_rectangle1 (ROI_0, 27.4359, 25.9474, 190.912, 261.505)
gen_rectangle1 (TMP_Region, 210.916, 276.316, 368.874, 522.453)
* 生成矩形
* 区域合并
union2 (ROI_0, TMP_Region, ROI_0)
* 绘制区域
paint_region (ROI_0, ImageFFT, ImageResult, 0, 'fill')
* 反傅里叶变换(频域转空间域)
fft_image_inv (ImageResult, ImageFFTInv)
fft_generic (ImageResult, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'complex')
* 显示结果图像
dev_display (ImageFFTInv)
*******************
*高通滤波(允许高频通过,显示强化细节)
*******************
* 读取图像
read_image (Image, 'printer_chip/printer_chip_01')
* 转灰度图
rgb1_to_gray (Image, GrayImage)
* 获取图像大小(为什么获取图像大小)
get_image_size (GrayImage, Width, Height)
* 傅里叶变换
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 生成高通滤波(允许高频通过,显示强化细节)
gen_highpass (ImageHighpass, 0.1, 'none', 'dc_center', Width, Height)
* 反傅里叶变换
convol_fft (ImageFFT, ImageHighpass, ImageConvol)
* 反傅里叶变换
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'complex')*******************
*低通滤波(允许低频通过,显示强化背景)
*******************
* 读取图像1.读取图像,并转灰度图像
read_image (Image, 'printer_chip/printer_chip_01')
* 转灰度图1.读取图像,并转灰度图像
rgb1_to_gray (Image, GrayImage)
* 获取图像大小
get_image_size (GrayImage, Width, Height)
* 傅里叶变换2.傅里叶变换,空间域转频域
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 生成低通滤波(允许低频通过,显示强化背景)
gen_lowpass (ImageLowpass, 0.1, 'none', 'dc_center', Width, Height)
* 反傅里叶变换3.对频域进行滤波操作4.反傅里叶变换,频域转空间域
convol_fft (ImageFFT, ImageLowpass, ImageConvol)
* 反傅里叶变换
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'complex')read_image (Image2Ok5, 'C:/Users/Jumy/Documents/WXWork/1688858086618338/Cache/File/2024-07/2_OK5.tif')
rgb1_to_gray (Image2Ok5, GrayImage1)
mult_image (GrayImage1, GrayImage1, ImageResult, 0.009, 0)
emphasize (ImageResult, ImageEmphasize, 7, 7, 1)
fft_generic (ImageEmphasize, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
gen_highpass (ImageHighpass, 0.1, 'none', 'dc_center', 5472, 3648)
convol_fft (ImageFFT, ImageHighpass, ImageConvol)
fft_generic (ImageConvol, ImageFFT1, 'from_freq', -1, 'sqrt', 'dc_center', 'complex')
read_image (Image2Ok5, '2_OK5.tif')
rgb1_to_gray (Image2Ok5, GrayImage1)
mult_image (GrayImage1, GrayImage1, ImageResult, 0.009, 0)
emphasize (ImageResult, ImageEmphasize, 7, 7, 1)
fft_generic (ImageEmphasize, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
gen_highpass (ImageHighpass, 0.1, 'none', 'dc_center', 5472, 3648)
convol_fft (ImageFFT, ImageHighpass, ImageConvol)
fft_generic (ImageConvol, ImageFFT1, 'from_freq', -1, 'sqrt', 'dc_center', 'complex')
dev_update_off ()
dev_close_window ()
* 1.读取图像,并转灰度图像
* 读取图像
read_image (Image, 'plastics/plastics_01')
* 获取图像大小get_image_size (Image, Width, Height)
* 窗口显示设置
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('red')
* 优化傅里叶变换速度
optimize_rft_speed (Width, Height, 'standard')
* 参数设置
* 值越大,低频部分越多,区域越小
Sigma1 := 10.0
Sigma2 := 3.0
* 3.生成对应的滤波操作
* 高斯滤波(低频滤波)3.生成对应的滤波操作
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'dc_center', Width, Height)
* 高斯滤波(低频滤波)
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'dc_center', Width, Height)
* 滤波相减
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)
* 遍历
NumImages := 11
for Index := 1 to NumImages by 1* 读取图像*  1.读取图像,并转灰度图像read_image (Image, 'plastics/plastics_' + Index$'02')*************************** 频域预处理*************************** rgb转灰度rgb1_to_gray (Image, Image)* 傅里叶变换2.傅里叶变换,空间域转频域*    2.傅里叶变换,空间域转频域fft_generic (Image, ImageFFT, 'to_freq', -1, 'none', 'dc_center', 'complex')* 高斯滤波4.对频域进行滤波操作*   4.对频域进行滤波操作convol_fft (ImageFFT, Filter, ImageConvol)* 反傅里叶变换(获取实部)5.反傅里叶变换,频域转空间域*   5.反傅里叶变换,频域转空间域fft_generic (ImageConvol, ImageFiltered, 'from_freq', 1, 'n', 'dc_center', 'real')*************************** 空间域(Blob分析)6.缺陷检测***************************    6.缺陷检测* 决定方形区域内的灰度值,计算方形区域内的最大最小灰度的差,设置到每个图像点上* 增强对比度,图像增强的一种6.缺陷检测gray_range_rect (ImageFiltered, ImageResult, 10, 10)* 获取灰度的最大值、最小值、和范围(最大值-最小值)min_max_gray (ImageResult, ImageResult, 0, Min, Max, Range)* 阈值分割threshold (ImageResult, RegionDynThresh, max([5.55,Max * 0.8]), 255)* 连通connection (RegionDynThresh, ConnectedRegions)* 特征选取select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4, 99999)* 合并区域union1 (SelectedRegions, RegionUnion)* 开运算closing_circle (RegionUnion, RegionClosing, 10)* 连通connection (RegionClosing, ConnectedRegions1)* 特征选取select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 10, 99999)* 获取面积和区域中心点area_center (SelectedRegions1, Area, Row, Column)* 显示图像dev_display (Image)* 遍历所有区域Number := |Area|if (Number)* 生产轮廓gen_circle_contour_xld (ContCircle, Row, Column, gen_tuple_const(Number,30), gen_tuple_const(Number,0), gen_tuple_const(Number,rad(360)), 'positive', 1)* 设置显示结果ResultMessage := ['Not OK',Number + ' defect(s) found']Color := ['red','black']dev_display (ContCircle)elseResultMessage := 'OK'Color := 'forest green'endif* 显示结果信息disp_message (WindowHandle, ResultMessage, 'window', 12, 12, Color, 'true')if (Index != NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif
endfor

相关文章:

十 缺陷检测解决策略之三:频域+空域

十 缺陷检测解决策略之三:频域空域 read_image (Image, 矩形) * 中间低频,四周高频 fft_image (Image, ImageFFT) * 中间低频,四周高频 fft_generic (Image, ImageFFT1, to_freq, -1, sqrt, dc_center, complex) * 中间高频,四周低频 rft_ge…...

有望第一次走出慢牛

A股已走完30多年历程。 大约每十年,会经历一轮牛熊周期。特点是每一轮周期,大约九成的时间都是熊市主导。就是我们常说的 快牛慢熊。 这一次,会不会重复历史? 历史不会简单重复。已经感受到了盘面的变化。 有人说,股市爆涨爆…...

计算机网络(十二) —— 高级IO

#1024程序员节 | 征文# 目录 一,预备 1.1 重新理解IO 1.2 五种IO模型 1.3 非阻塞IO 二,select 2.1 关于select 2.2 select接口参数解释 2.3 timeval结构体和fd_set类型 2.4 socket就绪条件 2.5 select基本工作流程 2.6 简单select的服务器代…...

电力行业 | 等保测评(网络安全等级保护)工作全解

电力行业为什么要做网络安全等级保护? 电力行业是关系到国家安全和社会稳定的基础性行业,电力行业信息化程度相对较高,是首批国家信息安全等级保护的重点行业。 01 国家法律法规的要求 1994《计算机信息系统安全保护条例》(国务…...

总裁主题CeoMax-Pro主题7.6开心版

激活方式: 1.授权接口源码ceotheme-auth-api.zip搭建一个站点,绑定www.ceotheme.com域名,并配置任意一个域名的 SSL 证书。 2.在 hosts 中添加:127.0.0.1 www.ceotheme.com 3.上传class-wp-http.php到wp-includes目录&#xff…...

深入探讨编程的核心概念、学习路径、实际应用以及对未来的影响

在当今这个数字化时代,编程已成为连接现实与虚拟世界的桥梁,它不仅塑造了我们的生活方式,还推动了科技的飞速发展。从简单的网页制作到复杂的人工智能系统,编程无处不在,其重要性不言而喻。本文旨在深入探讨编程的核心…...

IDEA如何将一个分支的代码合并到另一个分支(当前分支)

前言 我们在使用IDEA开发Java应用时,经常是和git一起使用的。我们对于git常用的操作包括提交,推送,拉取代码等。还有一个重要的功能是合并代码。 那么,我们应该如何合并代码呢? 如何合并代码 首先,我们…...

Python实现基于WebSocket的stomp协议调试助手工具

stomp协议很简单,但是搜遍网络竟没找到一款合适的客户端工具。大多数提供的都是客户端库的使用。可能是太简单了吧!可是即便这样,假如有一可视化的工具,将方便的对stomp协议进行抓包调试。网上类似MQTT的客户端工具有很多&#xf…...

基于neo4j的旅游知识图谱维护与问答系统

你还在为毕业设计发愁吗?试试这个基于Neo4j的旅游知识图谱维护与问答系统吧!这套系统不仅功能强大,而且几乎涵盖了你需要的一切,完美助力你的毕业项目! 系统介绍 该系统是专门针对旅游景点信息的知识图谱工具&#x…...

竞赛学习路线推荐(编程基础)

关于学习路线的推荐,总体上,分两步学习,第一步学习编程语言(C、C、java),第二步是学习数据结构和算法 不少初学者会选择C语言或C作为首选,笔者这里也推荐C或C作为入门,需要注意的是&…...

webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建

如果使用 Google 提供的 STUN/TURN 服务器速度较慢,你完全可以自己搭建 STUN 和 TURN 服务器。这有助于提升网络连接速度和稳定性,特别是在需要穿透 NAT 或防火墙的网络环境下。 下面是如何自己搭建 STUN 和 TURN 服务器的具体步骤: 1. 选择…...

利用Pix4D和ArcGIS计算植被盖度

除了水文分析和沟道形态分析之外,在实际工作中还要计算植被盖度! 植被盖度,也称为植被覆盖率或植物覆盖度,是指某一地表面积上植物冠层垂直投影面积占该地表面积的比例。它通常以百分比的形式表示,是描述地表植被状况的…...

用docker Desktop 下载使用thingsboard/tb-gateway

1、因为正常的docker pull thingsboard/tb-gateway 国内不行了,所以需要其它工具来下载 2、在win下用powershell管理员下运行 docker search thingsboard/tb-gateway 可以访问到了 docker pull thingsboard/tb-gateway就可以下载了 3、docker Desktop就可以看到…...

从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)

前言 在此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的1.1节开头有提到 机器人收集训练数据一般有多种方式,比如来自人类视频的视觉演示 有的工作致力于从视频数据——例如YouTube视频中进行策略学习 即最常见…...

项目集群部署定时任务重复执行......怎么解决???

项目集群部署在不同服务器,导致定时任务重复执行 1、可以在部署时只让一个服务器上有定时任务模块,不过这样如果这台服务器宕机,就会导致整个定时任务崩溃 2、使用分布式锁,使用redis setNX命令加lua脚本在定时任务执行的时候只…...

使用JUC包的AtomicXxxFieldUpdater实现更新的原子性

写在前面 本文一起来看下使用JUC包的AtomicXxxxFieldUpdater实现更新的原子性。代码位置如下: 当前有针对int,long,ref三种类型的支持。如果你需要其他类型的支持的话,也可以照葫芦画瓢。 1:例子 1.1:普…...

vue3组件通信--props

目录 1.父传子2.子传父 最近在做项目的过程中发现&#xff0c;props父子通信忘的差不多了。下面写个笔记复习一下。 1.父传子 父组件&#xff08;FatherComponent.vue&#xff09;&#xff1a; <script setup> import ChildComponent from "/components/ChildComp…...

leetcode-75-颜色分类

题解&#xff08;方案二&#xff09;&#xff1a; 1、初始化变量n0&#xff0c;代表数组nums中0的个数&#xff1b; 2、初始化变量n1&#xff0c;代表数组nums中0和1的个数&#xff1b; 3、遍历数组nums&#xff0c;首先将每个元素赋值为2&#xff0c;然后对该元素进行判断统…...

【嵌入式原理设计】实验三:带报警功能的数字电压表设计

目录 一、实验目的 二、实验环境 三、实验内容 四、实验记录及处理 五、实验小结 六、成果文件提取链接 一、实验目的 熟悉和掌握A/D转换及4位数码管、摇杆、蜂鸣器的联合工作方式 二、实验环境 Win10ESP32实验开发板 三、实验内容 1、用摇杆传感器改变接口电压&…...

C#中的接口的使用

定义接口 public interface IMyInterface {int MyProperty { get; set; }void MyMethod(); } 实现类 internal class MyClass : IMyInterface {public int MyProperty { get; set; }public void MyMethod(){Console.WriteLine("MyMethod is called");} } 目录结构…...

记一次真实项目的性能问题诊断、优化(阿里云redis分片带宽限制问题)过程

前段时间&#xff0c;接到某项目的压测需求。项目所有服务及中间件&#xff08;redis、kafka&#xff09;、pg库全部使用的阿里云。 压测工具&#xff1a;jmeter(分布式部署)&#xff0c;3组负载机&#xff08;每组1台主控、10台linux 负载机&#xff09; 问题现象&#xff1…...

LeetCode - 4. 寻找两个正序数组的中位数

. - 力扣&#xff08;LeetCode&#xff09; 题目 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 …...

算法设计与分析——动态规划

1.动态规划基础 1.1动态规划的基本思想 动态规划建立在最优原则的基础上&#xff0c;在每一步决策上列出可能的局部解&#xff0c;按某些条件舍弃不能得到最优解的局部解&#xff0c;通过逐层筛选减少计算量。每一步都经过筛选&#xff0c;以每一步的最优性来保证全局的最优性…...

【实战篇】GEO是什么?还可以定义新的数据类型吗?

背景 之前&#xff0c;我们学习了 Redis 的 5 大基本数据类型&#xff1a;String、List、Hash、Set 和 Sorted Set&#xff0c;它们可以满足大多数的数据存储需求&#xff0c;但是在面对海量数据统计时&#xff0c;它们的内存开销很大&#xff0c;而且对于一些特殊的场景&…...

SpringBoot最佳实践之 - 项目中统一记录正常和异常日志

1. 前言 此篇博客是本人在实际项目开发工作中的一些总结和感悟。是在特定需求背景下&#xff0c;针对项目中统一记录日志(包括正常和错误日志)需求的实现方式之一&#xff0c;并不是普适的记录日志的解决方案。所以阅读本篇博客的朋友&#xff0c;可以参考此篇博客中记录日志的…...

【Flutter】状态管理:高级状态管理 (Riverpod, BLoC)

当项目变得更加复杂时&#xff0c;简单的状态管理方式&#xff08;如 setState() 或 Provider&#xff09;可能不足以有效地处理应用中状态的变化和业务逻辑的管理。在这种情况下&#xff0c;高级状态管理框架&#xff0c;如 Riverpod 和 BLoC&#xff0c;可以提供更强大的工具…...

OAK相机的RGB-D彩色相机去畸变做对齐

▌低畸变标准镜头的OAK相机RGB-D对齐的方法 OAK相机内置的RGB-D管道会自动将深度图和RGB图对齐。其思想是将深度图像中的每个像素与彩色图像中对应的相应像素对齐。产生的RGB-D图像可以用于OAK内置的图像识别模型将识别到的2D物体自动映射到三维空间中去&#xff0c;或者产生的…...

smartctl硬盘检查工具

一、smartctl工具简介   Smartmontools是一种硬盘检测工具&#xff0c;通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology)&#xff0c;自动检测分析及报告技术)技术来实现的&#xff0c;SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘…...

清空MySQL数据表

要清空 MySQL 数据表&#xff0c;您可以使用 TRUNCATE 或 DELETE 命令 使用 TRUNCATE 命令 TRUNCATE 命令用于删除表中的所有数据&#xff0c;并重置自增 ID&#xff08;如果存在&#xff09;&#xff1a; TRUNCATE TABLE table_name;将 table_name 替换为您要清空的表的名称…...

2024年妈杯MathorCup大数据竞赛A题超详细解题思路

2024年妈杯大数据竞赛初赛整体难度约为0.6个国赛。A题为台风中心路径相关问题&#xff0c;为评价预测问题&#xff1b;B题为库存和销量的预测优化问题。B题难度稍大于A题&#xff0c;可以根据自己队伍情况进行选择。26日早六点之前发布AB两题相关解题代码论文。 下面为大家带来…...

广州网站建设 易点/济南做seo排名

题型&#xff1a;双指针 思路&#xff0c;两个指针间隔k&#xff0c;当后一个指针到达末尾时&#xff0c;前一个指针所指即为正确答案。 题目 输入一个链表&#xff0c;输出该链表中倒数第 k 个结点。 注意&#xff1a; k > 1; 如果 k大于链表长度&#xff0c;则返回 …...

乡镇政府可以做网站认/刷排名seo

一、条件断点循环中经常用到这个技巧&#xff0c;比如&#xff1a;遍历1个大List的过程中&#xff0c;想让断点停在某个特定值。参考上图&#xff0c;在断点的位置&#xff0c;右击断点旁边的小红点&#xff0c;会出来一个界面&#xff0c;在Condition这里填入断点条件即可&…...

工邦邦官网/杭州seo俱乐部

IE的脚本错误对话框非常不友好,无法copy详细信息 (至少IE7是这样)。发现Firefox的Tools > Error Console 中也可以看到错误信息而且可以Copy! 调试程序时&#xff0c;在VS中将默认浏览器设置为Firefox就可以调试并可以Copy脚本错误信息了...

上海企业网站制作费用/广西壮族自治区在线seo关键词排名优化

Server at 0.0.0.0:27017 reports maximum wire version 5, but this version of the Node.js Driver requires at least 6 (MongoDB 3.6) 尝试使用更早版本的 mongodb-compass...

网站安装教程/郑州发布最新通告

目录 0 分区表 1 分区表基本操作 2 二级分区 3 动态分区调整 0 分区表 分区表实际上就是对应一个HDFS文件系统上的独立的文件夹&#xff0c;该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录&#xff0c;把一个大的数据集根据业务需要分割成小的数据集。在查询…...

2015年做那些网站能致富/电商网站平台搭建

课程介绍 IDEA是一款功能强悍、非常好用的Java开发工具&#xff0c;近几年编程开发人员对IDEA情有独钟。虽然IDEA功能很强大&#xff0c;但目前市面讲解的不细致、不系统&#xff0c;导致很多IDEA初学者要么无从下手&#xff0c;要么耗费太多时间。本套课程分知识点进行录制讲解…...