我有很多看起来像下面的图像:
我想在这些图像的彩色圆圈内添加随机的黑白像素(盐和胡椒),但圆圈周围的黑色边框必须保持[0, 0, 0]
。这样做的目的是为了增强机器学习数据集。
问题
如何使用Numpy来实现这一点?
回答:
最简单的方法 – 在给定的矩形内生成随机坐标,并检查该位置的像素是否不是黑色。如果不是,将其颜色更改为随机选择的黑色或白色。伪代码如下:
while saltcount < limit: rx = random(width) ry = random(height) c = pixel[ry][rx] if (c != 0): pixel[ry][rx] = 0xFFFFFF * random(2) saltcount++
这种方法会拒绝大约21%的尝试(对于完美内接圆的黑色区域比例),但非常简单。如果你知道圆的参数,只在圆内生成点:
x = cx + r * sqrt(t) * cos(2 * Pi * a)y = cy + r * sqrt(t) * sin(2 * Pi * a)
其中cx,cy,r
是圆心坐标和半径,t
和a
是在0..1
范围内的随机数
如果你需要在图片中找到圆,可以制作灰度图片或使用r,g,b的任何通道,并使用霍夫变换来发现圆的参数。