基于matlab的仪器表盘识别

  1. 实验背景

指针式机械表盘具有安装维护方便、结构简单、防电磁干扰等诸多优点, 目前广泛应用于工矿企业、能源及计量等部门。随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求。随着计算机技术和图像处理技术的不断发展,指针式机械表自动读表技术应运而生。该技术提高了表盘识别的自动化程度及实时性,将代替传统工业仪表的读取方式得到广泛应用。
2. 实验目的
(1)了解机械式表盘自动读表技术的基本原理。
(2)了解仪器表盘识别技术的基本方法和相关算法。
(3)学会利用MATLAB实现对图像的边缘检测、图像边缘锐化、二值化处理、Hough变换等图像处理技术。
3. 实验原理

根据机械式表盘的图像特征,采用图像边缘点法线方向计数累加的圆心定位方法及过定点的直线检测算法,达到表盘识别的目标。仪表刻度检测流程如下: 摄像头采集表盘图像,送入计算机进行预处理及边缘检测操作;计算机检测出表盘回转中心及半径,并定位出表盘的有效显示区域;在此区域内,利用过定点( 回转中心)的Hough 直线变换,基于特征点对应角度的峰值搜索算法识别出指针中心线,从而输出检测结果。
4 实验要求
(1)自选一副仪表图片。读入图像,对图像进行预处理及边缘检测操作。
(2)采用平滑滤波法对图像进行处理,滤波的同时锐化图像的边缘。
(3)通过对读入的仪表图像进行处理,能清楚的识别表盘指针指数,且具有较准确的识别精度。

5运行结果

  1. 实验程序
    RGB=imread('14.jpg');
    figure,imshow(RGB); title('RGB')
    GRAY=rgb2gray(RGB);
    figure,imshow(GRAY); title('GRAY')
    threshold=graythresh(GRAY);
    BW=im2bw(GRAY,threshold);
    figure,imshow(BW); title('BW')
    BW=~BW;
    figure,imshow(BW); title('~BW')
    BW=bwmorph(BW,'thin',Inf);
    figure,imshow(BW); title('BWMORPH')

M,N\]=size(BW); \[H,T,R\] = hough(BW); figure; imshow(H,\[\],'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\\theta'), ylabel('\\rho'); axis on, axis normal, hold on; P = houghpeaks(H,1,'threshold',ceil(0.3\*max(H(:)))); x = T(P(:,2)); y = R(P(:,1)); plot(x,y,'s','color','white'); %%%%%%%%%%%%%%%%%%%% Find lines and plot them%%%%%%%%%%%%%% for k = 1:length(lines) xy = \[lines(k).point1; lines(k).point2\]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); %%%%%%%%%% plot beginnings and ends of lines%%%%%%%%%%%%%%%%%% plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); %%%% determine the endpoints of the longest line segment %%%% len = norm(lines(k).point1 - lines(k).point2); if ( len \> max_len) max_len = len; xy_long = xy; end end %%%%%%%%%%%%% highlight the longest line segment%%%%%%%%%%%%%% plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan'); k=(xy(2,2)-xy(1,2))/(xy(2,1)-xy(1,1)); theta=pi/2+atan(k); if((xy(1,1)+xy(2,1))/2\<=N/2) q=(theta+pi)\*180/3.14; else q=theta\*180/3.14; end shishu=q\*6/2700-0.2; disp (theta); disp (q); disp (shishu);

相关推荐
童话名剑37 分钟前
神经风格迁移(吴恩达深度学习笔记)
深度学习·机器学习·计算机视觉·特征检测·神经风格迁移
ghie909040 分钟前
基于MATLAB的演化博弈仿真实现
开发语言·matlab
FL162386312943 分钟前
[C++][cmake]基于C++在windows上onnxruntime+opencv部署yolo26-seg的实例分割onnx模型
c++·windows·opencv
Chef_Chen1 小时前
数据科学每日总结--Day43--计算机视觉
人工智能·计算机视觉
listhi5201 小时前
IMM雷达多目标跟踪MATLAB实现方案
人工智能·matlab·目标跟踪
北京地铁1号线2 小时前
人工智能岗位招聘专业笔试试卷及答案
人工智能·深度学习·计算机视觉·大语言模型
Gofarlic_OMS2 小时前
如何将MATLAB网络并发许可证闲置率降至10%以下
大数据·运维·服务器·开发语言·人工智能·matlab·制造
航Hang*3 小时前
Photoshop 图形与图像处理技术——第9章:实践训练2——变换花朵颜色与绘制正方体
图像处理·笔记·学习·ui·photoshop·期末·复习
航Hang*3 小时前
Photoshop 图形与图像处理技术——第9章:实践训练5——文字和路径
图像处理·笔记·学习·ui·photoshop·期末
AI小怪兽3 小时前
YOLO26:面向实时目标检测的关键架构增强与性能基准测试
人工智能·yolo·目标检测·计算机视觉·目标跟踪·架构