2

SciPy を使用して、CT 画像で腫瘍を特定する作業を行っています。腫瘍を含むスライスを特定したら、次を使用してスライスを取得します。

slice_x, slice_y = ndimage.find_objects(label_im==label)[0]

次に、次のように完全な画像をプロットします。

plt.imshow(image, cmap='gray')

抽出されたスライス (腫瘍を含む) の輪郭を元の画像の適切な位置にオーバーレイしたいと考えています。ただし、等高線図を適切な領域の上に置くことはできません。代わりに、コンター プロットは常にイメージの左上隅にあります。これが私が使用しているものです:

plt.contour(mask[slice_x, slice_y], position=(slice_x.start, \
slice_y.start), linewidths=2, colors='r')

結果は次のとおりです。

CT画像

メイン プロット内のコンター プロットの位置を設定するにはどうすればよいですか? ありがとう!

4

1 に答える 1

4

extentの代わりにキーワード引数を使用する必要がありますposition。ただし、開始だけでなく最大値も指定する必要があります(つまり、である必要がありますextent=[xmin, xmax, ymin, ymax]

あなたの場合、それは次のようになります:

extent=[xslice.start, xslice.stop+1, yslice.start, yslice.stop+1]
plt.contour(mask[xslice, yslice], extent=extent)

origin入力データの解釈方法を制御するには、キーワード引数を使用する(またはyminとymaxを反転する) 必要がある場合があることに注意してください。

または、次のようにすることもできます。

x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, mask[xslcie, yslice])

広い領域で作業している場合は少し非効率になりますが、はるかにクリーンです。

後者のアプローチの完全な例として:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

data = np.random.random((100,100))

xslice, yslice = slice(20, 30), slice(45, 65)

plt.imshow(data, cmap=cm.gray)

x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, data[xslice, yslice])

plt.show()

ここに画像の説明を入力してください

于 2012-11-15T03:23:11.877 に答える