核酸管外观缺陷检测(一)

news2025/1/18 17:16:08

1.1 应用示例思路

(1) 对核酸管图像进行灰度化、阈值分割和连通域分析;

(2) 筛选出待检测的区域,并对该区域进行变换校正;

(3) 进一步获取待检测的ROI区域,并根据几何特征和阈值条件,来对核酸管外观进行检测;

(4) 将检测结果写入txt文档。

1.2 应用示例代码

*统计核酸管外观正常的数组
P_Tuple:=[]
*统计核酸管外观缺陷的数组
N_Tuple:=[]
*判断文件是否存在
file_path:= './核酸管外观缺陷检测统计1.txt'
file_exists (file_path, file_exist)
if (file_exist==1)
    delete_file (file_path)
endif
open_file (file_path, 'output', FileHandle)
*获取文件路径列表
list_files ('./Test_img/', ['files','follow_links'], ImageFiles)
*文件筛选
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)

for Index := 0 to |ImageFiles| - 1 by 1
    img_path:=ImageFiles[Index]
    *img_path:='./Test_img/Image_20230420091226458.bmp'
    *文件名拆分
    parse_filename (img_path, BaseName, Extension, Directory)
    *读取核酸管图片
    read_image (Image, img_path)
    *灰度化
    rgb1_to_gray (Image, GrayImage)
    *阈值分割
    threshold (GrayImage, Region, 30, 145)
    *填充孔洞
    fill_up (Region, RegionFillUp)
    *连通区域分析
    connection (RegionFillUp, ConnectedRegions)
    *获取面积
    area_center (ConnectedRegions, Area, Row, Column)
    *通过面积筛选区域
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500000, 800000)
    *获取区域外接矩形
    smallest_rectangle2 (SelectedRegions, Row1, Column1, Phi, Length1, Length2)
    *创建变换模型
    vector_angle_to_rigid (Row1, Column1, abs(Phi), Row1, Column1, acos(0.0), HomMat2D)
    *进行区域变换
    affine_trans_region (SelectedRegions, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
    *获取区域外接矩形(平行于坐标轴)
    smallest_rectangle1 (RegionAffineTrans, Row11, Column11, Row12, Column12)
    *裁剪区域
    clip_region (RegionAffineTrans, RegionClipped1, Row11, Column12-200, Row12, Column12)
    *获取区域外接矩形(平行于坐标轴)
    smallest_rectangle1 (RegionClipped1, Row21, Column21, Row22, Column22)
    *裁剪区域
    clip_region (RegionClipped1, RegionClipped2, int((Row21+Row22)/2.0)-20, Column12-200, int((Row21+Row22)/2.0)+20, Column12)
    *获取区域外接矩形(平行于坐标轴)
    smallest_rectangle1 (RegionClipped2, Row31, Column31, Row32, Column32) 
    distance:=Column32-Column31
    if(distance>=180)
        dev_clear_window ()
        get_image_size (Image, Width, Height)
        dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
        dev_display (Image)
        *设置颜色
        dev_set_color ('green')
        *显示字符
        set_tposition (WindowHandle, 10, 5)  //设置文本光标1的位置
        write_string (WindowHandle, '核酸管外观正常!')
        set_tposition (WindowHandle, 50, 5)  //设置文本2光标的位置
        write_string (WindowHandle, ['核酸管外观正常的图片名:',BaseName])
        dev_close_window ()
        P_Tuple:=[P_Tuple,1]
        fwrite_string(FileHandle,[Index,'核酸管外观正常的图片名:',BaseName])
        fnew_line(FileHandle)    
    else
        dev_clear_window ()
        get_image_size (Image, Width, Height)
        dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
        dev_display (Image)
        *设置颜色
        dev_set_color ('green')
        *显示字符
        set_tposition (WindowHandle, 10, 5)  //设置文本光标1的位置
        write_string (WindowHandle, '核酸管外观有缺陷!')
        set_tposition (WindowHandle, 50, 5)  //设置文本2光标的位置
        write_string (WindowHandle, ['核酸管外观缺陷的图片名:',BaseName])
        dev_close_window ()
        N_Tuple:=[N_Tuple,0]
        fwrite_string(FileHandle,[Index,'核酸管外观缺陷的图片名:',BaseName])
        fnew_line(FileHandle)    
    endif
endfor

tuple_length (P_Tuple, P_Length)
tuple_length (N_Tuple, N_Length)
Yield_Rate:= real(P_Length)/real(N_Length+P_Length)
fwrite_string(FileHandle,['核酸管良品率:',Yield_Rate])
fnew_line(FileHandle)
close_file (FileHandle)

1.3 结果展示

(1) 单张图片检测结果:

 (2) 部分图片检测结果:

 

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

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

相关文章

openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成

文章目录 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成103.1 操作场景103.2 前提条件103.3 自认证证书生成过程 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成 openGauss默认…

【密评】商用密码应用安全性评估从业人员考核题库(十)

商用密码应用安全性评估从业人员考核题库(十) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 2251 单项选择题 根据 GM/T 0030《服务器密码机技术规范》&#xff0…

系统架构师备考倒计时17天(每日知识点)

一、数据库设计阶段以及相应的产物 需求分析阶段:数据流图、数据字典、需求说明书;概念结构设计阶段:ER模型;逻辑结构设计阶段:关系模式;物理设计阶段:包括存储结构和存取方法的物理结构。 &…

35岁左右的项目经理,这5种能力一定要有​

大家好,我是老原。 经常有项目经理和我吐槽,现在不管是做项目,还是做管理,都太难了。 上有甲方和和老板给压力,下有团队成员叫苦连天,最后里外不是人。 刚毕业20多岁的时候还好,随着年龄的增…

(矩阵) 289. 生命游戏 ——【Leetcode每日一题】

❓ 289. 生命游戏 难度:中等 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一…

【算法设计与分析qwl】伪码——顺序检索,插入排序

伪代码&#xff1a; 例子&#xff1a; 改进的顺序检索 Search(L,x)输入&#xff1a;数组L[1...n]&#xff0c;元素从小到大排序&#xff0c;数x输出&#xff1a;若x在L中&#xff0c;输出x位置下标 j ,否则输出0 j <- 1 while j<n and x>L[j] do j <- j1 if x<…

2022年全网最全最细最流行的自动化测试工具有哪些?

一&#xff1a;前言 随着测试工程师技能和工资待遇的提升&#xff0c;甚至有一部分的开发人员开始转入测试岗位&#xff0c;跨入自动化领域的测试攻城狮越来越多。在自动化测试领域&#xff0c;自动化工具肯定占据了核心的位置。 本文总结了常用的测试自动化工具和框架&#x…

QT_day2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

rust学习——函数返回值

概念 Rust 中的函数定义以 fn 开始&#xff0c;后跟着函数名和一对圆括号。大括号告诉编译器函数体在哪里开始和结束。 特殊的地方——函数返回值 错误的写法 正解1 去掉分号 fn main() {let x plus_one(5);println!("The value of x is: {}", x); }fn plus_…

c++_learning-进阶部分

文章目录 类&#xff1a;抽象类&#xff1a;类、类作用域&#xff1a;类成员访问权限&#xff1a;使用细节&#xff1a;成员函数的修饰符const、mutable&#xff1a;const在类中的使用&#xff1a;mutable&#xff1a; this&#xff1a;返回自身对象的引用构造函数&#xff08;…

思科 Packet Tracer实验(一)

思科 Packet Tracer实验&#xff08;一&#xff09; ​ Cisco Packet Tracer 是由Cisco公司发布的一个辅助学习工具&#xff0c;为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖曳方法建立网络拓扑&#…

金山终端安全系统V9.0 SQL注入漏洞复现

0x01 产品简介 金山终端安全系统是一款为企业提供终端防护的安全产品&#xff0c;针对恶意软件、病毒和外部攻击提供防范措施&#xff0c;帮助维护企业数据和网络。 0x02 漏洞概述 金山终端安全系统V9.0 /inter/update_software_info_v2.php页面存在sql注入漏洞&#xff0c;该…

李彦宏:我们即将进入一个AI原生的时代|百度世界2023

“大模型带来的智能涌现&#xff0c;这是我们开发AI原生应用的基础。” 10月17日&#xff0c;李彦宏在百度世界2023上表示。当天&#xff0c;李彦宏以《手把手教你做AI原生应用》为主题发表演讲&#xff0c;发布文心大模型4.0版本&#xff0c;并带来新搜索、新地图等十余款AI原…

时间序列预测 Graph-WaveNet:Graph WaveNet for Deep Spatial-Temporal Graph Modeling

Graph-WaveNet Graph WaveNet for Deep Spatial-Temporal Graph Modeling1.概述2.提出问题 & 解决策略 & 模型结构3.实验结果 ** Graph WaveNet for Deep Spatial-Temporal Graph Modeling ** 1.概述 时空图建模是分析系统中各组成部分的空间关系和时间趋势的一项重…

从裸机启动开始运行一个C++程序(十)

前序文章请看&#xff1a; 从裸机启动开始运行一个C程序&#xff08;九&#xff09; 从裸机启动开始运行一个C程序&#xff08;八&#xff09; 从裸机启动开始运行一个C程序&#xff08;七&#xff09; 从裸机启动开始运行一个C程序&#xff08;六&#xff09; 从裸机启动开始运…

算法基础学习|二分

二分 模板 整数二分模板 bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid 1, r]时使用&#xff08;即寻找左边界使用&#xff09;&#xff1a; int bsearch_1(int l, int r) {while (l < r){int mid l r >> 1;if (…

最新AI创作系统ChatGPT源码+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

Cocos Creator3.8 项目实战(十)使用 protobuf详细教程

在 Cocos Creator 中使用 protobuf.js 库可以方便地进行协议的序列化和反序列化。 下面是使用 protobuf.js 的详细说明&#xff1a; 一、protobuf环境安装 1、安装 npm protobuf环境安装安装需要使用 npm 命令进行&#xff0c;因此首先需要安装 npm 。 如果你还没安装 npm …

编程小白的自学笔记十六(python办公自动化操作EXCEL表格)

系列文章目录 编程小白的自学笔记十五&#xff08;python办公自动化操作EXCEL表格&#xff09; 编程小白的自学笔记十四&#xff08;python办公自动化创建、复制、移动文件和文件夹 编程小白的自学笔记十三&#xff08;python办公自动化读写文件&#xff09; 编程小白的自学…

网页下拉菜单

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><form action""> <select name"cars"> <option value"vol…