表盘识别基于matlab投影法电表表盘读数识别含Matlab源码 1101期
Posted 紫极神光(Q1564658423)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表盘识别基于matlab投影法电表表盘读数识别含Matlab源码 1101期相关的知识,希望对你有一定的参考价值。
一、简介
投影,在立体几何中我们学到过,是空间直线在某个方向上的投影,那么图像处理中也是这种投影思想。
最简单的投影:
水平方向投影,将图像数组进行列求和;
垂直方向投影,将图像数组进行行求和;
对于二值图像或明显特征的灰度图分割前景与背景,经常用到投影法。
二、源代码
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
三、运行结果
四、备注
版本:2014a
以上是关于表盘识别基于matlab投影法电表表盘读数识别含Matlab源码 1101期的主要内容,如果未能解决你的问题,请参考以下文章
表盘识别基于matlab Hough变换钟表表盘识别含Matlab源码 1069期
时钟识别基于matlab GUI Hough变换指针式时钟识别含Matlab源码 2085期