图像预处理:去除标尺区域
📅 2026/7/16 15:40:00
👁️ 次浏览
图像预处理去除标尺区域一、技术背景在扫描电子显微镜SEM图像处理中图像底部通常包含标尺信息如放大倍数、尺寸标尺等这些信息对于后续的图像分析和测量会造成干扰。因此在进行孔隙度、截面分析等处理之前需要将标尺区域从图像中去除。本文介绍 SEM 项目中imageUtils.preprocess()方法的实现原理该方法通过二值化形态学开运算检测标尺区域、轮廓面积过滤、ROI裁剪等技术实现标尺区域的自动检测与去除。二、数学原理2.1 二值化处理二值化是将灰度图像转换为只有黑白两色的图像其数学定义为g(x,y){255,if f(x,y)≥T0,if f(x,y)T g(x,y) \begin{cases} 255, \text{if } f(x,y) \geq T \\ 0, \text{if } f(x,y) T \end{cases}g(x,y){255,0,iff(x,y)≥Tiff(x,y)T其中TTT为阈值f(x,y)f(x,y)f(x,y)为输入灰度值g(x,y)g(x,y)g(x,y)为输出值。2.2 形态学开运算开运算定义为先腐蚀后膨胀的组合操作A∘B(A⊖B)⊕B A \circ B (A \ominus B) \oplus BA∘B(A⊖B)⊕B其中⊖\ominus⊖为腐蚀运算⊕\oplus⊕为膨胀运算BBB为结构元素。开运算的作用是消除细小的明亮区域噪声平滑物体边界保持物体整体形状和面积2.3 轮廓检测与面积过滤轮廓检测基于边界追踪算法通过检测二值图像中物体的边界点序列来表示轮廓。面积过滤通过计算轮廓围成区域的面积筛选出符合目标特征的轮廓Area∫∫RdA Area \int \int_{R} dAArea∫∫RdA三、代码实现以下代码来自e:\SEM\Utils\imageUtils.cs//图片预处理 用于获取非标尺区域图像publicstaticvoidpreprocess(refMatsrc_img){Matgray_imgnewMat();Cv2.CvtColor(src_img,gray_img,ColorConversionCodes.BGR2GRAY);Matbinary_imgnewMat();Cv2.Threshold(gray_img,binary_img,240,255,ThresholdTypes.Binary);MatkernelCv2.GetStructuringElement(MorphShapes.Rect,newOpenCvSharp.Size(5,7));Matkernel2Cv2.GetStructuringElement(MorphShapes.Rect,newOpenCvSharp.Size(20,1));Matkernel1Cv2.GetStructuringElement(MorphShapes.Cross,newOpenCvSharp.Size(3,3));intiterations3;Cv2.MorphologyEx(binary_img,binary_img,MorphTypes.Open,kernel2,newOpenCvSharp.Point(-1,-1),iterations);Cv2.MorphologyEx(binary_img,binary_img,MorphTypes.Open,kernel1,newOpenCvSharp.Point(-1,-1),1);Point[][]contours;HierarchyIndex[]hierarchy;Cv2.FindContours(binary_img,outcontours,outhierarchy,RetrievalModes.External,ContourApproximationModes.ApproxSimple);ListRectboundRectsnewListRect();foreach(varcontourincontours){if(Cv2.ContourArea(contour)10000||Cv2.ContourArea(contour)100000){continue;}boundRects.Add(Cv2.BoundingRect(contour));scale_imgsrc_img.Clone();Cv2.Rectangle(scale_img,boundRects.Last(),Scalar.Black,-1);intcropHeightMath.Max(0,scale_img.Rows-boundRects.Last().Height);// 创建目标区域矩形RectroinewRect(0,0,scale_img.Cols,cropHeight);src_imgnewMat(scale_img,roi).Clone();}return;}处理流程详解灰度转换将BGR图像转为灰度图像二值化使用阈值240将灰度图像二值化标尺区域白色高亮被分离形态学开运算使用20x1的矩形核进行水平方向的形态学开运算迭代3次连接水平标尺线使用3x3的十字核进一步去除小噪声轮廓检测查找二值图像中的外部轮廓面积过滤只保留面积在 10000-100000 像素之间的轮廓标尺区域的典型面积范围ROI裁剪根据检测到的标尺区域边界框裁剪掉标尺区域四、参数调优4.1 关键参数参数默认值说明二值化阈值240标尺通常为白色高亮阈值较高kernel2 尺寸(20, 1)水平方向的结构元连接水平标尺线开运算迭代次数3增强去除小噪声的效果面积下限10000过滤小噪声区域面积上限100000过滤整张图像的大区域4.2 调优建议二值化阈值调整如果标尺区域不够明显可适当降低阈值如235-240结构元尺寸调整根据标尺的实际形态调整kernel2的尺寸面积范围调整根据图像分辨率和标尺实际大小调整面积过滤范围五、常见问题Q1标尺区域未被正确检测怎么办原因二值化阈值过高或标尺亮度不够。解决方案降低二值化阈值检查图像对比度必要时先进行CLAHE对比度增强Q2检测到的区域过大或过小原因面积过滤范围设置不当。解决方案根据实际图像尺寸计算标尺区域的合理面积范围可以通过调试输出检测到的轮廓面积来调整范围Q3图像主体内容被误删原因面积过滤范围与主体区域重叠。解决方案缩小面积上限值考虑使用位置约束只检测图像底部的区域Q4形态学开运算效果不明显原因结构元尺寸不匹配或迭代次数不够。解决方案根据标尺的形态特征调整结构元尺寸适当增加迭代次数
SeedCracker高级配置:如何优化破解性能与准确性 【免费下载链接】SeedCracker Fast, Automatic In-Game Seed Cracker for Minecraft. 项目地址: https://gitcode.com/gh_mirrors/se/SeedCracker
SeedCracker是一款快速、自动化的Minecraft游戏种子破解工具&…
📅 2026/7/16 15:40:00
全面系统稳定性测试:stress-ng 高级压力测试实战指南 【免费下载链接】stress-ng This is the stress-ng upstream project git repository. stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various physi…
📅 2026/7/16 15:38:59
Figma-Context-MCP:让AI编码助手拥有设计感知能力的终极指南 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP
你是否…
📅 2026/7/16 15:38:59
这类新模型发布后,最值得先确认的不是功能列表,而是能不能在普通开发环境里稳定接入、API调用是否顺畅、本地部署的资源门槛到底多高。DeepSeek V4作为最新版本,重点强化了Agent能力和推理性能,现在可以通过网页、App和API三种方式…
📅 2026/7/16 16:34:44
asc_set_gm2l1_loop2_stride 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: htt…
📅 2026/7/16 16:34:44
Ddisasm辅助数据(AuxData)深度解析:提升反汇编准确性的关键元数据 【免费下载链接】ddisasm A fast and accurate disassembler 项目地址: https://gitcode.com/gh_mirrors/dd/ddisasm
你是否曾经好奇现代反汇编工具如何能够如此准确地解析复杂的二进制文件&…
📅 2026/7/16 16:34:44
1. 链表排序的独特挑战与算法选型逻辑 链表作为一种非连续存储的线性数据结构,其排序操作面临着一系列独特挑战。与数组不同,链表无法通过下标直接访问任意元素,这使得许多高效的排序算法在链表上实现时需要特殊处理。在实际工程中࿰…
📅 2026/7/16 16:34:44
音乐解锁神器:一键破解平台枷锁,让已购音乐真正属于你 【免费下载链接】unlock-music 音乐解锁:移除已购音乐的加密保护。 目前支持网易云音乐(ncm)、QQ音乐(qmc, mflac, tkm, ogg) 。此版本为预构建版本。 项目地址: https://gitcode.com/…
📅 2026/7/16 16:34:44
如何快速掌握OpenFPGA:免费开源的FPGA设计终极解决方案 【免费下载链接】OpenFPGA An Open-source FPGA IP Generator 项目地址: https://gitcode.com/gh_mirrors/op/OpenFPGA
你是不是一直觉得FPGA设计门槛太高?需要昂贵的商业工具、复杂的流程和…
📅 2026/7/16 16:33:44
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/16 14:13:12
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03