相关疑难解决方法(0)

代表和解决给定图像的迷宫

在给定图像的情况下,表示和解决迷宫的最佳方法是什么?

The Scope Issue 134的封面图片

给定一个JPEG图像(如上所示),读取它的最佳方法是什么,将其解析为一些数据结构并解决迷宫?我的第一直觉是逐像素地读取图像并将其存储在布尔值的列表(数组)中:True对于白色像素,False对于非白色像素(可以丢弃颜色).这种方法的问题是图像可能不是"像素完美".我只是说,如果墙上的某个地方有白色像素,可能会造成意想不到的路径.

另一种方法(经过深思熟虑后来找我)是将图像转换为SVG文件 - 这是在画布上绘制的路径列表.这样,路径可以被读入相同类型的列表(布尔值),其中True指示路径或墙,False指示可行进空间.如果转换不是100%准确,并且未完全连接所有墙壁,从而产生间隙,则会出现此方法的问题.

转换为SVG的另一个问题是线条不是"完美"直线.这导致路径是立方贝塞尔曲线.使用由整数索引的布尔值列表(数组),曲线不会轻易转移,并且必须计算曲线上所有的点,但不会与列表索引完全匹配.

我假设虽然这些方法中的一种可能有用(尽管可能不是),但鉴于这么大的图像,它们的效率非常低,并且存在更好的方法.如何最好(最有效和/或最简单)完成?有没有最好的方法?

然后是迷宫的解决方案.如果我使用前两种方法中的任何一种,我基本上会得到一个矩阵.根据这个答案,表示迷宫的好方法是使用树,解决它的好方法是使用A*算法.如何从图像中创建树?有任何想法吗?

TL; DR
最好的解析方法?进入什么数据结构?该结构将如何帮助/阻碍解决?

更新
我已经尝试过实现@Mikhail用Python编写的东西numpy,正如@Thomas推荐的那样.我觉得这个算法是正确的,但它没有像希望的那样工作.(下面的代码.)PNG库是PyPNG.

import png, numpy, Queue, operator, itertools

def is_white(coord, image):
  """ Returns whether (x, y) is approx. a white pixel."""
  a = True
  for i in xrange(3):
    if not a: break
    a = image[coord[1]][coord[0] * 3 + i] > 240
  return a

def bfs(s, e, i, visited):
  """ Perform a breadth-first search. …
Run Code Online (Sandbox Code Playgroud)

python algorithm matlab maze image-processing

258
推荐指数
8
解决办法
5万
查看次数

使用R将jpg转换为greyscale csv

我有一个JPG图像的文件夹,我正在尝试为一个讨人喜欢的比赛进行分类.我已经看到Python中的一些代码,我认为会在论坛上实现这一点,但是想知道是否可以在R中完成?我正在尝试将许多jpg图像的这个文件夹转换为csv文件,其中数字显示每个像素的灰度,类似于手数字识别器http://www.kaggle.com/c/digit-recognizer/

所以基本上是j中的jpg - > .csv,显示了用于分类的每个像素的灰度数.我想在它上面放一个随机森林或线性模型.

csv jpeg r grayscale kaggle

7
推荐指数
1
解决办法
4183
查看次数

通过使用igraph(R)组合入射顶点的属性来创建边缘属性

对于图中的每个边,我想添加一个数值属性(权重),它是事件顶点的属性(概率)的乘积.我可以通过循环边缘来做到这一点; 那是:

    for (i in E(G)) {
      ind <- V(G)[inc(i)]
      p <- get.vertex.attribute(G, name = "prob", index=ind)
      E(G)[i]$weight <- prod(p)
    }
Run Code Online (Sandbox Code Playgroud)

但是,这对于我的图表来说速度很慢(| V |〜= 20,000和| E |〜= 200,000).有没有更快的方法来执行此操作?

attributes r igraph

2
推荐指数
1
解决办法
215
查看次数

标签 统计

r ×2

algorithm ×1

attributes ×1

csv ×1

grayscale ×1

igraph ×1

image-processing ×1

jpeg ×1

kaggle ×1

matlab ×1

maze ×1

python ×1