基于MATLAB的刀具角度测量(matlab工件测量)
moboyou 2025-04-30 11:23 22 浏览
导读 采用MATLAB图像处理技术,通过图像二值化、中值滤波、边缘检测等方法获得刀具轮廓,并应用曲线拟合方法对轮廓边界进行拟合,通过分析拟合直线刃的斜率,计算得出刀具角度值。实验结果表明,利用MATLAB检测刀具角度,不仅测量误差小,检测效率高,而且适应性广泛,可实现对高精度和微小刀具几何参数的测量。
在机械加工中,刀具角度对切削力、切削热和刀具耐用度都有着很大的影响,合理选择刀具角度有利于改善加工条件,提高被加工工件质量,延长刀具与设备的使用寿命。因此,刀具角度的测量就显得尤为重要。传统的接触式测量方法具有主观误差大、测量参数少、费时等缺点。为适应现代化数控机床及高速、高精度加工的要求,基于图像处理的刀具角度测量就应运而生了。
本文主要以MATLAB作为处理平台,首先利用图像处理技术对刀具图像进行处理,获取刀具边缘轮廓,然后通过曲线拟合方法对轮廓进行拟合,获得测量刀具角度的关键参数,最终求出刀具角度。此方法具有非接触式在线测量、高速度、刀具几何信息丰富等诸多优点。
1刀具角度测量原理
利用MATLAB对刀具角度进行测量,首先由CCD获取刀具图像,然后对图像进行灰度化处理,再将灰度图像二值化、中值滤波后提取刀具轮廓,最后采用曲线拟合方法计算出刀具角度。测量原理如图1所示。
2图像处理
2.1 图像采集
本实验用CCD摄像机采集刀具图像,采集图像时要注意摄像头与刀具前刀面保持平行。采集的图像已经是灰度图,故图像灰度化过程可以省略。如图2所示,该刀具是焊接式车刀,刀尖处为圆弧刃结构,刀刃经过倒棱处理,本文的主要任务是通过图像处理获取该车刀的刀尖角。
2.2 图像二值化
图像二值化是指用灰度变换来研究灰度图像的一种常用方法。即设定某一阈值,将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分,将这两部分像素群上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。
图像的二值化中,阈值的选择是关键。阈值是把目标和背景区分开的标尺,选取适当的阈值就是既要尽可能保存图像信息,又要尽可能减少背景和噪声的干扰。阈值的选择方法有多种,本文采用全局阈值法,通过分析灰度直方图,选择第1个谷值为阈值,如图3所示。图4为二值化后的刀具图。
2.3 中值滤波
中值滤波是一种典型的低通滤波器,属于非线性滤波,它的目的是保护图像边缘的同时去除噪声。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。
在二维中值滤波中,窗口的尺寸有3×3、5×5、7×7等多种。实际使用窗口时,一般先选用小的窗口,不合适时再逐渐增大,直到其滤波效果满意为止。图5为3×3中值滤波后的图像。
2.4 边缘检测
图像的边缘是图像最基本的特征之一,广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,因此它是图像分割依赖的重要特征。从本质上说,图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反映,标志着一个区域的终结和另一个区域的开始。很显然,要测量刀具的角度,关键是通过边缘检测提取刀具的轮廓线。
为了得到较好的边缘效果,现在已经有了很多种边缘检测算法,如Roberts算子、Sobel算子、Prewitt算子、LoG算子、Canny算子等。本文采用Canny边缘检测算子(图6),该方法不容易受噪声的干扰,边缘定位精确性较高,能够检测到真正的弱边缘。
2.5 特征提取
刀具的刀尖角由两条直线切削刃构成,以边缘检测图像为基础进行特征提取,可先对图像进行裁剪,获取两条直线刃。图像裁剪过程中,因为直线的斜率不会改变,故两条直线组成的夹角也不会变化,因此可通过分析两直线的斜率,得到刀尖角。直线刃的提取如图7所示。
2.6 直线拟合并计算斜率
从刀具边缘检测图像中可以看出,刀具边缘直线轮廓粗糙不规则,会给计算结果带来一定误差。为了保证测量的精度,可利用MATLAB拟合工具箱对图7中截取的两条直线刃进行线性拟合。选择拟合函数类型为f(x)=p1x+p2,由此可获得两条规则的直线,拟合结果如图8。
图8所示的拟合对话框中已直接显示出拟合直线的斜率p1。通过拟合,得到两条直线刃的斜率分别为0.083 35和9.258。
2.7 结果与分析
获取两条直线刃的斜率后,利用MATLAB中的“subspace”函数,通过程序计算得到两直线的夹角为79.07°。
通过仪器测得该车刀的刀尖角为79.1°,相对误差为0.04%。该误差主要来自于刀具图像的采集角度,刀具前刀面必须与摄像头保持平行;其次还受到光照的影响,刀具表面光照分布不均会给轮廓提取带来一定的误差。
3结语
本文提出了一种基于MATLAB的车刀角度测量方法。首先通过图像处理获取刀具轮廓,并应用曲线拟合方法对轮廓边界进行拟合,通过分析拟合直线刃的斜率,计算得出刀具角度值。实验证明,采用该方法测量刀具角度是可行的,不仅测量误差小,检测效率高,而且也适应其他刀具的角度测量,尤其适合高精度和微小刀具几何参数的检测。
作者:肖露等
相关推荐
- 黄道十二宫杀手密码51年后被破解,来自两位程序员和数学家合作
-
杨净边策发自凹非寺量子位报道|公众号QbitAI黄道十二宫杀手(ZodiacKiller)可能是世界上最知名的高智商连环杀手,52年来从未被抓获。他的事迹已被改编成了多部好莱坞电影。△...
- 深入剖析MediaCodec解码器的基本原理及使用「建议新手收藏」
-
一,MediaCodec工作原理MediaCodec类Android提供的用于访问低层多媒体编/解码器接口,它是Android低层多媒体架构的一部分,通常与MediaExtractor、MediaMu...
- Retrofit WebService 实践
-
前言作为Android开发,平时和后端聊得最多的除了喝酒就是接口。常用语:Restful和WebService,前者现在聊得多,后者以前聊得多。默认含义分别为:Restful:HTTP协议...
- 建议收藏!175部4K UHD版本经典高分电影洗版参考目录(2015之前)
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:1L789近两年很多经典高分老电影陆续开始重制成4KUHD版本,虽然我早已将这些电影的BD蓝光版收入,但纠结一番后还是花了不少时间将其全部...
- 2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?
-
这篇文章主要是从项目来讲的,所以,从以下几个方面展开。怎么介绍项目?怎么介绍项目难点与亮点?你负责的模块?怎么让面试官满意?怎么介绍项目?我在刚刚开始面试的时候,也遇到了这个问题,也是我第一个思考的问...
- 详解Android官推Kotlin-First的图片加载库
-
前言Coil是一个非常年轻的图片加载库,在2020年10月22日才发布了1.0.0版本,但却受到了Android官方的推广,在AndroidDevelopersBackst...
- webview 渲染机制:硬件加速方式渲染的Android Web
-
webview渲染是什么?webview渲染是用于展现web页面的控件;webview可以内嵌在移动端,实现前端的混合式开发,大多数混合式开发框架都是基于webview模式进行二次开发的w...
- 因为我对Handler的了解,居然直接给我加了5K
-
1Handler是什么?android提供的线程切换工具类。主要的作用是通过handler实现从子线程切换回主线程进行ui刷新操作。1.1为什么Handler能实现线程切换?在创建Handler的...
- 「经典总结」一个View,从无到有会走的三个流程,你知道吗?
-
前言一个View,从无到有会走三个流程,也就是老生常谈的measure,layout,draw三流程我们都知道Android视图是由一层一层构成的层级结构,直白点说,就是父View包含子View而子V...
- 这些垃圾代码是谁写的?哦,原来小丑竟是我自己
-
程序员是最喜欢自嘲、自黑的群体之一,比如他们常常称自己是“码农”、“程序猿”,再比如他们的工作明明是写代码、修Bug,也有人调侃说:“明明我们是修代码、写Bug!”本文整理了一些程序员“修代码、写...
- 手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇
-
/1前言/平时我们要下载图片,要要一个一个点击下载是不是觉得很麻烦?那有没有更加简便的方法呢?答案是肯定的,这里我们以天堂网为例,批量下载天堂网的图片。/2项目准备工作/首先我们第一步我们要安装...
- 音视频开发需要你懂得 ffmpeg 开源库的编码原理
-
引言音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,startcode以及基本的工作原理,...
- 「8年老 Android 开发」最全最新 Android 面试题系列全家桶(带答案)
-
下面跟大家分享的这些面试题都是互联网大厂真实流出的面试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题我也是经过日积月累才整理出来的精品资料。这些面试题主要是...
- 手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇
-
/1前言/上篇文章手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇我们谈及了天堂网站图片抓取的理论,这篇文章将针对上篇文章的未尽事宜进行完善,完成图片的批量抓取。/2图片网址解...
- PHP 8.1.9 更新发布
-
CLI:修复了内置服务器通过PHP_CLI_server_WORKERS环境变量的潜在溢出。修正了GH-8952(不再可能有意关闭std句柄)。Core:修复了GH-8923的错误(Windows上的...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle 数据导出导入 (16)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- c语言编程小知识大全 (17)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)