skimage.util
#
汎用ユーティリティ。
このモジュールには、一般的に画像を取り扱うための多くのユーティリティ関数が含まれています。
配列全体に並列に関数をマッピングします。 |
|
2つの画像間の違いを示す画像を返します。 |
|
各次元に沿って |
|
画像dtypeの強度制限、つまり(最小, 最大)タプルを返します。 |
|
画像をブール形式に変換します。 |
|
画像を浮動小数点形式に変換します。 |
|
画像を単精度(32ビット)浮動小数点形式に変換します。 |
|
画像を倍精度(64ビット)浮動小数点形式に変換します。 |
|
画像を16ビット符号付き整数形式に変換します。 |
|
画像を8ビット符号なし整数形式に変換します。 |
|
画像を16ビット符号なし整数形式に変換します。 |
|
画像を反転させます。 |
|
画像マスク上の座標に一意の整数ラベルを割り当てます |
|
scikit-imageのドキュメンテーションでキーワード検索を行い、結果を出力します。 |
|
入力配列の値からinput_valsをoutput_valsにマッピングします。 |
|
複数の単一またはマルチチャネル画像のモンタージュを作成します。 |
|
浮動小数点画像に様々なタイプのランダムノイズを追加する関数です。 |
|
|
|
~`n_points`の規則的に配置された非ゼロピクセルを持つ画像を返します。 |
|
指定された軸に沿って画像をスライスします。 |
|
2D配列から繰り返される行を削除します。 |
|
入力n次元配列のブロックビュー(再ストライドを使用)。 |
|
入力n次元配列のローリングウィンドウビュー。 |
- skimage.util.apply_parallel(function, array, chunks=None, depth=0, mode=None, extra_arguments=(), extra_keywords=None, *, dtype=None, compute=None, channel_axis=None)[ソース]#
配列全体に並列に関数をマッピングします。
与えられた深さと境界の種類で、配列を重複する可能性のあるチャンクに分割し、チャンクで与えられた関数を並列に呼び出し、チャンクを結合して、結果の配列を返します。
- パラメータ:
- function関数
引数として配列を取るマッピングされる関数。
- arrayNumPy配列またはDask配列
関数が適用される配列。
- chunksint, tuple, またはタプルのタプル、オプション
単一の整数は、配列全体にタイル化する必要がある正方形のチャンクの1辺の長さとして解釈されます。長さ
array.ndim
の1つのタプルはチャンクの形状を表し、配列全体にタイル化されます。長さndim
のタプルのリスト。ここで、各サブタプルは、対応する次元に沿ったチャンクサイズのシーケンスです。Noneの場合、配列は使用可能なcpuの数に基づいてチャンクに分割されます。チャンクの詳細については、ここのドキュメントを参照してください。channel_axis
がNoneでない場合、タプルは長さndim - 1
にでき、単一のチャンクがチャネル軸に沿って使用されます。- depthintまたはintのシーケンス、オプション
追加された境界セルの深さ。タプルを使用して、配列軸ごとに異なる深さを指定できます。デフォルトはゼロです。
channel_axis
がNoneでなく、長さndim - 1
のタプルが指定されている場合、チャネル軸に沿って深さ0が使用されます。- mode{‘reflect’, ‘symmetric’, ‘periodic’, ‘wrap’, ‘nearest’, ‘edge’}, オプション
外部境界パディングの種類。
- extra_argumentsタプル、オプション
関数に渡される引数のタプル。
- extra_keywords辞書、オプション
関数に渡されるキーワード引数の辞書。
- dtypeデータ型またはNone、オプション
function
出力のデータ型。Noneの場合、Daskは形状(1,) * ndim
のデータに関数を呼び出すことでこれを推測しようとします。RGBまたはマルチチャネルデータを予期する関数の場合、これは問題となる可能性があります。このような場合、ユーザーは代わりにこのdtype引数を手動で指定する必要があります。バージョン0.18で追加:
dtype
は0.18で追加されました。- computebool、オプション
True
の場合、NumPy配列を返すために積極的に計算します。False
の場合、遅延してDask配列を返すために計算します。None
(デフォルト)の場合、指定された配列タイプに基づいて計算します(NumPy配列の場合は積極的に、Dask配列の場合は遅延的に)。- channel_axisintまたはNone、オプション
Noneの場合、画像はグレースケール(単一チャネル)画像であると想定されます。それ以外の場合、このパラメータは配列のどの軸がチャネルに対応するかを示します。
- 戻り値:
- outndarrayまたはDask配列
操作の適用結果を返します。型は
compute
引数に依存します。
注釈
NumPyのエッジモード「symmetric」、「wrap」、および「edge」は、それぞれ同等の
dask
境界モード「reflect」、「periodic」、および「nearest」に変換されます。compute=False
を設定することは、後の操作をチェーンするのに役立ちます。たとえば、結果をプレビューするための領域選択や、メモリにロードする代わりに大きなデータをディスクに保存するなどです。
- skimage.util.compare_images(image0, image1, *, method='diff', n_tiles=(8, 8))[ソース]#
2つの画像間の違いを示す画像を返します。
バージョン0.16で追加。
- パラメータ:
- image0, image1ndarray、形状(M, N)
処理する画像、同じ形状である必要があります。
バージョン0.24で変更:
image1
とimage2
がそれぞれimage0
とimage1
に名前変更されました。- method文字列、オプション
比較に使用されるメソッド。有効な値は、{‘diff’, ‘blend’, ‘checkerboard’}です。詳細については、注釈セクションに記載されています。
バージョン0.24で変更: このパラメータと以下のパラメータはキーワード専用です。
- n_tilesタプル、オプション
checkerboard
メソッドでのみ使用されます。画像を分割するタイルの数(行、列)を指定します。
- 戻り値:
- comparisonndarray、形状(M, N)
違いを示す画像。
注釈
'diff'
は、2つの画像間の絶対的な違いを計算します。'blend'
は、平均値を計算します。'checkerboard'
は、交互に最初の画像と2番目の画像を表示するディメンションn_tiles
のタイルを作成します。画像はチェッカーボードメソッドで比較するには2次元である必要があることに注意してください。
- skimage.util.crop(ar, crop_width, copy=False, order='K')[ソース]#
各次元に沿って
crop_width
で配列ar
をトリミングします。- パラメータ:
- arランク N の配列状のオブジェクト
入力配列。
- crop_width{シーケンス, int}
各軸の端から削除する値の数。
((before_1, after_1),
...(before_N, after_N))
は、各軸の開始と終了で一意なクロップ幅を指定します。((before, after),) または (before, after)
は、すべての軸に対して固定の開始および終了クロップを指定します。整数n
の場合、(n,)
またはn
は、すべての軸に対して before = after =n
の省略形です。- copybool, オプション
True
の場合、返される配列が連続コピーであることを保証します。通常、クロップ操作は、基になる入力配列の不連続なビューを返します。- order{‘C’, ‘F’, ‘A’, ‘K’}, オプション
copy==True
の場合、コピーのメモリレイアウトを制御します。np.copy
を参照してください。
- 戻り値:
- croppedarray
クロップされた配列。
copy=False
(デフォルト)の場合、これは入力配列のスライスされたビューです。
- skimage.util.dtype_limits(image, clip_negative=False)[ソース]#
画像の dtype の強度制限、つまり (最小, 最大) タプルを返します。
- パラメータ:
- imagendarray
入力画像。
- clip_negativebool, オプション
True の場合、画像の dtype が負の値を許可している場合でも、負の範囲 (つまり、最小強度に対して 0 を返す) をクリップします。
- 戻り値:
- imin, imaxtuple
下限と上限の強度制限。
- skimage.util.img_as_bool(image, force_copy=False)[ソース]#
画像をブール形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outbool (
bool_
) の ndarray 出力画像。
- outbool (
注釈
入力 dtype の正の範囲の上半分は True、下半分は False です。すべての負の値 (存在する場合) は False です。
- skimage.util.img_as_float(image, force_copy=False)[ソース]#
画像を浮動小数点形式に変換します。
この関数は、
img_as_float64
に似ていますが、低精度の浮動小数点配列をfloat64
に変換することはありません。- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outfloat の ndarray
出力画像。
注釈
浮動小数点画像の範囲は、それぞれ符号なしまたは符号付きデータ型から変換する場合、[0.0, 1.0] または [-1.0, 1.0] です。入力画像が float 型の場合、強度値は変更されず、[0.0, 1.0] または [-1.0, 1.0] の範囲外になる可能性があります。
- skimage.util.img_as_float32(image, force_copy=False)[ソース]#
画像を単精度(32ビット)浮動小数点形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outfloat32 の ndarray
出力画像。
注釈
浮動小数点画像の範囲は、それぞれ符号なしまたは符号付きデータ型から変換する場合、[0.0, 1.0] または [-1.0, 1.0] です。入力画像が float 型の場合、強度値は変更されず、[0.0, 1.0] または [-1.0, 1.0] の範囲外になる可能性があります。
- skimage.util.img_as_float64(image, force_copy=False)[ソース]#
画像を倍精度(64ビット)浮動小数点形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outfloat64 の ndarray
出力画像。
注釈
浮動小数点画像の範囲は、それぞれ符号なしまたは符号付きデータ型から変換する場合、[0.0, 1.0] または [-1.0, 1.0] です。入力画像が float 型の場合、強度値は変更されず、[0.0, 1.0] または [-1.0, 1.0] の範囲外になる可能性があります。
- skimage.util.img_as_int(image, force_copy=False)[ソース]#
画像を16ビット符号付き整数形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outint16 の ndarray
出力画像。
注釈
値は -32768 から 32767 の間でスケーリングされます。入力データ型が正のみ (例: uint8) の場合、出力画像には正の値のみが含まれます。
- skimage.util.img_as_ubyte(image, force_copy=False)[ソース]#
画像を8ビット符号なし整数形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outubyte (uint8) の ndarray
出力画像。
注釈
負の入力値はクリップされます。正の値は 0 から 255 の間でスケーリングされます。
- skimage.util.img_as_uint(image, force_copy=False)[ソース]#
画像を16ビット符号なし整数形式に変換します。
- パラメータ:
- imagendarray
入力画像。
- force_copybool, オプション
現在の dtype に関係なく、データのコピーを強制します。
- 戻り値:
- outuint16 の ndarray
出力画像。
注釈
負の入力値はクリップされます。正の値は 0 から 65535 の間でスケーリングされます。
- skimage.util.invert(image, signed_float=False)[ソース]#
画像を反転させます。
入力画像の強度範囲を反転します。これにより、dtype の最大値が dtype の最小値になり、逆もまた同様になります。この操作は、入力 dtype によって若干異なります。
符号なし整数: 画像を dtype の最大値から減算します
符号付き整数: 画像を -1 から減算します (注を参照)
浮動小数点: 画像を 1 から減算します (signed_float が False の場合、画像は符号なしであると想定します)、または 0 から減算します (signed_float が True の場合)。
説明については、例を参照してください。
- パラメータ:
- imagendarray
入力画像。
- signed_floatbool, オプション
True で、画像が float 型の場合、範囲は [-1, 1] であると想定されます。 False で、画像が float 型の場合、範囲は [0, 1] であると想定されます。
- 戻り値:
- invertedndarray
反転された画像。
注釈
理想的には、符号付き整数の場合、単に -1 を掛ければ済みます。ただし、符号付き整数の範囲は非対称です。たとえば、np.int8 の場合、可能な値の範囲は [-128, 127] であり、-128 * -1 は -128 に等しくなります! -1 から減算することで、最大 dtype 値を最小値に正しくマッピングします。
サンプル
>>> img = np.array([[100, 0, 200], ... [ 0, 50, 0], ... [ 30, 0, 255]], np.uint8) >>> invert(img) array([[155, 255, 55], [255, 205, 255], [225, 255, 0]], dtype=uint8) >>> img2 = np.array([[ -2, 0, -128], ... [127, 0, 5]], np.int8) >>> invert(img2) array([[ 1, -1, 127], [-128, -1, -6]], dtype=int8) >>> img3 = np.array([[ 0., 1., 0.5, 0.75]]) >>> invert(img3) array([[1. , 0. , 0.5 , 0.25]]) >>> img4 = np.array([[ 0., 1., -1., -0.25]]) >>> invert(img4, signed_float=True) array([[-0. , -1. , 1. , 0.25]])
- skimage.util.label_points(coords, output_shape)[ソース]#
画像マスク上の座標に一意の整数ラベルを割り当てます
- パラメータ:
- coords: ndarray
次元Dを持つN個の座標の配列
- output_shape: tuple
coords
にラベル付けするマスクの形状
- 戻り値:
- labels: ndarray
coords
に一意の整数ラベルを含むゼロのマスク
注釈
ラベルは整数に変換された座標に割り当てられ、0から始まるとみなされます。
マスクの範囲外の座標はIndexErrorを発生させます。
負の座標はValueErrorを発生させます。
サンプル
>>> import numpy as np >>> from skimage.util._label import label_points >>> coords = np.array([[0, 1], [2, 2]]) >>> output_shape = (5, 5) >>> mask = label_points(coords, output_shape) >>> mask array([[0, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 2, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]], dtype=uint64)
- skimage.util.lookfor(what)[ソース]#
scikit-imageのドキュメンテーションでキーワード検索を行い、結果を出力します。
警告
この関数は、scikit-imageのパブリックAPIの一部ではない結果も出力する可能性があります。
- パラメータ:
- whatstr
検索する単語。
サンプル
>>> import skimage as ski >>> ski.util.lookfor('regular_grid') Search results for 'regular_grid' --------------------------------- skimage.util.regular_grid Find `n_points` regularly spaced along `ar_shape`. skimage.util.lookfor Do a keyword search on scikit-image docstrings and print results.
- skimage.util.map_array(input_arr, input_vals, output_vals, out=None)[ソース]#
入力配列の値からinput_valsをoutput_valsにマッピングします。
- パラメータ:
- input_arrintの配列, shape (M[, …])
入力ラベル画像。
- input_valsintの配列, shape (K,)
マップ元の値。
- output_vals配列, shape (K,)
マップ先の値。
- out: 配列, `input_arr`と同じ形状
出力配列。提供されていない場合は作成されます。
output_vals
と同じdtypeにする必要があります。
- 戻り値:
- out配列,
input_arr
と同じ形状 マップされた値の配列。
- out配列,
注釈
input_arr
にinput_vals
でカバーされていない値が含まれている場合、それらは0に設定されます。サンプル
>>> import numpy as np >>> import skimage as ski >>> ski.util.map_array( ... input_arr=np.array([[0, 2, 2, 0], [3, 4, 5, 0]]), ... input_vals=np.array([1, 2, 3, 4, 6]), ... output_vals=np.array([6, 7, 8, 9, 10]), ... ) array([[0, 7, 7, 0], [8, 9, 0, 0]])
- skimage.util.montage(arr_in, fill='mean', rescale_intensity=False, grid_shape=None, padding_width=0, *, channel_axis=None)[ソース]#
複数の単一またはマルチチャネル画像のモンタージュを作成します。
同じ形状の単一(グレースケール)またはマルチチャネル(カラー)画像のアンサンブルを表す入力配列から、長方形のモンタージュを作成します。
たとえば、次の
arr_in
で呼び出されたmontage(arr_in)
1
2
3
は以下を返します
1
2
3
ここで、「*」パッチは
fill
パラメータによって決定されます。- パラメータ:
- arr_inndarray, shape (K, M, N[, C])
同じ形状の
K
個の画像のアンサンブルを表す配列。- fillfloat または float の配列のようなもの, あるいは ‘mean’, オプション
パディング領域や出力配列の余分なタイルを埋める値。シングルチャネルコレクションの場合は
float
である必要があります。マルチチャネルコレクションの場合は、チャネル数の形状の配列のようなものにする必要があります。mean
の場合、すべての画像の平均値を使用します。- rescale_intensitybool, オプション
各画像の強度を[0, 1]にリスケールするかどうか。
- grid_shapetuple, オプション
モンタージュの目的のグリッド形状
(ntiles_row, ntiles_column)
。デフォルトのアスペクト比は正方形です。- padding_widthint, オプション
タイル間およびタイルと境界の間の間隔のサイズ。ゼロ以外の場合、個々の画像の境界を認識しやすくします。
- channel_axisintまたはNone、オプション
Noneの場合、画像はグレースケール(単一チャネル)画像であると想定されます。それ以外の場合、このパラメータは配列のどの軸がチャネルに対応するかを示します。
- 戻り値:
- arr_out(K*(M+p)+p, K*(N+p)+p[, C]) ndarray
パディング
p
を含む、入力画像を貼り合わせた出力配列。
サンプル
>>> import numpy as np >>> from skimage.util import montage >>> arr_in = np.arange(3 * 2 * 2).reshape(3, 2, 2) >>> arr_in array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]]]) >>> arr_out = montage(arr_in) >>> arr_out.shape (4, 4) >>> arr_out array([[ 0, 1, 4, 5], [ 2, 3, 6, 7], [ 8, 9, 5, 5], [10, 11, 5, 5]]) >>> arr_in.mean() 5.5 >>> arr_out_nonsquare = montage(arr_in, grid_shape=(1, 3)) >>> arr_out_nonsquare array([[ 0, 1, 4, 5, 8, 9], [ 2, 3, 6, 7, 10, 11]]) >>> arr_out_nonsquare.shape (2, 6)
- skimage.util.random_noise(image, mode='gaussian', rng=None, clip=True, **kwargs)[ソース]#
浮動小数点画像に様々なタイプのランダムノイズを追加する関数です。
- パラメータ:
- imagendarray
入力画像データ。 floatに変換されます。
- modestr, オプション
追加するノイズのタイプを選択する以下の文字列のいずれか
- ‘gaussian’ (デフォルト)
ガウス分布の加法性ノイズ。
- ‘localvar’
ガウス分布の加法性ノイズ。
image
の各点で指定された局所分散。- ‘poisson’
データから生成されたポアソン分布のノイズ。
- ‘salt’
ランダムなピクセルを1に置き換えます。
- ‘pepper’
ランダムなピクセルを0(符号なし画像の場合)または-1(符号付き画像の場合)に置き換えます。
- ‘s&p’
ランダムなピクセルを1または
low_val
で置き換えます。low_val
は符号なし画像の場合は0、符号付き画像の場合は-1です。- ‘speckle’
out = image + n * image
を使用した乗法性ノイズ。ここで、n
は指定された平均と分散を持つガウスノイズです。
- rng{
numpy.random.Generator
, int}, オプション 擬似乱数ジェネレーター。デフォルトでは、PCG64ジェネレーターが使用されます(
numpy.random.default_rng()
を参照)。rng
がintの場合、ジェネレーターのシードとして使用されます。- clipbool, オプション
True(デフォルト)の場合、
'speckle'
、'poisson'
、および'gaussian'
モードでノイズを適用した後、出力はクリップされます。これは、適切な画像データ範囲を維持するために必要です。Falseの場合、クリッピングは適用されず、出力は範囲[-1, 1]を超える可能性があります。- meanfloat, オプション
ランダム分布の平均。 'gaussian'と'speckle'で使用されます。デフォルト: 0。
- varfloat, オプション
ランダム分布の分散。 'gaussian'と'speckle'で使用されます。注:分散=(標準偏差)** 2。デフォルト:0.01
- local_varsndarray, オプション
画像内のすべての点で局所分散を定義する、
image
と同じ形状の正の浮動小数点数の配列。 'localvar'で使用されます。- amountfloat, オプション
[0, 1]の範囲のノイズで置き換える画像ピクセルの割合。 'salt'、'pepper'、および'salt & pepper'で使用されます。デフォルト:0.05
- salt_vs_pepperfloat, オプション
[0, 1]の範囲の's&p'の塩と胡椒のノイズの割合。値が高いほど、塩が多くなります。デフォルト:0.5(同量)
- 戻り値:
- outndarray
入力
image
がそれぞれ符号なしまたは符号付きの場合、[0, 1]または[-1, 1]の範囲の出力浮動小数点画像データ。
注釈
スペックル、ポアソン、ローカルバー、およびガウスノイズは、有効な画像範囲外のノイズを生成する可能性があります。デフォルトでは、これらの値をクリップ(エイリアス化しない)しますが、
clip=False
を設定することで保持できます。この場合、出力に範囲[0, 1]または[-1, 1]外の値が含まれる可能性があることに注意してください。このオプションは注意して使用してください。中間計算で浮動小数点数の画像が正の値のみであるのが一般的なため、dtypeだけでは入力が符号付きかどうかを直感的に判断できません。代わりに、負の値が明示的に検索されます。負の値が見つかった場合にのみ、この関数は符号付き入力を想定します。予期しない結果が発生するのは、まれに、露出が不十分な場合(例えば、符号付き
image
ですべての値が50パーセントグレー以上の場合)に限られます。この場合、入力を正の領域に手動でスケーリングすることで問題を解決できます。ポアソン分布は正の整数に対してのみ定義されます。このノイズタイプを適用するには、画像内の一意の値の数を調べ、浮動小数点数の結果をスケールアップするために、次に近い2のべき乗を使用します。その後、浮動小数点数の画像の範囲にスケールバックされます。
符号付き画像に対してポアソンノイズを生成するには、符号付き画像を一時的に浮動小数点領域の符号なし画像に変換し、ポアソンノイズを生成した後、元の範囲に戻します。
- skimage.util.regular_grid(ar_shape, n_points)[ソース]#
ar_shape
に沿って規則的に間隔を空けたn_points
を見つけます。返される点(スライスとして)は、可能な限り立方体状の間隔で配置されている必要があります。基本的に、点は入力配列サイズのN乗根で間隔が空けられており、ここでNは次元数です。ただし、配列の次元が完全なステップサイズに適合しない場合は、「破棄」され、残りの次元のみに対して計算が行われます。
- パラメータ:
- ar_shape整数配列形式
グリッドを埋め込む空間の形状。
len(ar_shape)
は次元数です。- n_points整数
空間に埋め込む点の(概算)数。
- 戻り値:
- slicesスライスオブジェクトのタプル
ar_shape
の各次元に沿ったスライス。すべてのスライスの交差が、規則的に配置された点の座標を与えるようにします。バージョン 0.14.1 で変更: scikit-image 0.14.1 および 0.15 では、Numpy 1.15 以降との互換性を確保するために、戻り値の型がリストからタプルに変更されました。コードで返された結果をリストにする必要がある場合は、この関数の出力をリストに変換できます。
>>> result = list(regular_grid(ar_shape=(3, 20, 40), n_points=8))
サンプル
>>> ar = np.zeros((20, 40)) >>> g = regular_grid(ar.shape, 8) >>> g (slice(5, None, 10), slice(5, None, 10)) >>> ar[g] = 1 >>> ar.sum() 8.0 >>> ar = np.zeros((20, 40)) >>> g = regular_grid(ar.shape, 32) >>> g (slice(2, None, 5), slice(2, None, 5)) >>> ar[g] = 1 >>> ar.sum() 32.0 >>> ar = np.zeros((3, 20, 40)) >>> g = regular_grid(ar.shape, 8) >>> g (slice(1, None, 3), slice(5, None, 10), slice(5, None, 10)) >>> ar[g] = 1 >>> ar.sum() 8.0
- skimage.util.regular_seeds(ar_shape, n_points, dtype=<class 'int'>)[ソース]#
~`n_points`の規則的に配置された非ゼロピクセルを持つ画像を返します。
- パラメータ:
- ar_shape整数のタプル
目的の出力画像の形状。
- n_points整数
目的のゼロ以外の点の数。
- dtypenumpyデータ型、オプション
出力の目的のデータ型。
- 戻り値:
- seed_img整数またはブール値の配列
目的の画像。
サンプル
>>> regular_seeds((5, 5), 4) array([[0, 0, 0, 0, 0], [0, 1, 0, 2, 0], [0, 0, 0, 0, 0], [0, 3, 0, 4, 0], [0, 0, 0, 0, 0]])
- skimage.util.slice_along_axes(image, slices, axes=None, copy=False)[ソース]#
指定された軸に沿って画像をスライスします。
- パラメータ:
- imagendarray
入力画像。
- slicesa < b である 2 タプルのリスト (a, b) 。
axes
の各軸に対して、スライスする対応する 2 タプル(min_val, max_val)
(Python スライスと同様に、max_val
は非包含です)。- axes整数またはタプル、オプション
slices
で指定された制限に対応する軸。 Noneの場合、軸はslices
の長さまで昇順になります。- copybool, オプション
Trueの場合、出力が
image
のビューではないことを確認します。
- 戻り値:
- outndarray
指定されたスライスと軸に対応する
image
の領域。
サンプル
>>> from skimage import data >>> img = data.camera() >>> img.shape (512, 512) >>> cropped_img = slice_along_axes(img, [(0, 100)]) >>> cropped_img.shape (100, 512) >>> cropped_img = slice_along_axes(img, [(0, 100), (0, 100)]) >>> cropped_img.shape (100, 100) >>> cropped_img = slice_along_axes(img, [(0, 100), (0, 75)], axes=[1, 0]) >>> cropped_img.shape (75, 100)
- skimage.util.unique_rows(ar)[ソース]#
2D配列から繰り返される行を削除します。
特に、形状(Npoints, Ndim)の座標の配列が与えられた場合、繰り返される点を削除します。
- パラメータ:
- arndarray, 形状 (M, N)
入力配列。
- 戻り値:
- ar_outndarray, 形状 (P, N)
繰り返される行が削除された入力配列のコピー。
- 例外:
- ValueError
ar
が2次元でない場合。
- ValueError
注釈
関数は、
ar
がC連続でない場合はそのコピーを生成します。これは、大きな入力配列の場合、パフォーマンスに悪影響を与えます。サンプル
>>> ar = np.array([[1, 0, 1], ... [0, 1, 0], ... [1, 0, 1]], np.uint8) >>> unique_rows(ar) array([[0, 1, 0], [1, 0, 1]], dtype=uint8)
- skimage.util.view_as_blocks(arr_in, block_shape)[ソース]#
入力n次元配列のブロックビュー(再ストライドを使用)。
ブロックは、入力配列の重複しないビューです。
- パラメータ:
- arr_inndarray, 形状 (M[, …])
入力配列。
- block_shapeタプル
ブロックの形状。各次元は、
arr_in
の対応する次元を均等に分割する必要があります。
- 戻り値:
- arr_outndarray
入力配列のブロックビュー。
サンプル
>>> import numpy as np >>> from skimage.util.shape import view_as_blocks >>> A = np.arange(4*4).reshape(4,4) >>> A array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> B = view_as_blocks(A, block_shape=(2, 2)) >>> B[0, 0] array([[0, 1], [4, 5]]) >>> B[0, 1] array([[2, 3], [6, 7]]) >>> B[1, 0, 1, 1] 13
>>> A = np.arange(4*4*6).reshape(4,4,6) >>> A array([[[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]], [[24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35], [36, 37, 38, 39, 40, 41], [42, 43, 44, 45, 46, 47]], [[48, 49, 50, 51, 52, 53], [54, 55, 56, 57, 58, 59], [60, 61, 62, 63, 64, 65], [66, 67, 68, 69, 70, 71]], [[72, 73, 74, 75, 76, 77], [78, 79, 80, 81, 82, 83], [84, 85, 86, 87, 88, 89], [90, 91, 92, 93, 94, 95]]]) >>> B = view_as_blocks(A, block_shape=(1, 2, 2)) >>> B.shape (4, 2, 3, 1, 2, 2) >>> B[2:, 0, 2] array([[[[52, 53], [58, 59]]], [[[76, 77], [82, 83]]]])
- skimage.util.view_as_windows(arr_in, window_shape, step=1)[ソース]#
入力n次元配列のローリングウィンドウビュー。
ウィンドウは、入力配列の重複するビューであり、隣接するウィンドウは、単一行または列(またはより高い次元のインデックス)によってシフトされます。
- パラメータ:
- arr_inndarray, 形状 (M[, …])
入力配列。
- window_shape整数または arr_in.ndim の長さのタプル
ローリングウィンドウビューの基本的なn次元直交体(より正確には超矩形 [1]として知られています)の形状を定義します。整数が指定されている場合、形状は、その値で与えられる辺の長さの超立方体になります。
- step整数または arr_in.ndim の長さのタプル
抽出を実行するステップサイズを示します。整数が与えられた場合、ステップはすべての次元で均一です。
- 戻り値:
- arr_outndarray
入力配列の(ローリング)ウィンドウビュー。
注釈
メモリ使用量に関しては、ローリングビューには非常に注意する必要があります。実際、「ビュー」はベース配列と同じメモリフットプリントを持ちますが、この「ビュー」が計算で使用されるときに現れる実際の配列は、一般的に元の配列よりも(はるかに)大きい配列です。特に2次元以上の配列の場合です。
たとえば、
float64
のサイズが (100, 100, 100) の 3 次元配列を考えてみましょう。この配列は、ストレージに約 8*100**3 バイト、つまりわずか 8 MB を必要とします。この配列に対して (3, 3, 3) のウィンドウでローリングビューを作成すると、ローリングビューの仮想サイズ(たとえば、ビューの形状を変更する場合)は 8*(100-3+1)**3*3**3 になり、約 203 MB になります。入力配列の次元が大きくなるにつれて、スケーリングはさらに悪化します。参照
サンプル
>>> import numpy as np >>> from skimage.util.shape import view_as_windows >>> A = np.arange(4*4).reshape(4,4) >>> A array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> window_shape = (2, 2) >>> B = view_as_windows(A, window_shape) >>> B[0, 0] array([[0, 1], [4, 5]]) >>> B[0, 1] array([[1, 2], [5, 6]])
>>> A = np.arange(10) >>> A array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> window_shape = (3,) >>> B = view_as_windows(A, window_shape) >>> B.shape (8, 3) >>> B array([[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9]])
>>> A = np.arange(5*4).reshape(5, 4) >>> A array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]) >>> window_shape = (4, 3) >>> B = view_as_windows(A, window_shape) >>> B.shape (2, 2, 4, 3) >>> B array([[[[ 0, 1, 2], [ 4, 5, 6], [ 8, 9, 10], [12, 13, 14]], [[ 1, 2, 3], [ 5, 6, 7], [ 9, 10, 11], [13, 14, 15]]], [[[ 4, 5, 6], [ 8, 9, 10], [12, 13, 14], [16, 17, 18]], [[ 5, 6, 7], [ 9, 10, 11], [13, 14, 15], [17, 18, 19]]]])