用MATLAB进行图像处理

图像处理概念、算法和MATLAB

Pokémon Go遇到MATLAB

直到大约两周前,我还没有想过MATLAB和Pokémon Go(游戏邦注:今年夏天全球手机游戏现象)之间存在联系的可能性。但后来我听说有人使用一些基本的图像处理技术,通过自动搜索PokéStops来破解游戏。

嗯,我不玩Pokémon围棋,我也不知道PokéStop是什么,但我理解搜索自动化背后的基本思想。

以下是游戏截图。

url =“https://blogs.mathworks.com/steve/files/pokemon-go-screen.jpg”;rgb = imread (url);imshow (rgb)

(非常感谢那些给我截屏的人,尤其是Haripriya和Chris。)

这个嵌套蓝色圆圈的几何图案是PokéStop。我们的任务就是找到它们。我将通过以下步骤展示解决方案的基本轮廓:

1.按颜色分割图像。

2.清理分割使用形态关闭。

3.计算分割中连通分量的面积和圆心。

4.选择最大的对象。

为了快速了解如何通过颜色分割图像,我喜欢使用颜色阈值,通常是Lab颜色空间。下面的屏幕截图显示了我如何调整a*和b*滑块来选择与PokéStop相关的颜色范围。

这是我从颜色阈值

imshow (BW)

现在让我们使用形态关闭将PokéStop模式变成一个单独的、连接的blob。

BW2 = imclose (BW strel (“磁盘”, 20));imshow (BW2)

下一步,使用regionprops找出所有连接的分量,计算它们的面积和质心。在图像处理工具箱的最新版本中,你可以看出regionprops将结果作为表返回,这使结果更容易阅读。

t = regionprops (“表”BW2,“区域”“重心”
t =面积质心_____ ________________ 1157 37.43 665.14 13259 260.56 313.99 2 217 49.5 6 259 31.5 1 265 82 6 356.5 31.667 12 387.5 31.5

最后,确定面积最大的表行,并得到相应的质心。

[~ j] = max (t.Area);位置= t.Centroid (j,:)
位置= 260.5581 313.9893

让我们通过在原始图像上叠加位置来看看效果如何。

imshow (rgb)情节(位置(1)、位置(2)“dy”“MarkerSize”10“MarkerFaceColor”“y”)举行

那就这样吧。

他们全都抓了!




发布与MATLAB®R2016a

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。