【机器视觉】基于MATLAB+Hough变换对工件尺寸检测

  • 前言
  • 正文
  • 程序
  • 参考文献

前言

声明:图片来自参考论文

大家好!这是我第一次写博客。本篇是根据数字图像处理的一次作业写的。有问题的地方欢迎指出。

正文

任务目标:检测图像中两个圆孔的圆心距和各自的半径。
方案:用MATLAB复现《基于机器视觉的二维尺寸检测》作者:谢俊,吴荥荥,朱广韬,王路路,来自杂志《工具技术》。
首先利用论文给出的10mm的标尺的图像确定实际尺寸和像素间的变换关系。


现将图像二值化图像再进行细化。

f = rgb2gray(f);%转灰度
f = im2bw(f);%二值化
figure;imshow(f);
f1 = bwmorph(f,'close',Inf);%由于有部分杂点先进行闭运算
f1 = bwmorph(f1,'thin',Inf);
两端的坐标分别为(242,145)和(255,202),算的直线像素为58.46,换算系数为0.1710mm/像素。
[y1 x1]= find(f1 ==1);
d = sqrt((x1(1) - x1(end) )^2 + (y1(1) - y1(end) )^2 );%求解直线两端坐标像素距离
k = 10/d;%像素与实际尺寸换算系数
工件原图像:


对图像二值化再取反细化:

g = rgb2gray(g);%转灰度
g = im2bw(g);%二值化
figure;imshow(g);
g1 = bwmorph(~g,'close',Inf);
g1 = bwmorph(g1,'remove',Inf);


利用Hough变换进行圆的检测并计算两圆的直径、圆心距和误差

[centers1, radii1, metric1] = imfindcircles(g1,[5 20]);%利用Hough变换检测小圆
[centers2, radii2, metric2] = imfindcircles(g1,[60 100]);%利用Hough变换检测大圆
d1 = radii1*k*2;%小圆直径
fprintf('小圆直径,%d\n',d1)
d2 = radii2*k*2;%大圆直径
fprintf('大圆直径,%d\n',d2)
D = sqrt((centers1(1) - centers2(1) )^2 + (centers1(2) - centers2(2) )^2 )*k;%两圆圆心距
fprintf('圆心距,%d\n',D)
error_d1 = abs(d1 - 3.28)/3.28;%小圆直径误差
fprintf('小圆直径误差,%d\n' , error_d1);
error_d2 = abs(d2 - 26.43)/26.43;%大圆直径误差
fprintf('大圆直径误差,%d\n' , error_d2);
error_D = abs(D - 17.50)/17.50;%圆心距误差
fprintf('圆心距误差,%d\n' , error_D);

小圆直径,3.916452mm
大圆直径,2.764583mm
圆心距,1.808321mm
小圆直径误差,0.1940402
大圆直径误差,0.04600180
圆心距误差,0.03332625
由于图片是从论文中复制粘贴过来的本身就带有误差,故个人认为结果还算准确。

程序

全部代码:

clear;clc;close all;
f = imread('10mm卡尺.jpg');
figure;imshow(f);
f = rgb2gray(f);%转灰度
f = im2bw(f);%二值化
figure;imshow(f);
f1 = bwmorph(f,'close',Inf);
f1 = bwmorph(f1,'thin',Inf);
figure;imshow(f1);
[y1 x1]= find(f1 ==1);
d = sqrt((x1(1) - x1(end) )^2 + (y1(1) - y1(end) )^2 );%求解直线两端坐标像素距离
k = 10/d;%像素与实际尺寸换算系数
g = imread('工件.jpg');
figure;imshow(g);
g = rgb2gray(g);%转灰度
g = im2bw(g);%二值化
figure;imshow(g);
g1 = bwmorph(~g,'close',Inf);
figure;imshow(g1);
g1 = bwmorph(g1,'remove',Inf);
figure;imshow(g1);
[centers1, radii1, metric1] = imfindcircles(g1,[5 20]);%利用Hough变换检测小圆
[centers2, radii2, metric2] = imfindcircles(g1,[60 100]);%利用Hough变换检测大圆
d1 = radii1*k*2;%小圆直径
fprintf('小圆直径,%d\n',d1)
d2 = radii2*k*2;%大圆直径
fprintf('大圆直径,%d\n',d2)
D = sqrt((centers1(1) - centers2(1) )^2 + (centers1(2) - centers2(2) )^2 )*k;%两圆圆心距
fprintf('圆心距,%d\n',D)
error_d1 = abs(d1 - 3.28)/3.28;%小圆直径误差
fprintf('小圆直径误差,%d\n' , error_d1);
error_d2 = abs(d2 - 26.43)/26.43;%大圆直径误差
fprintf('大圆直径误差,%d\n' , error_d2);
error_D = abs(D - 17.50)/17.50;%圆心距误差
fprintf('圆心距误差,%d\n' , error_D);

