skimage.util#

汎用ユーティリティ。

このモジュールには、一般的に画像を取り扱うための多くのユーティリティ関数が含まれています。

apply_parallel

配列全体に並列に関数をマッピングします。

compare_images

2つの画像間の違いを示す画像を返します。

crop

各次元に沿ってcrop_widthで配列arをトリミングします。

dtype_limits

画像dtypeの強度制限、つまり(最小, 最大)タプルを返します。

img_as_bool

画像をブール形式に変換します。

img_as_float

画像を浮動小数点形式に変換します。

img_as_float32

画像を単精度(32ビット)浮動小数点形式に変換します。

img_as_float64

画像を倍精度(64ビット)浮動小数点形式に変換します。

img_as_int

画像を16ビット符号付き整数形式に変換します。

img_as_ubyte

画像を8ビット符号なし整数形式に変換します。

img_as_uint

画像を16ビット符号なし整数形式に変換します。

invert

画像を反転させます。

label_points

画像マスク上の座標に一意の整数ラベルを割り当てます

lookfor

scikit-imageのドキュメンテーションでキーワード検索を行い、結果を出力します。

map_array

入力配列の値からinput_valsをoutput_valsにマッピングします。

montage

複数の単一またはマルチチャネル画像のモンタージュを作成します。

random_noise

浮動小数点画像に様々なタイプのランダムノイズを追加する関数です。

regular_grid

ar_shapeに沿って規則的に間隔を空けたn_pointsを見つけます。

regular_seeds

~`n_points`の規則的に配置された非ゼロピクセルを持つ画像を返します。

slice_along_axes

指定された軸に沿って画像をスライスします。

unique_rows

2D配列から繰り返される行を削除します。

view_as_blocks

入力n次元配列のブロックビュー(再ストライドを使用)。

view_as_windows

入力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で変更: image1image2がそれぞれimage0image1に名前変更されました。

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

出力画像。

注釈

入力 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 と同じ形状

マップされた値の配列。

注釈

input_arrinput_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)

画像からのガボール/一次視覚野「単純細胞」

画像からのガボール/一次視覚野「単純細胞」

3D画像(細胞の)を探索する

3D画像(細胞の)を探索する

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のべき乗を使用します。その後、浮動小数点数の画像の範囲にスケールバックされます。

符号付き画像に対してポアソンノイズを生成するには、符号付き画像を一時的に浮動小数点領域の符号なし画像に変換し、ポアソンノイズを生成した後、元の範囲に戻します。

Cannyエッジ検出器

Cannyエッジ検出器

シンプルな画像スティッチングで画像を組み立てる

シンプルな画像スティッチングで画像を組み立てる

J不変性を用いたデノイザーのキャリブレーション

J不変性を用いたデノイザーのキャリブレーション

写真のノイズ除去

写真のノイズ除去

シフト不変ウェーブレットノイズ除去

シフト不変ウェーブレットノイズ除去

テクスチャを保持するための非局所平均ノイズ除去

テクスチャを保持するための非局所平均ノイズ除去

ウェーブレットノイズ除去

ウェーブレットノイズ除去

J不変性を用いたデノイザーのキャリブレーションに関する完全なチュートリアル

J不変性を用いたデノイザーのキャリブレーションに関する完全なチュートリアル

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)

繰り返される行が削除された入力配列のコピー。

例外:
ValueErrorarが2次元でない場合。

注釈

関数は、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]]]])

画像からのガボール/一次視覚野「単純細胞」

画像からのガボール/一次視覚野「単純細胞」