我对使用NumPy还很陌生,我对Python的知识有限,对处理图像也很陌生。我不明白怎么做。你知道吗
我需要知道如何矢量化Python中的嵌套for循环,其中第二个循环依赖于第一个循环。你知道吗
示例:
for(condition)
{ //
if (condition)
{ //
for(condition)
{ //
}
}
}
让我给出上下文和一段代码,以便更容易解释我要找的内容。你知道吗
我找到了骨架化图像的端点(只有一个相邻像素的像素)和连接点(有三个或更多相邻像素的像素),在这个代码片段中,代码试图找到连接点之间或连接点和端点之间的任何连接。你知道吗
#FOR JUNCTION POINTS TO OTHER JUNCTION POINTS OR END POINTS
for i in xrange(lenj):
a=junc_points[i]
point_junc=en2(a[0],a[1],skeleton,point)
point.append(a)
for c in point_junc:
a1=c
point.append(a1)
while True:
flag=0
a2=en1(a1[0],a1[1],skeleton,point)
a1=a2[1:]
if a2[0]==0:
break
else:
point.append(a1)
for j in xrange(lenej):
b=end_junc_points[j]
if a1==b:
#print(a," is connected to ",b)
flag=1
adj[i][j]=1
break
if flag==1:
break
point
是存储所有先前访问的像素坐标的列表变量
e2()
返回点a
的所有相邻像素,以便遍历每个分支以查找端点或连接点
e1()
返回[0]
如果一个像素已经被访问过,则返回[1,x,y]
,其中x和y是它前面的像素
junc_points
是存储所有连接点的列表
end_junc_points
是存储所有连接点和端点的列表
lenej
是end_junc_points
的长度
lenj
是junc_points
的长度
point_junc
存储e2()
返回的像素坐标
adj
是一个邻接矩阵
我之所以需要这样做,是因为我试图从骨架化图像的端点和连接点绘制一个关键点图。adj
存储该图形
我用Python的一种非常基本的方式编写了代码。正如你所理解的,这不是有效和缓慢的,这就是为什么我需要矢量化。除了矢量化,请告诉我任何函数或使用骨架图像库,这将有助于我优化我的代码。你知道吗
我很欣赏我的代码看起来很模糊,我尽量解释一切。我没有给出完整代码的原因是,代码的其他部分也有相同的内容,我希望能够自己完成这些内容,这就是为什么我只要求一部分的帮助,因为了解如何矢量化这可能也会帮助我完成其余的工作。你知道吗
编辑:添加输入输出。你知道吗
对于此图像
这是形成的骨骼图像
在运行一段代码时,我会找出端点和连接点,在本例中就是这样
没有端点,自然地,这些连接点和端点继续作为这段代码的输入,它应该形成一个邻接矩阵来将它转换成一个图。为该图像形成的图形(由邻接矩阵表示)为:
我希望这能消除人们对投入和产出的疑虑
目前没有回答
相关问题 更多 >
编程相关推荐