イメージを持っていて、半径rの円に属するピクセルの強度を中点(Mx、My)の周りに引き出す必要があります。 重要な部分は、ルックアップのために円の周囲を定義する座標(x、y)のリストを構築することです。私はmidpoint circle algorithm from rosettaのバージョンを採用しましたが、サークル上のポイントは注文されません。イメージ内の輝度値のルックアップに使用できる座標のリストを取得するためのスマートな方法はありますか?私はそれを実装せずにnumpyを避けるのが理想的です(しかし私はopenCVを使うことができます)。座標を取得したら、画像から値の検索を高速化するヒントもありがたく思う。pythonを使用して円と中点と半径のピクセル値を抽出します。
これは、番号なしリストのために私のコードです:
def circle(x0, y0, radius):
f = 1 - radius
ddf_x = 1
ddf_y = -2 * radius
x = 0
y = radius
clist=[]
while x < y:
if f >= 0:
y -= 1
ddf_y += 2
f += ddf_y
x += 1
ddf_x += 2
f += ddf_x
clist.append([x0 + x, y0 + y])
clist.append([x0 - x, y0 + y])
clist.append([x0 + x, y0 - y])
clist.append([x0 - x, y0 - y])
clist.append([x0 + y, y0 + x])
clist.append([x0 - y, y0 + x])
clist.append([x0 + y, y0 - x])
clist.append([x0 - y, y0 - x])
return clist
c=circle(10,10,5)
for i in range(len(c)):
plt.plot(c[i][0],c[i][1],'o',color=[i/50.0,1-i/50.0,1])
numpyを使用していない場合の画像のフォーマットは何ですか?技術的な理由から – Iluvatar
私は最終的に私がnumpyをインポートすることはできませんが、私はopencvをインポートすることができますironpythonでこれを実装する必要があります。 – jlarsch
また、何らかの並べ替えが必要なことを暗示していますか?また、あなたがここに持っているコードは、周囲だけではなく塗りつぶされた円の点を得ているようです。 – Iluvatar