守望先锋--MATLAB图像处理辅助Try2

    经过我多次人机截图进行RGB分析,发现人物的除了血条的特征外还有另一个特征是敌人会有一个红色的外轮廓,这个外轮廓由三层组成:

浅红——深红——浅红

守望先锋--MATLAB图像处理辅助Try2

于是我想到提取中间的深红色,连续程度最高,颜色最稳定。

简单思路(特殊情况:单人):

(1)先提取出外轮廓中的深红色(需要的色变为1,其他色变为0)

(2)逐行扫描,每行必定只有左右两个值,然后对其求平均得中点

(3)一系列中点连起来,就得到了人物的中心线,于是想打哪打哪。。

复杂思路(实际情况:多人):

很遗憾,一般屏幕上出现的不会是一个人,而是多个人,有可能多个人分离(一般情况),但是团战的时候往往都可能两个人的身形叠加于一起,于是综合思路:

参考血条算法的思路

(1)提取外轮廓中的深红色(需要的色变为1,其他色变为0)

(2)对每一列求和,此处应明白,一个人的身形,列和绝大部分为2(可能边缘大于2,但是只有几列)

(3)判断,大于2的列的个数

         如果大于10,说明两人身影叠加,2,2...2,4,4...4,,2,2...,此时“红色2”的位置作为鼠标命中点

        如果小于10,说明每个人的身影分离,或者直接单人,此时2,2,....2,0,0....,0,2,2,.....,取第一段全为2的数据,处理同于单人思路

%----------------------------------------------------%

说明:

因为算法较为复杂,且速度必然慢于血条算法,因为血条长度固定,所以只要扫描出左边缘加上特定值即可

而提取外轮廓虽然可以很准,但是要扫描所有列,速度贼慢

所以并未作出实现,只是实现了二阈值颜色提取的算法