MATLAB刻度线表盘识别

  1. 题目:MATLAB指针表盘识别系统

  2. 题目类型

基于颜色类的识别


更多内容见  https://cjsq.scove.cn/ceRwEy

  1. 课题名称

基于MATLAB的指示针表盘识别

  1. 应用背景和思路

现实中,我们知道我们肉眼所看到的彩色图像,其实都是有R、G、B三原色按照不同比例组成的,比例不同,对应的颜色就不同。同理,在利用matlab处理一些图像时候,我们往往可以利用颜色的特征来进行定位,分割和识别。如安全帽的定位计数,路锥的识别,水果的分类识别等。该课题中识别如如下:

需要我们识别出,红色刻度线的示数。我们观察可知,红色是一个明显的特征,通过颜色的方法可以定位出红色刻度线位置,然后计算其坐标,利用已知的刻度值范围,即计算结果。

  1. 设计过程

  1. 通过颜色定位

将彩色图像进行分理出RGB三通道,分别设置好每个通道比例,将落入颜色比例的像素置1,否则置0,如下图所示:

2、去除干扰

  有的时候,图中除了目标区域,可能还会伴随以下其他同样被判为红色分量的部分,这时候需要我们利用形态学知识把干扰给去除。MATLAB中,有一个去除二值图中,封闭面积块面积小于一定阈值的库函数,bwareaopen,其调用格式为:I1=bwareaopen(I,yuzhi),表示二值图像I中,把其面积小于yuzhi的白色块给去除掉,置0,这样就留下来感兴趣的精准目标区域。因为这里得到的结果效果比较好,所以无需做干扰的滤波。

3、连通区域标记

以上得到的还未必是一整块区域,可能是藕断丝连那种,需要做连同区域标记。

L = bwlabel(d,8); %标记连通

STATS = regionprops(L,'all');

以上中,d为提取颜色分量后的分割二值图,最终得到的连同的一个区域。

4、计算坐标

  利用zero函数去寻找框定的最外接矩形的四个角的坐标,调用格式如下:

Ran = zeros(Num,4); % 范围

Fig = zeros(1,Num); % 长宽比

for i = 1:Num

   [ix,iy] = find(L == id(i));

   Ran(i,:) = [min(ix),max(ix),min(iy),max(iy)]; % 每一个区域的范围

End

得到了坐标,结合原刻度分度值,可以按比例换算刻度值。

五、运行结果

六、思考

如果是下图,即带有红黄色的干扰呢,又该如何?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容