表面粗糙度分析
表面粗糙度分析一、技术背景表面粗糙度是衡量材料表面微观几何形状误差的重要指标在SEM图像分析中用于评估样品表面质量。传统粗糙度测量需要触针式仪器而基于图像的方法通过分析灰度变化来近似计算粗糙度参数。在SEM项目中calcuateRA方法实现了基于灰度图像的粗糙度近似计算包括Ra算术平均粗糙度灰度偏差的算术平均值Rq均方根粗糙度灰度偏差的均方根值纹理复杂度评分综合GLCM特征和频域特征二、数学原理2.1 算术平均粗糙度Ra在机械测量中Ra定义为测量长度内轮廓偏差绝对值的算术平均Ra1n∑i1n∣yi−yˉ∣R_a \frac{1}{n}\sum_{i1}^{n}|y_i - \bar{y}|Ra​n1​i1∑n​∣yi​−yˉ​∣在图像中用灰度值代替高度值Raimg1M×N∑i1M∑j1N∣g(i,j)−gˉ∣R_a^{img} \frac{1}{M \times N}\sum_{i1}^{M}\sum_{j1}^{N}|g(i,j) - \bar{g}|Raimg​M×N1​i1∑M​j1∑N​∣g(i,j)−gˉ​∣其中g(i,j)g(i,j)g(i,j)为像素灰度值gˉ\bar{g}gˉ​为平均灰度。2.2 均方根粗糙度RqRq定义为轮廓偏差的均方根值Rq1n∑i1n(yi−yˉ)2R_q \sqrt{\frac{1}{n}\sum_{i1}^{n}(y_i - \bar{y})^2}Rq​n1​i1∑n​(yi​−yˉ​)2​图像近似Rqimg1M×N∑i1M∑j1N(g(i,j)−gˉ)2R_q^{img} \sqrt{\frac{1}{M \times N}\sum_{i1}^{M}\sum_{j1}^{N}(g(i,j) - \bar{g})^2}Rqimg​M×N1​i1∑M​j1∑N​(g(i,j)−gˉ​)2​2.3 归一化处理将粗糙度值归一化到[0, 100]范围Normalizedvalue−minmax−min×100Normalized \frac{value - min}{max - min} \times 100Normalizedmax−minvalue−min​×1002.4 纹理复杂度综合GLCM对比度和熵TextureScoreContrastEntropy2TextureScore \frac{Contrast Entropy}{2}TextureScore2ContrastEntropy​三、代码实现3.1 粗糙度计算主函数// 文件路径: e:\SEM\Utils\imageUtils.cs// 计算RA值(粗糙度)publicstaticRAInfocalcuateRA(Matsrc_img){// 预处理灰度化、直方图均衡、高斯模糊MatprocessedPreProcessimage(src_img);// 特征提取varstatsCalculateGrayStatistics(processed);// Ra, RqvartextureCalculateTextureFeatures(processed);// GLCM特征varfreqCalculateFrequencyFeatures(processed);// 频域特征// 综合评估returnnewRAInfo(){NormallizeRaNormalize(stats.Ra,0,255)*100,NormallizeRqNormalize(stats.Rq,0,255)*100,TextureScore(texture.Contrasttexture.Entropy)/2};}3.2 预处理函数// 文件路径: e:\SEM\Utils\imageUtils.cs// 粗糙度预处理publicstaticMatPreProcessimage(Matsrc_img){MatoutputnewMat();// 灰度化Cv2.CvtColor(src_img,output,ColorConversionCodes.BGR2GRAY);// 直方图均衡化增强对比度Cv2.EqualizeHist(output,output);// 高斯模糊降噪Cv2.GaussianBlur(output,output,newOpenCvSharp.Size(3,3),0);returnoutput;}3.3 灰度统计特征计算// 文件路径: e:\SEM\Utils\imageUtils.cs// 灰度特征统计privatestaticGrayStatsCalculateGrayStatistics(Matgray){// 计算灰度均值和标准差ScalarmeanVal,stdDevVal;Cv2.MeanStdDev(gray,outmeanVal,outstdDevVal);// 手动计算Ra每个像素与均值偏差的累加doubletotalDeviation0;doubletotalDeviationSquare0;varindexergray.GetGenericIndexerbyte();for(inty0;ygray.Rows;y){for(intx0;xgray.Cols;x){doubledeviationMath.Abs(indexer[y,x]-meanVal.Val0);totalDeviationdeviation;totalDeviationSquaredeviation*deviation;}}doublepixelCountgray.Rows*gray.Cols;returnnewGrayStats{RatotalDeviation/pixelCount,// 算术平均粗糙度RqstdDevVal.Val0// 均方根粗糙度标准差};}3.4 归一化函数// 文件路径: e:\SEM\Utils\imageUtils.cs// 工具方法归一化到[0,1]privatestaticdoubleNormalize(doublevalue,doublemin,doublemax){return(value-min)/(max-min);}3.5 RAInfo结构体// 文件路径: e:\SEM\Utils\imageUtils.cs// 粗糙度结构体publicstructRAInfo{publicdoubleNormallizeRa;// 相对算术粗糙度 (0-100)值越大表面越粗糙publicdoubleNormallizeRq;// 相对均方根粗糙度 (0-100)值越大表面越不均匀publicdoubleTextureScore;// 纹理复杂度0-10.7高粗糙0.3低粗糙}四、参数调优4.1 粗糙度等级判定NormallizeRa表面状态纹理复杂度0-20光滑 0.320-40轻微粗糙0.3-0.540-60中等粗糙0.5-0.760-80较粗糙0.7-0.8580-100高度粗糙 0.854.2 预处理参数选择// 高斯模糊核大小选择Cv2.GaussianBlur(output,output,newOpenCvSharp.Size(3,3),0);// 标准降噪Cv2.GaussianBlur(output,output,newOpenCvSharp.Size(5,5),0);// 更强降噪// 直方图均衡化 vs CLAHECv2.EqualizeHist(output,output);// 全局均衡CLAHEclaheCv2.CreateCLAHE(2.0,newSize(8,8));// 局部自适应clahe.Apply(output,output);4.3 ROI区域选择// 建议在均匀区域计算粗糙度RectroinewRect(x,y,width,height);MatroiImagenewMat(src_img,roi);RAInforaInfocalcuateRA(roiImage);五、常见问题5.1 光照不均匀影响问题描述SEM图像亮度分布不均导致粗糙度计算偏差。解决方案使用CLAHE替代全局直方图均衡化CLAHEclaheCv2.CreateCLAHE();clahe.ClipLimit2.0;clahe.TilesGridSizenewOpenCvSharp.Size(8,8);clahe.Apply(gray,output);分区域计算并取平均// 将图像分成多个区域分别计算varsubRegionsDivideIntoRegions(src_img,4,4);varraValuessubRegions.Select(rcalcuateRA(r));doubleavgRaraValues.Average(rr.NormallizeRa);5.2 边缘效应对粗糙度影响问题描述图像边缘的陡峭变化被计入粗糙度。解决方案使用形态学边缘检测并排除边缘区域应用掩码计算内部区域粗糙度5.3 灰度范围差异问题描述不同图像灰度范围差异大影响粗糙度可比性。解决方案// 标准化灰度范围MatnormalizednewMat();Cv2.Normalize(gray,normalized,0,255,NormTypes.MinMax);5.4 噪声干扰问题描述SEM图像噪声影响粗糙度计算精度。解决方案// 增强预处理降噪Cv2.GaussianBlur(output,output,newOpenCvSharp.Size(5,5),0);// 或使用双边滤波保持边缘Cv2.BilateralFilter(output,output,9,75,75);5.5 与实际测量值对应问题描述图像粗糙度与触针测量值不完全对应。解决方案建立标定曲线将图像Ra映射到实际Ra考虑图像放大倍数进行尺度校正结合多个特征进行综合评估

