0

私はpythonが初めてです。画像を多次元のnumpy配列に読み込み、勾配の大きさを計算しようとしています。これにより、単一のチャネル画像が生成されます。ただし、マグニチュードを計算した後の寸法は 700 x 900 です。単一チャネルの画像を受け取ることができるように、データのフォーマットを手伝ってくれる人はいますか?

a = imread('20091016_tumor_26_18245948_1chop.png')
ndimage.gaussian_gradient_magnitude(a, 0.4, a)
4

2 に答える 2

0

このアプローチには 2 つのバージョンがあります。

最初のものは動作します:

from Snaxel import Snaxel
from Snake import Snake
from get_snaxels import get_snaxels;
import numpy
import scipy
from pylab import imread, imshow, gray, mean
from matplotlib.pyplot import imsave

alpha = 1.0
beta = 0.0
gamma = -10.0
delta_y = 3
delta_x = 0

row_idx = 160
contour = [];

count = 0
for i in range(0, 1000):
    contour.append((row_idx, i))


snaxels, num_snaxels = get_snaxels(contour)
a = imread('synthesized_kymogram_2.png')
f = numpy.rot90(a, 2)
f = numpy.rot90(a, 2)


snake = Snake(snaxels, alpha, beta, delta_y, delta_x, f, gamma)
snake.MinimizeEnergy()

しかし、次のように修正すると:

from Snaxel import Snaxel
from Snake import Snake
from get_snaxels import get_snaxels;
import numpy
import scipy
from pylab import imread, imshow, gray, mean
from matplotlib.pyplot import imsave

alpha = 1.0
beta = 0.0
gamma = -10.0
delta_y = 3
delta_x = 0

row_idx = 160
contour = [];

count = 0
for i in range(0, 1000):
    contour.append((row_idx, i))


snaxels, num_snaxels = get_snaxels(contour)
a = imread('20091016_tumor_26_18245948_1chop.png')

g=ndimage.gaussian_gradient_magnitude(a, 0.4)

snake = Snake(snaxels, alpha, beta, delta_y, delta_x, g, gamma)
snake.MinimizeEnergy()

次のエラーが表示されます。

if energy < min_energy:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

勾配の大きさがうまくいくと思いました。しかし、そうではありませんか?誰もそれを解決する方法を知っていますか?

于 2013-11-08T15:49:58.827 に答える