-
题目:MATLAB指针表盘识别系统
-
题目类型
基于颜色类的识别
更多内容见 https://cjsq.scove.cn/ceRwEy
-
课题名称
基于MATLAB的指示针表盘识别
-
应用背景和思路
现实中,我们知道我们肉眼所看到的彩色图像,其实都是有R、G、B三原色按照不同比例组成的,比例不同,对应的颜色就不同。同理,在利用matlab处理一些图像时候,我们往往可以利用颜色的特征来进行定位,分割和识别。如安全帽的定位计数,路锥的识别,水果的分类识别等。该课题中识别如如下:
需要我们识别出,红色刻度线的示数。我们观察可知,红色是一个明显的特征,通过颜色的方法可以定位出红色刻度线位置,然后计算其坐标,利用已知的刻度值范围,即计算结果。
-
设计过程
-
通过颜色定位
将彩色图像进行分理出RGB三通道,分别设置好每个通道比例,将落入颜色比例的像素置1,否则置0,如下图所示:
有的时候,图中除了目标区域,可能还会伴随以下其他同样被判为红色分量的部分,这时候需要我们利用形态学知识把干扰给去除。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
得到了坐标,结合原刻度分度值,可以按比例换算刻度值。
五、运行结果
六、思考
如果是下图,即带有红黄色的干扰呢,又该如何?