相关新闻

通过ArcGIS对GlobeLand30影像镶嵌拼接并去除黑边

通过ArcGIS对GlobeLand30影像镶嵌拼接并去除黑边

通过ArcGIS对GlobeLand30影像镶嵌拼接并去除黑边 首先介绍一下GlobeLand30影像数据分幅命名规则: 南北纬缩写(1位)+6度带号(2位)+“”+起始纬度(2位)+“”+产品年代(4位)+LC(地表覆盖缩写)+分辨率(3位)。* 北纬缩写为“N”,南纬缩写为“S”。 6度代号:图幅所在…

2026/10/25 1:58:13 阅读更多 →
如何高效使用G-Helper:华硕笔记本轻量级控制工具的5个实用技巧

如何高效使用G-Helper:华硕笔记本轻量级控制工具的5个实用技巧

如何高效使用G-Helper:华硕笔记本轻量级控制工具的5个实用技巧 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…

2026/10/21 11:12:14 阅读更多 →
【Android-Room数据库系列】—— Room 基础

【Android-Room数据库系列】—— Room 基础

Room 数据库基础Room 简介使用Room保存本地数据到数据库中Entity 实体DaoDatabase简单案例Room 简介 Room 持久库提供了一个 SQLite 抽象层,让你访问数据库更加稳健,提升数据库性能。 该库帮助您在运行应用程序的设备上创建应用程序的数据缓存。这个缓…

2026/10/25 4:20:22 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →