我想通过生成数千个示例来训练神经网络来计算图像上的圆圈。所以我需要一个函数来生成一个随机数圈的图片。
我一直在玩剧情,但我想必须有更好的方法直接操纵像素矩阵。有什么想法吗?
答案 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) )
答案 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))
}
如果您需要填充圆圈,可以将参数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))
...
黑色背景上的灰色圆圈。