在R中生成图片以用于训练算法

时间:2016-02-10 01:07:27

标签: r image neural-network

我想通过生成数千个示例来训练神经网络来计算图像上的圆圈。所以我需要一个函数来生成一个随机数圈的图片。

我一直在玩剧情,但我想必须有更好的方法直接操纵像素矩阵。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

不妨将其作为答案抛弃:

set.seed(123)
n= sample(500, 1)  # picks 1 number in range of 1 to 500
plot( runif(n), runif(n), cex=runif(n,1,6),  # Varies size and location
                         main=bquote( .(n)~ Random~Circles) )

enter image description here

答案 1 :(得分:1)

您可以使用Bioconductor包 EBImage 在像素矩阵上绘制圆圈并将其保存为PNG文件,如下所示。

library("EBImage")

set.seed(1)

images = 10   # number of images to generate
size = 500    # X-Y dimensions of images
circles = 50  # max number of circles
rmin = 5
rmax = 25     # max circle radius

xy = size - 2*rmax
rr = rmax - rmin
n = sample.int(100, images)

for (i in 1:length(n)) {
  img = Image(1L, c(size, size))
  x = sample.int(xy, n[i]) + rmax
  y = sample.int(xy, n[i]) + rmax
  r = sample.int(rr, n[i], replace = TRUE)
  for (k in 1:n[i]) {
    img = drawCircle(img, x[k], y[k], r[k], col=0)
  }
  writeImage(img, sprintf("img%.5d.png", i))
}

img00001.png

如果您需要填充圆圈,可以将参数fill = TRUE提供给函数drawCircle。您还可以在调用Image时轻松更改图像背景,或使用参数col更改为drawCircle的圆圈颜色。例如,使用

...
img = Image(0L, c(size, size))
...
img = drawCircle(img, x[k], y[k], r[k], fill = TRUE, col = runif(1, .1))
...

黑色背景上的灰色圆圈。

enter image description here