9

長方形のキャリブレーション パターンのドットから見つかったポイント (x、y) を持つ:2 マトリックスがあります。これらのポイントを行ごとに並べ替えるのが好きです。これらの点を lexsort で並べ替えましたが、カメラからの歪みが大きすぎて y 座標が重なってしまいます。

imageloading...
blobs=imageprocessing....
coordinates=np.array([blob.centroid() for blob in blobs])
nd=np.lexsort((coordinates[:,0],coordinates[:,1]))
coordinates=coordinates[ind]

ここに画像の説明を入力

行を長くするドローネパターンを使用してこれをソートする方法はありますか?

import matplotlib.tri as tri 
x=coordinates[:,0] y=coordinates[:,1]
triang = tri.Triangulation(x, y)

ここに画像の説明を入力

4

1 に答える 1

2

三角測量の使用は確かに興味深いものであり、アプリケーションに使用できます。

import numpy as np
import matplotlib.tri as tri
import matplotlib.pyplot as plt
import random

# create fake data
x,y = np.meshgrid(np.arange(10), np.arange(10))
x = x.flatten()
y = y.flatten()
coordinates = np.column_stack([x,y])+0.04 * np.random.rand(len(x), 2)
np.random.shuffle(coordinates)
x=coordinates[:,0]
y=coordinates[:,1]

# perform triangulation
triang=tri.Triangulation(x,y)
f = plt.figure(0)
ax = plt.axes()
tri.triplot(ax,triang)

# find horizontal edges
f = plt.figure(1)
e_start = coordinates[triang.edges[:,0]]
e_end = coordinates[triang.edges[:,1]]
e_diff = e_end - e_start
e_x = e_diff[:,0]
e_y = e_diff[:,1]

e_len = np.sqrt(e_x**2+e_y**2)
alpha = 180*np.arcsin(e_y/e_len)/np.pi

hist, bins, patches = plt.hist(alpha, bins=20)

# in the histogram, we find that the 'horizontal' lines
# have an alpha < 10.

ind_horizontal = (-10<alpha) & (alpha < 10)
edges_horizontal = triang.edges[ind_horizontal]
plt.show()

その結果、2 次元配列である edge_horizo​​ntal で水平方向のエッジを取得します。ここで、[[p_{0},p_{1}], ..., [p_{n}, p_{n+1}]]p_i はcoordinates配列のインデックスです。

于 2012-12-20T11:51:24.010 に答える