阅读 263

【表盘识别】基于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

文章分类
人工智能
文章标签