gpt4 book ai didi

algorithm - GPU Blob 边界框连接组件标记

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:13:07 26 4
gpt4 key购买 nike

我有一张二值图像,其中包含一个或多个 Blob 。我想要每个 Blob 的像素列表。如果我能为每个 blob 找到一个种子点,我就可以通过填充来找到 blob 的像素。

针对这个问题做了一些研究,我认为我想要的算法是“连通分量标记”。我看到的大多数示例只是对 blob 输出进行颜色编码。使用此算法我将能够收集:blob 上的一个点,以及 blob 的轴对齐边界框?

连通分量标记听起来是否适合我需要的算法?有人有好的 CUDA 实现吗?

最佳答案

您的建议是一个很好的起点。

逐行扫描图像,当您遇到黑色像素时,开始对其进行填充。填充时,您可以保持边界框更新。填充后,您只需继续扫描即可。

Fill(img, x, y, xm, xM, ym, yM):
img[x][y]= white
xm= min(xm, x); xM= max(xM, x); ym= min(ym, y); yM= max(yM, y);
if x >= 0 and img[x-1][y] == black:
Fill(img, x-1, y)
if x < w and img[x+1][y] == black:
Fill(img, x+1, y)
if y >= 0 and img[x][y-1] == black:
Fill(img, x, y-1)
if y < h and img[x][y+1] == black:
Fill(img, x, y+1)

FloodFill(img):
for y in range(h):
for x in range(w):
if Img[x][y] == black:
xm= xM= x; ym= yM= y
Fill(img, x, y, xm, xM, ym, yM)
Store(x, y, xm, xM, ym, yM)

由于洪水填充是堆栈密集型的,因此 scanline-based推荐的方法。

关于algorithm - GPU Blob 边界框连接组件标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com