GPU 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)
由于洪水充填堆积密集,建议采用基于扫描线的方法。
链接地址: http://www.djcxy.com/p/25397.html