6

角度によってリングの強度がどのように変化するかを調べています。画像の例を次に示します。

ここに画像の説明を入力

私がやりたいことは、そのドーナツの中心から値の円を取り、それらを角度に対してプロットすることです。私が現在行っているのは、scipy.ndimage.interpolation.rotate を使用してリングを放射状にスライスし、2 つのピークの最大値を抽出してそれらと角度をプロットすることです。

    crop = np.ones((width,width)) #this is my image
    slices = np.arange(0,width,1)
    stack = np.zeros((2*width,len(slices)))
    angles = np.linspace(0,2*np.pi,len(crop2))

    for j in range(len(slices2)): # take slices
           stack[:,j] = rotate(crop,slices[j],reshape=False)[:,width]

しかし、これは私が実際に探していることをしているとは思いません。私は主に、必要なデータを抽出する方法に苦労しています。また、このようなマスクを適用してみました。

ここに画像の説明を入力

画像に、しかし、そのマスク内の値を正しい順序で取得する方法がわかりません(つまり、角度0〜2piの増加順)

他のアイデアは非常に役立ちます!

4

1 に答える 1

3

正確性を検証するために、別の入力画像を作成しました。

import numpy as np
import scipy as sp
import scipy.interpolate
import matplotlib.pyplot as plt

# Mock up an image.
W = 100
x = np.arange(W)
y = np.arange(W)
xx,yy = np.meshgrid(x,y)

image = xx//5*5 + yy//5*5
image = image / np.max(image)  # scale into [0,1]

plt.imshow(image, interpolation='nearest', cmap='gray')
plt.show()

代替入力画像

画像内の循環パスから値をサンプリングするには、任意の場所にアクセスする必要があるため、最初に補間器を作成します。また、高速化するためにベクトル化します。次に、円のパラメトリック定義を使用して、円の円周上の点
の座標を生成します。円周の少なくとも 2 倍でなければなりません (ナイキスト・シャノンのサンプリング定理)。Nx(t) = sin(t), y(t) = cos(t)
N

interp = sp.interpolate.interp2d(x, y, image)
vinterp = np.vectorize(interp)

for r in (15, 30, 45):    # radii for circles around image's center
    xcenter = len(x)/2
    ycenter = len(y)/2
    arclen = 2*np.pi*r
    angle = np.linspace(0, 2*np.pi, arclen*2, endpoint=False)
    value = vinterp(xcenter + r*np.sin(angle),
                    ycenter + r*np.cos(angle))
    plt.plot(angle, value, label='r={}'.format(r))

plt.legend()
plt.show()

中心からサンプリングされた円。

于 2016-04-14T16:54:45.497 に答える