参考文献

[1]: 谢俊,吴荥荥,朱广韬,王路路.基于机器视觉的二维尺寸检测 [J] . 工 具 技 术,2017.01.026

【机器视觉】基于MATLAB+Hough变换对工件尺寸检测相关推荐

  1. 【车道线检测】基于matlab Hough变换图片车道线检测 【含Matlab源码 276期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

  2. 【车道线识别】基于matlab hough变换道路检测直线检测【含Matlab源码 2074期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

  3. 【表盘识别】基于matlab Hough变换钟表表盘识别【含Matlab源码 1069期】

    ⛄一.Hough简介 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体.该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合 ...

  4. 基于边缘检测与Hough变换的车道线检测

    基于边缘检测与Hough变换的车道线检测 第一章:绪论 1.1 研究意义及背景 高速公路的通行里程是一个国家发展水平的重要标志之一.高速公路具有车辆通行能力大.交通事故少.经济效益高的特点,它的不断发 ...

  5. 【车道线检测】Hough变换图片车道线检测 【含Matlab源码 276期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

  6. 【缺陷检测】基于matlab GUI印刷电路板自动缺陷检测【含Matlab源码 1912期】

    ⛄一.印刷电路板自动缺陷检测简介 我国是PCB生产大国,据世界电子电路理事会WECC各协会统计[1],2007年中国大陆PCB产值占全球总产值的27.9%,仅一年时间就比2006年增长了17.0%.但 ...

  7. matlab中提取裂缝图像,基于Matlab图像处理的水泥路面裂缝检测研究

    路面裂缝检测是计算公路状况指数的重要依据[1],传统的检测方法主要是靠人工检测,测量精度差.检测效率低.同时检测人员会有安全隐患[2-3].现在多采自动检测的方法对路面裂缝的损害进行检测,其中使用数字 ...

  8. matlab hough算法车牌识别,一种基于数学形态学和Hough变换的车牌图像检测及定位算法-汽车电子-与非网...

    车牌识别系统(LPR)在现代交通检测和管理部门中发挥着举足轻重的作用.车牌识别系统主要包括车牌定位.字符分割和字符识别三部分[1].由于车牌定位的准确与否将会直接影响到车牌识别的结果,因此,车牌定位是 ...

  9. 基于坐标变换与随机Hough 变换的抛物线运动目标检测算法

    波条件下,高检测概率会带来高的虚警概率:而在稀疏杂波条件下, 检测效果比较好. 关键词:随机Hough 变换, 抛物线, 曲线检测 中图分类号:TN957.51 文献标识码:A 文章编号:1009-5 ...

  10. Hough变换原始形式-直线检测

    1.直角坐标系与极坐标系中的直线表示 1.1 直角坐标系与极坐标系 中的点的表示及它们之间相互关系 极坐标系(polar coordinates)是指在平面内由极点O.极轴L和极径r组成的坐标系,下图 ...

最新文章

  1. MYSQL转换编码的解决方法
  2. linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
  3. Test2 unit2
  4. JAVA基础知识(1)
  5. 报名 | 网易MCtalk: 5G+AI新时代 探索音视频技术创新与实践
  6. test2 3-16 2021 模拟赛two
  7. CF25E-Test【AC自动机,bfs】
  8. Qt中视图的缩放对应缩略图中矩形框的缩放
  9. linux 系统vt 测试,vt-x linux子系统
  10. NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
  11. android个推快速集成,个推用户画像产品(个像)Android集成实践
  12. 因被曝严重漏洞,Avast紧急禁用其 JavaScript 引擎
  13. 时序分析基本概念介绍——STA概述
  14. unable to save settings.xml error 拒绝访问
  15. Java伪装csrss_csrss.exe是什么进程,是病毒吗?
  16. Android email中无法登陆gmail邮箱 M
  17. Java 给PDF文件添加水印
  18. Vue从零开始(2):使用Vue CLI快速生成项目脚手架
  19. 计算机与人脑的优势与缺点,科学网—《计算机与人脑》笔记 - 王龙飞的博文
  20. 高德地图ar步行导航使用教程分享

热门文章

  1. 工欲善其事,必先利其器-IntelliJ IDEA
  2. 张驰咨询:某包装印刷集团第五期六西格玛项目通过专家评审
  3. sql时间转换时分秒_sql秒转换成时分秒格式
  4. 微信大数据:中国人怎么过国庆长假?
  5. js获取非行间样式(兼容ie和标准浏览器)
  6. 【详细】Python实现病毒仿真器
  7. 05--SpringBoot之上传文件
  8. 【条形码识别】条形码中数字的识别的matlab仿真
  9. python窗口中导入图片_Python3 tkinter基础 Text image 文本框中插入图片
  10. Spring内部原理模拟实现(一)—————— 开开开山怪