問題タブ [ndimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
4842 参照

python - 解決方法...ValueError: float NaN を整数に変換できません

私は非常に複雑なコードを実行しているので、以前は機能していたので詳細は気にしませんが、今はこのエラーが発生しています。

粒子は 0 または 255 で満たされた 3D タプルであり、scipy 重心関数を使用してから、値を最も近い整数に変換しようとしています (配列を扱っているため)。エラーは最後の行で見つかりました...誰がこれがなぜなのか説明できますか??

2 行目は粒子を塗りつぶします 3 行目は、異なるラベルを持つ周囲の粒子を削除します (これはすべてのラベルの for ループにあります)

前もって感謝します。さらにコードが必要な場合は質問してください。

################## その他のコード

ラベル付けされた粒子でいっぱいのスタックがあるので、やろうとしていることは 2 つあります。最初に、CoM_big_labelled_stack (および C) が行う labelled_stack に関して各粒子の重心を見つけます。座標を info というリスト (タプル) に格納します。また、重心を中心として粒子の周りに立方体のボックスを作成しようとしています (これは CoM 変数に関連しています)。そのため、最初に scipy のオブジェクト検索関数を使用して粒子を見つけ、次にこれらを使用します。粒子の周りに非立方体のボックスを作成し、その質量の中心を見つけます。次に、ボックスの最長の寸法を見つけて b と呼び、サイズ 2b の立方体のボックスを作成し、正しい位置に粒子で満たします。

申し訳ありませんが、このコードは混乱しています。私はPythonに非常に慣れていません

0 投票する
2 に答える
6466 参照

python - Pythonで画像処理を使用してオブジェクトの直径を見つける方法は?

いくつかの不規則なオブジェクトが含まれる画像が与えられた場合、個々の直径を見つけたいと思います。

この回答のおかげで、オブジェクトを識別する方法がわかりました。しかし、画像に写っている物体の最大径を測定することは可能でしょうか?

ドキュメントを調べましたscipy-ndimageが、専用の関数が見つかりませんでした。

オブジェクト識別コード:

画像: ここに画像の説明を入力

0 投票する
2 に答える
866 参照

python - 3D バイナリ イメージの作成

a100 個の x、y、z 座標のセットで構成される2D 配列 があります。

b座標が 0.00 ~ 1.00 の範囲の x、y、z 次元のそれぞれに 101 ピクセルの 3D バイナリ イメージを作成したいと思います。で定義された位置のピクセルaは値 1 を取り、他のすべてのピクセルは値 0 を持つ必要があります。

を使用して正しい形状のゼロの配列を作成できますが、b = np.zeros((101,101,101))座標とスライスをそれに割り当てて、を使用してゼロの配列を作成するにはどうすればよいaですか?

0 投票する
1 に答える
666 参照

python - numpy 3-d に適用される scipy ndimage 測定を高速化します

複数の大きなラベル付きの numpy 2d 配列 (10 000x10 000) があります。各ラベル (同じ番号の接続されたセル) について、別の numpy 3-d 配列の値 (平均、標準、最大など) に基づいて複数の測定値を計算したいと考えています。3-d numpy が 2-d に変換されている場合、これは scipy.ndimage.labeled_comprehension ツールで可能です。ただし、ラベルの数と配列のサイズがかなり大きいため、計算にはかなりの時間がかかります。入力画像の 3 次元ごとに同じラベルを反復処理しているため、現在のコードは冗長に見えます。コードを高速化する方法があるかどうか疑問に思っています (たとえば、3 つの scipy.ndimage.labeled_comprehension 計算を 1 つの計算に結合するなど)。

形状 (4200,3000,3) および 283047 ラベルのテスト データセットを使用すると、計算に 10:34 分かかりました


テストデータ

現在のコードと目的の出力

0 投票する
1 に答える
4974 参照

python - numpy/scipy を使用した 3D ボリュームの変換とリサンプリング

アップデート:

十分に文書化された ipython ノートブックを作成しました。コードだけが必要な場合は、最初の回答を見てください。

質問

40x40x40 のボリュームのグレースケール値があります。これは、回転/シフト/せん断する必要があります。

以下は同種変換の有用なコレクションです: http://www.lfd.uci.edu/~gohlke/code/transformations.py.html

ボリューム内のすべてのボクセルを (位置ベクトル、値) のペアのように扱う必要があります。次に、位置を変換し、変換されたベクトルのセットから各座標の新しい値をサンプリングします。

サンプリングはかなり難しいようで、これを見つけてうれしかったです :

指定された行列とオフセットを使用して、出力の各ポイントについて、アフィン変換によって入力の対応する座標を見つけます。これらの座標での入力の値は、要求された次数のスプライン補間によって決定されます。入力の境界外のポイントは、指定されたモードに従って塗りつぶされます。

いいね。

しかし、使い方は非常にトリッキーです。ここでは、誰かがそのコードを使用して画像を回転させています。彼の回転行列は 2x2 なので、同次座標ではありません。同次座標 (2D) の変換行列を関数に渡してみました:

エラーが発生します:

どうやらこれは同次座標では機能しません。これを使用してデータをシフトするにはどうすればよいですか?

これは 2D だけで、3D ではボリュームを回転させることさえできません。

エラーメッセージは同じです:affine matrix has wrong number of rows

この方法を使用してボリュームを変換することはできますか?

ヘルパー メソッドのコレクションを見つけました。シフトと回転は提供しますが、せん断は提供しません: https://docs.scipy.org/doc/scipy-0.14.0/reference/ndimage.html

しかし、カスタム変換マトリックスを使用したいと思います。

0 投票する
0 に答える
1370 参照

python - scipy.ndimage.filters.median_filter の実行が遅い理由

scipy.ndimage で Python を使用して 3D 画像解析を調べようとしています。scipy.ndimage.filters.median_filterサイズ (874、1150、1150) の 3D 画像にメディアン フィルターを適用すると、実行速度が非常に遅くなります。計算速度は明らかにフットプリントのサイズに大きく依存します。a はサイズ (874、1150、1150) の 3D イメージで、mf はモジュールです。

サイズを 5 に設定しても、結果が得られませんでした...この時間がかかるのは受け入れられないと思うからです。

それがなぜなのか、どうすれば改善できるのか知っていますか?

0 投票する
1 に答える
46 参照

python - フォルダー内の画像を繰り返し処理してメモリを爆破する

次のコードを使用して、フォルダー内の画像を反復処理し、ファイル名をキーとして辞書に保存していますが、フォルダー内の画像がメモリに簡単に収まる必要がある場合でも、メモリ要件が急速に増加しています。これはなぜですか、どうすれば修正できますか?