区域的颜色并不重要,我想要实现的是沿着 Voronoi 区域的边缘的可变“厚度”(特别是,它们看起来像一个更大的圆形斑点,在拐角处相交,在拐角处相交处更薄)他们的中间点)。
我尝试根据到每个质心的最小距离“手动绘制”每个像素(每个像素与一种颜色相关联):
n_centroids = 10
centroids = [(random.randint(0, h), random.randint(0, w)) for _ in range(n_centroids)]
colors = np.array([np.random.choice(range(256), size=3) for _ in range(n_centroids)]) / 255
for x, y in it.product(range(h), range(w)):
distances = np.sqrt([(x - c[0])**2 + (y - c[1])**2 for c in centroids])
centroid_i = np.argmin(distances)
img[x, y] = colors[centroid_i]
plt.imshow(img, cmap='gray')
Run Code Online (Sandbox Code Playgroud)
或者通过scipy.spatial.Voronoi
,这也给了我顶点,尽管我仍然不知道如何以所需的可变厚度通过它们画一条线。
from scipy.spatial import Voronoi, voronoi_plot_2d
# make up data points
points = [(random.randint(0, 10), random.randint(0, 10)) for _ in range(10)]
# …
Run Code Online (Sandbox Code Playgroud) 我正在尝试清理一些胸部 X 光数据以提供给 CNN。在我的数据集中,当前有许多图像的骨骼显示为白色(像素值高于背景),如下所示:
你能告诉我一种给两者贴上标签的方法吗?我没有关于该图像的其他外部信息,尽管可以假设它们的大小相同(
假设它们具有相同的大小(大约 1000x2000)并且第一行像素有超过 1 个不同的值(即不是空白边框),我编写了这个简单的代码来将中间像素与顶部进行比较 -左边一个(可能是背景的一部分)。
if img[0,0] > img[500, 500]: # if background lighter than center
img = 255 - img # make the image negative
Run Code Online (Sandbox Code Playgroud)
即使从我发布的这些示例中您也可以看到,这种比较并不总是一个好的指标(有时背景周围有光环,或者 [500,500] 中的像素可能与背景相似)。是否有更可靠的其他方法来检测此类图像是否为负片?
考虑到数据集中有一些细节和阴影很少的图像,例如