基于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);

相关推荐
思茂信息5 小时前
基于CST 3D Combined功能的以太网口RE仿真
开发语言·javascript·单片机·嵌入式硬件·matlab·3d
sali-tec7 小时前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉
xinxiangwangzhi_7 小时前
立体匹配--Cross-Scale Cost Aggregation for Stereo Matching
图像处理·计算机视觉
沃达德软件8 小时前
模糊图像复原技术解析
图像处理·人工智能·深度学习·目标检测·机器学习·计算机视觉·目标跟踪
CoovallyAIHub9 小时前
模糊、噪声、压缩……让检测器学会主动评估画质
深度学习·算法·计算机视觉
智驱力人工智能9 小时前
地铁隧道轨道障碍物实时检测方案 守护城市地下动脉的工程实践 轨道障碍物检测 高铁站区轨道障碍物AI预警 铁路轨道异物识别系统价格
人工智能·算法·yolo·目标检测·计算机视觉·边缘计算
智驱力人工智能10 小时前
机场鸟类活动智能监测 守护航空安全的精准工程实践 飞鸟检测 机场鸟击预防AI预警系统方案 机场停机坪鸟类干扰实时监测机场航站楼鸟击预警
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
slandarer12 小时前
MATLAB | 绘图复刻(二十五)| 环形柱状图+核密度面积图
matlab·科研绘图
仙女修炼史12 小时前
Making Convolutional Networks Shift-Invariant Again
人工智能·深度学习·计算机视觉
孤独的追光者12 小时前
MATLAB导出滤波器参数至ADSP中使用
算法·matlab