1 简介 随着工业自动化生产,智能化仪器以及智能小区的发展,自动读表和远程抄表已经成为当前的一个应用及研究热点.本文的基于图像识别的表盘读数系统是一种通过摄像方式获得仪表
1 简介
随着工业自动化生产,智能化仪器以及智能小区的发展,自动读表和远程抄表已经成为当前的一个应用及研究热点.本文的基于图像识别的表盘读数系统是一种通过摄像方式获得仪表表盘图像信息,并通过图像处理与模式识别技术自动获取仪表示值的系统.本文以水表为具体研究对象,研究成果对其他机械式仪表示值的自动读数同样具有重要意义.
2 部分代码
function y1=OTSU(image,th_set)clc
%X=input('Enter the picture name','s');
im=imread('dianbiao2.jpg');
%a2=imread('color1.bmp');
gray=rgb2gray(im);%原图像的灰度图
im1=medfilt2(gray,[3,3]);%去噪,二维中值滤波,用3*3的串口对图像中值滤波
low_high=stretchlim(im1);%增强图像,自动获取明显有双峰的灰度图的阈值
gray=imadjust(gray,low_high,[]);%增强图像对比度
%subplot(224);imshow(gray);title('after adjust');
count=imhist(im1);
[r,t]=size(im1);%数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量
n=r*t;
l=256;
count=count/n;%各级灰度出现的概率
for i=2:l
if count(i)~=0
st=i-1;
break
end
end
%以上循环语句实现寻找出现概率不为0的最小灰度值
for i=l:-1:1
if count(i)~=0;
nd=i-1;
break
end
end
%实现找出出现概率不为0的最大灰度值
f=count(st+1:nd+1);
p=st;q=nd-st;%p和分别是灰度的起始和结束值
u=0;
for i=1:q;
u=u+f(i)*(p+i-1);
ua(i)=u;
end
%计算图像的平均灰度值
for i=1:q;
w(i)=sum(f(1:i));
end
%计算出选择不同k的时候,A区域的概率
d=(u*w-ua).^2./(w.*(1-w));%求出不同k值时类间方差
[y,tp]=max(d);%求出最大方差对应的灰度级
th=tp+p;
y1=zeros(r,t);
for i=1:r
for j=1:t
x1(i,j)=double(im1(i,j));
end
end
for i=1:r
for j=1:t
if (x1(i,j)>th)
y1(i,j)=x1(i,j);
else
y1(i,j)=0;
end
end
end
%上面一段代码实现分割
figure,imshow(y1);
%title('灰度门限分割的图像');
SE=ones(4,4);
BW=imerode(y1,SE);%腐蚀运算
se=ones(3,3)
BW1=imdilate(BW,se);%膨胀运算 SE为结构元素
gry1=~BW1;
figure,imshow(gry1);
%imshow(gry);
ret=statistic_pix(gry1);
figure;
stairs(ret, 'DisplayName', 'ret', 'YDataSource', 'ret'); figure(gcf);
3 仿真结果
4 参考文献
[1]孟祥雪. 基于机器视觉的汽车仪表读数检测技术研究[D]. 哈尔滨工业大学, 2014.