找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4745|回复: 3
收起左侧

基于数字图像处理的表盘指针读数的matlab实验程序

[复制链接]
ID:462741 发表于 2019-1-5 23:02 | 显示全部楼层 |阅读模式
数字图像处理Matlab实验——仪器表盘识别
1.    实验背景
指针式机械表盘具有安装维护方便、结构简单、防电磁干扰等诸多优点, 目前广泛应用于工矿企业、能源及计量等部门。随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求。随着计算机技术和图像处理技术的不断发展,指针式机械表自动读表技术应运而生。该技术提高了表盘识别的自动化程度及实时性,将代替传统工业仪表的读取方式得到广泛应用。
2.    实验目的
(1)了解机械式表盘自动读表技术的基本原理。
(2)了解仪器表盘识别技术的基本方法和相关算法。
(3)学会利用MATLAB实现对图像的边缘检测、图像边缘锐化、二值化处理、Hough变换等图像处理技术。
3.    实验原理
根据机械式表盘的图像特征,采用图像边缘点法线方向计数累加的圆心定位方法及过定点的直线检测算法,达到表盘识别的目标。仪表刻度检测流程如下: 摄像头采集表盘图像,送入计算机进行预处理及边缘检测操作;计算机检测出表盘回转中心及半径,并定位出表盘的有效显示区域;在此区域内,利用过定点( 回转中心)的Hough 直线变换,基于特征点对应角度的峰值搜索算法识别出指针中心线,从而输出检测结果。
参考资料:
    《数字图像处理》(第三版) 冈萨雷斯   电子工业出版社
    《数字图像处理的MATLAB实现》(第二版) 冈萨雷斯  清华大学出版社
    《MATLAB数字图像处理》(第二版) 张德丰 机械工业出版社
    参考文献:陈继华, 李勇, 田增国, & 李磊. (2015). 基于机器视觉的机械式表盘自动读表技术的实现. 郑州大学学报(工学版), 36(3), 101-105.
4.    实验要求
(1)自选一副仪表图片。读入图像,对图像进行预处理及边缘检测操作。
(2)采用平滑滤波法对图像进行处理,滤波的同时锐化图像的边缘。
(3)通过对读入的仪表图像进行处理,能清楚的识别表盘指针指数,且具有较准确的识别精度。
5.实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。
7.    实验程序


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%%%%%%%%%%%%%%
       lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
       hold on;
        figure, imshow(RGB), hold on
       max_len = 0;
       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);


完整的Word格式文档51黑下载地址:
数字图像处理matlab实验.docx (17.18 KB, 下载次数: 52)
回复

使用道具 举报

ID:463130 发表于 2019-1-6 16:38 | 显示全部楼层
郑大物工的?
回复

使用道具 举报

ID:465894 发表于 2019-1-10 15:40 | 显示全部楼层
莫非李老师的钓鱼贴?
回复

使用道具 举报

ID:628635 发表于 2021-12-9 15:20 | 显示全部楼层
笑死,测控路过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表