当前位置: 首页 > 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
http://www.lryc.cn/news/469408.html

相关文章:

  • 有望第一次走出慢牛
  • 计算机网络(十二) —— 高级IO
  • 电力行业 | 等保测评(网络安全等级保护)工作全解
  • 总裁主题CeoMax-Pro主题7.6开心版
  • 深入探讨编程的核心概念、学习路径、实际应用以及对未来的影响
  • IDEA如何将一个分支的代码合并到另一个分支(当前分支)
  • Python实现基于WebSocket的stomp协议调试助手工具
  • 基于neo4j的旅游知识图谱维护与问答系统
  • 竞赛学习路线推荐(编程基础)
  • webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建
  • 利用Pix4D和ArcGIS计算植被盖度
  • 用docker Desktop 下载使用thingsboard/tb-gateway
  • 从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
  • 项目集群部署定时任务重复执行......怎么解决???
  • 使用JUC包的AtomicXxxFieldUpdater实现更新的原子性
  • vue3组件通信--props
  • leetcode-75-颜色分类
  • 【嵌入式原理设计】实验三:带报警功能的数字电压表设计
  • C#中的接口的使用
  • 记一次真实项目的性能问题诊断、优化(阿里云redis分片带宽限制问题)过程
  • LeetCode - 4. 寻找两个正序数组的中位数
  • 算法设计与分析——动态规划
  • 【实战篇】GEO是什么?还可以定义新的数据类型吗?
  • SpringBoot最佳实践之 - 项目中统一记录正常和异常日志
  • 【Flutter】状态管理:高级状态管理 (Riverpod, BLoC)
  • OAK相机的RGB-D彩色相机去畸变做对齐
  • smartctl硬盘检查工具
  • 清空MySQL数据表
  • 2024年妈杯MathorCup大数据竞赛A题超详细解题思路
  • Kafka系列之:Kafka集群磁盘条带划分和Kafka集群磁盘扩容详细方案