颜色区域的Numpy盐和胡椒图像?

rod*_*ira -1 numpy machine-learning image-processing dataset

我有大量的图像,如下所示:

在此输入图像描述

我想为这些图像添加随机的黑白像素(盐和胡椒),但仅限于彩色圆圈内.圆圈周围的黑色边框必须保留[0, 0, 0].这样做的目的是增加机器学习数据集.

如何使用Numpy完成这项工作?

MBo*_*MBo 5

最简单的方法 - 在给定的矩形中生成随机坐标,并检查此位置的像素是否为黑色.如果没有,请将其颜色更改为随机选择的黑色和白色.伪代码:

while saltcount < limit:
   rx = random(width)
   ry = random(height)
   c = pixel[ry][rx]
   if (c != 0):
       pixel[ry][rx] = 0xFFFFFF * random(2)
       saltcount++ 
Run Code Online (Sandbox Code Playgroud)

这种方法拒绝大约21%的试用(完美内切圆的黑色面积比),但非常简单.如果您知道圆参数,则仅在圆内生成点:

x = cx + r * sqrt(t) * cos(2 * Pi * a)
y = cy + r * sqrt(t) * sin(2 * Pi * a)
Run Code Online (Sandbox Code Playgroud)

其中cx,cy,r是圆的中心坐标和半径,t以及a在范围内的随机量0..1

如果你需要在图片上找到圆圈,你可以制作灰度图片或使用r,g,b的任何通道,并使用Hough变换来发现圆形参数.