32.3 画像の表現
一般的に、Octave は、グレースケール画像、RGB 画像、バイナリ画像、インデックス画像の 4 種類の画像をサポートしています。グレースケール画像は、各要素がピクセルの強度に対応する M x N の行列で表されます。RGB 画像は、各 3 ベクトルが各ピクセルの赤、緑、青の強度に対応する M x N x 3 の配列で表されます。
グレースケールまたは RGB イメージのピクセル値の実際の意味は、マトリックスのクラスによって異なります。マトリックスが クラスの場合、 doubleピクセルの強度は 0 から 1 の間、クラスの場合、 uint8強度は 0 から 255 の間、クラスの場合、 uint16強度は 0 から 65535 の間になります。
バイナリ画像は、クラスの M 行 N 列の行列ですlogical。バイナリ画像内のピクセルは、 の場合は黒false、 の場合は白になりますtrue。
インデックス付きイメージは、M 行 N 列の整数マトリックスと C 行 3 列のカラー マップで構成されます。各整数はカラー マップのインデックスに対応し、カラー マップの各行は RGB カラーに対応します。カラー マップは、double0 から 1 までの値を持つクラスである必要があります。
画像形式間の変換には、以下の便利な関数が利用できます。
: dimg = im2double (img)
: dimg = im2double (img, "indexed")
画像を倍精度に変換します。
imgから倍精度へ の変換は、入力画像の種類によって異なります。次の入力クラスがサポートされています。
'uint8、uint16、int16'
クラスの値の範囲は[0 1]の間隔にスケーリングされます。
'論理的な'
真値と偽値にはそれぞれ 1 と 0 の値が割り当てられます。
'シングル'
値は double にキャストされます。
'ダブル'
同じ画像を返します。
imgがインデックス付き画像の場合、2 番目の引数は文字列である必要があります"indexed"。その場合、img は浮動小数点クラスまたは符号なし整数クラスのいずれかである必要があり、単純に double にキャストされます。整数クラスの場合、+1 のオフセットが適用されます。
参照: double。
: img = gray2ind (I)
: img = gray2ind (I, n)
: img = gray2ind (BW)
: img = gray2ind (BW, n)
: gray2ind [img, map] = (…)
グレースケールまたはバイナリ強度画像をインデックス付き画像に変換します。
インデックス画像はn 個の異なる強度値で構成されます。n が指定されていない場合、グレースケール画像の場合はデフォルトで 64、バイナリ白黒画像の場合は 2 になります。
nが 256 以下の 場合、出力imgのクラスは uint8 になります。それ以外の場合、戻りクラスは uint16 になります。
参照: ind2gray、rgb2ind。
: I = ind2gray (x, map)
カラーインデックス画像をグレースケール強度画像に変換します。
画像x は、カラーマップmapを使用して変換されるインデックス付き画像である必要があります。mapに画像に必要な色数が足りない場合、範囲外のxのピクセルは、グレースケールに変換する前にマップの最後の色にマッピングされます。
出力Iは入力xと同じクラスでありuint8、、、、またはのいずれuint16かになります。 singledouble
rgb2gray実装上の注意: 色をグレースケールの強度に変換する方法はいくつかあります。この関数は、から取得した輝度値を使用しますI = 0.299*R + 0.587*G + 0.114*B。他の方法としては、 からの値コンポーネントを使用するrgb2hsvか、 からの単一の色チャネルを使用する方法がありますind2rgb。
参照: gray2ind、ind2rgb。
: rgb2ind [x, map] = (rgb)
: rgb2ind [x, map] = (R, G, B)
赤緑青 (RGB) カラー スペースの画像をインデックス付き画像に変換します。
入力画像rgb は、サイズ MxNx3 の単一の行列として指定することも、3 つの個別の変数R、G、 B、つまり 3 つのカラー チャネル (赤、緑、青) として指定することもできます。
インデックス付き画像xとカラーマップmapを出力し、入力とまったく同じ画像を解釈します。ディザリングやその他の形式の色量子化は実行されません。インデックス付き画像xの出力クラスは、uint8、uint16、または double のいずれかになります。これは、画像内の一意の色の数 ( map の行数と同じになります) を順番に指定するために必要なものです。
多次元インデックス画像 (サイズ MxNx3xK) もサポートされており、単一の入力 ( rgb ) または 3 つのカラー チャネルを個別の変数として使用できます。
参照: ind2rgb、rgb2hsv、rgb2gray。
: rgb = ind2rgb (x, map)
: ind2rgb [R, G, B] = (x, map)
インデックス付き画像を赤、緑、青のカラー コンポーネントに変換します。
画像x は、カラーマップmapを使用して変換されるインデックス付き画像である必要があります。mapに画像に必要な色が含まれていない場合、範囲外のxのピクセルはマップの最後の色にマップされます。
出力は単一の RGB 画像 (MxNx3 行列、ここで M と N は元の画像のx次元で、赤、緑、青の各チャネルに 1 つずつ) になります。または、サイズ MxN の個別の赤、緑、青のカラー行列を返すこともできます。
多次元インデックス画像 (サイズ MxNx1xK) もサポートされています。
参照: rgb2ind、ind2gray、hsv2rgb。
Octave には、ムービー フレーム構造を生成して操作するためのツールも用意されています。これらの構造は、画像データ ("cdata"フィールド) と対応するカラーマップ ("colormap"フィールド) をカプセル化します。
:frame = フレームを取得する ()
:frame = フレームを取得する (hax)
:frame = フレームを取得する (hfig)
:frame = フレームを取得する (…, rect)
図形または軸をムービーのフレーム構造としてキャプチャします。
引数を指定しない場合は、目盛りラベル、タイトル、x/y/z ラベルを除く現在の軸をキャプチャします。返される構造体framecdataには、実際の画像データが物理的な画面ピクセル単位の NxMx3 (RGB) uint8 マトリックスの形式で含まれるフィールドと、 MATLAB とのcolormap互換性のために用意されているが常に空であるフィールドがあります。
最初の引数hax が軸ハンドルである場合、 によって返される現在の軸ではなく、この軸をキャプチャしますgca。
最初の引数hfigが図のハンドルの場合、対応する図のキャンバス全体がキャプチャされます。
最後に、2 番目の引数rectが指定されている場合、これはキャプチャする図内の領域を定義する 4 要素のベクトル ([左下 幅 高さ]) である必要があります。図の"units" プロパティに関係なく、rect はピクセル単位で定義する必要があります。
参照: im2frame、frame2im、movie。
:映画 (mov)
:映画 (mov, n)
:映画 (mov, n, fps)
:映画 (h, …)
フレーム構造の配列によって定義されたムービーを再生します。
ムービーmov は、関数によって返されるフィールド"cdata"とを持つフレームの構造体配列である必要があります 。デフォルトでは、すべてのイメージが現在の軸に 12 fps で 1 回表示されます。 "colormap"getframe
オプションの引数nは、ムービーが表示される回数と表示される特定のフレームを制御するスカラーまたは整数のベクトルです。
最初の要素:
( 1)>0
映画をn (1)回再生します。
( 1)<0
映画の時間を順方向と逆方向の順番で交互に再生します。 abs (n(1)
その他の要素(ある場合):
表示される mov内のフレームのインデックス。
最初の引数が図または軸hへのハンドルである場合、ムービーは現在の軸ではなく、その図または軸で再生されます。
参照: getframe、im2frame、frame2im。
:フレーム2im [x, map] = (frame)
ムービー フレームをインデックス付きイメージに変換します。
ムービー フレームは、フィールド"cdata"と を持つ単純な構造体です"colormap"。
フレームが構造体配列の場合、N 次元の画像またはムービーがサポートされます。このような場合、 x はインデックス付きムービーの場合は MxNx1xK、RGB ムービーの場合は MxNx3xK となり、各フレームは 4 次元に沿って連結されます。
参照: im2frame、getframe。
: frame = im2frame (rgb)
: frame = im2frame (x, map)
画像をムービーフレームに変換します。
ムービー フレームは、フィールド"cdata"と を持つ単純な構造体です"colormap"。
N 次元画像のサポートは、各画像投影 (RGB 画像の場合は行列サイズ MxN および MxNx3) が 4 次元に沿って連結されている場合に提供されます。このような場合、返される値は構造体配列です。
参照: frame2im。
このcolormap関数は、現在の軸または図のカラーマップを変更するために使用されます。
:cmap = カラーマップ ()
:cmap = カラーマップ (map)
:cmap = カラーマップ ("default")
:cmap = カラーマップ (map_name)
:cmap = カラーマップ (hax, …)
:カラーマップ map_name
現在のカラーマップを照会または設定します。
入力引数がない場合、colormap現在のカラーマップを返します。
colormap (map)現在のカラーマップをmapに設定します。カラーマップはn行 3 列の行列である必要があります。列にはそれぞれ赤、緑、青の強度が含まれます。すべてのエントリは 0 から 1 までの範囲でなければなりません。新しいカラーマップが返されます。
colormap ("default")デフォルトのカラーマップ ( viridis64 エントリのマップ) を復元します。デフォルトのカラーマップが返されます。
マップは、カラーマップを返す関数の名前である 文字列map_nameで指定することもできます。
最初の引数hax が軸ハンドルである場合、それらの軸のカラーマップが照会または設定されます。
便宜上、この関数をコマンド形式 で使用することもできます。 colormap map_name
組み込みカラーマップのリストは次のとおりです。
地図 説明
ビリディス デフォルト
ターボ 青、シアン、緑、黄、赤を横断するカラーマップ。ジェットの最新の代替品。
ジェット 青、シアン、緑、黄、赤を横断するカラーマップ。
キューブヘリックス 強度が増すにつれて黒、青、緑、赤、白を移動するカラーマップ。
ヘシュ 色相、彩度、明度の空間を巡回する循環カラーマップ。
虹 赤、黄、青、緑、紫を横断するカラーマップ。
————- ———————————————————————————————
熱い 黒、赤、オレンジ、黄色、白を横断するカラーマップ。
いいね シアン、紫、マゼンタを横断するカラーマップ。
春 マゼンタから黄色までのカラーマップ。
夏 緑から黄色まで移動するカラーマップ。
秋 赤、オレンジ、黄色を横断するカラーマップ。
冬 青から緑へ移動するカラーマップ。
————- ———————————————————————————————
グレー グレーの濃淡で黒から白へ変化するカラーマップ。
骨 黒、灰青、白を横断するカラーマップ。
銅 黒から明るい銅色までのカラーマップ。
ピンク 黒、グレーピンク、白を横断するカラーマップ。
海 黒、濃紺、白を横断するカラーマップ。
————- ———————————————————————————————
カラーキューブ RGB カラー スペースで等間隔に配置された色。
フラグ 赤、白、青、黒の循環4色マップ。
行 軸プロパティからの色を使用した循環カラーマップ"ColorOrder"。
プリズム 赤、オレンジ、黄、緑、青、紫の 6 色の循環マップ。
————- ———————————————————————————————
白 すべて白のカラーマップ(色なし)。
参照: viridis、turbo、jet、cubehelix、hsv、rainbow、hot、cool、spring、summer、autumn、winter、gray、bone、copper、pink、ocean、colorcube、flag、lines、prism、white。
: tf = iscolormap (cmap)
cmapがカラーマップの 場合は true を返します。
カラーマップは、3 つの列を持つ、クラスが single または double である実数行列です。各行は単一の色を表します。3 つの列には、それぞれ赤、緑、青の強度が含まれます。
カラーマップ内のすべての値は [0 1] の範囲内にある必要がありますが、これは強制ではありません。各関数は、この範囲外の値に対して何を行うかを決定する必要があります。
参照: colormap、rgbplot。
次の関数は、関数を使用して名前で要求できるものと同じ定義済みのカラーマップを返しますcolormap。
: rgbplot (cmap)
: rgbplot (cmap, style)
: h = rgbplot (…)
カラーマップのコンポーネントをプロットします。
cmapの表示には2 つの異なるスタイルを使用できます。
プロファイル(デフォルト)
各チャネル (赤、緑、青) のカラーマップの RGB ライン プロファイルを、プロット ラインを適切に色付けしてプロットします。各ラインは、カラーマップ全体の RGB コンポーネントの強度を表します。
複合
個々の色成分ではなく実際のインデックス色が表示されるように、X 軸に沿ってカラーマップを描画します。
オプションの戻り値hは、作成されたプロットへのグラフィックス ハンドルです。
実行して、各スタイル オプション demo rgbplotの例を確認します。rgbplot
参照: colormap。
:map = 秋 ()
:map = 秋 (n)
カラーマップを作成します。このカラーマップの範囲は、赤からオレンジ、黄色までです。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = ボーン ()
:map = ボーン (n)
カラーマップを作成します。このカラーマップは、黒から白まで、グレーブルーの色合いで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = カラーキューブ ()
:map = カラーキューブ (n)
カラーカラーマップを作成します。このカラーマップは、RGB カラー スペース内で可能な限り多くの等間隔の色 (グレーではない) で構成されます。
等間隔に配置された色の数が完全な数nでない場合、カラーマップ内の残りのエントリは純粋な赤、緑、青、灰色のグラデーションになります。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = いいね ()
:map = いいね (n)
カラーマップを作成します。カラーマップはシアンからマゼンタまで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 銅 ()
:map = 銅 (n)
カラーマップを作成します。このカラーマップは、黒から明るい銅色まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = キューブヘリックス ()
:map = キューブヘリックス (n)
:map = キューブヘリックス (n, start, rots, hue, gamma)
キューブヘリックスカラーマップを作成します。
このカラーマップは、黒から白、青、緑、赤のトーンを経て単調に増加する強度の知覚を維持します。これは、1953 年の NTSC 仕様に従って各チャネルの知覚される明るさを考慮しながら、カラー キューブをらせん状に黒から白に移動することで実現されます (そのため、キューブ ヘリックスと呼ばれます)。
rgbplot (キューブヘリックス (256))
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参考文献: Green, DA, 2011, 天文強度画像の表示のためのカラースキーム、インド天文学会紀要、39、289。
参照: colormap。
:map = フラグ ()
:map = フラグ (n)
カラーマップを作成します。このカラーマップは、インデックスが変更されるたびに、赤、白、青、黒を循環します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = グレー ()
:map = グレー (n)
グレーのカラーマップを作成します。このカラーマップは、グレーの色合いで黒から白まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 熱い ()
:map = 熱い (n)
カラーマップを作成します。このカラーマップの範囲は、黒から濃い赤、赤、オレンジ、黄色、白までです。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
: map = hsv ()
: map = hsv (n)
カラーマップを作成します。このカラーマップは赤から始まり、黄色、緑、シアン、青、マゼンタを経て、赤に戻ります。
これは周期関数を表示するのに便利です。マップは、最大彩度と明度を一定に保ちながら、色相をすべての可能な値にわたって線形に変化させることによって得られます。同等のコードは です hsv2rgb ([(0:N-1)'/N, ones(N,2)])。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = ジェット ()
:map = ジェット (n)
カラーマップを作成します。このカラーマップの範囲は、濃い青から青、シアン、緑、黄、赤、濃い赤までです。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
プログラミング ノート:jetカラーマップは知覚的に均一ではありません。これが重要な場合は、カラーマップを試してください。より優れた知覚特性を持つviridisの代替として、カラーマップを試してください。 jetturbo
参照: colormap、turbo。
:map = 行 ()
:map = 行 (n)
カラーマップを作成します。このカラーマップは、現在の軸プロパティの色のリストで構成されます"ColorOrder"。デフォルトは、青、オレンジ、黄色、紫、緑、水色、濃い赤です。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 海 ()
:map = 海 (n)
カラーマップを作成します。このカラーマップは、青の色合いとともに黒から白まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = ピンク ()
:map = ピンク (n)
カラーマップを作成します。このカラーマップは、グレーピンクの色合いで黒から白まで変化します。
このカラーマップは、グレースケール画像に使用するとセピア調になります。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = プリズム ()
:map = プリズム (n)
カラーマップを作成します。このカラーマップは、インデックスが変更されるたびに、赤、オレンジ、黄、緑、青、紫を循環します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = レインボー ()
:map = レインボー (n)
カラーマップを作成します。このカラーマップの範囲は、赤からオレンジ、黄色、緑、青、紫までです。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 春 ()
:map = 春 (n)
カラーマップを作成します。このカラーマップはマゼンタから黄色まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 夏 ()
:map = 夏 (n)
カラーマップを作成します。このカラーマップは緑から黄色まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = ターボ ()
:map = ターボ (n)
カラーマップを作成します。このカラーマップの範囲は、濃い青から緑、濃い赤までです。古いjetカラーマップに似ていますが、知覚的には均一です。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = ビリディス ()
:map = ビリディス (n)
カラーマップを作成します。このカラーマップの範囲は、濃い紫がかった青から青、緑、黄色までです。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 白 ()
:map = 白 (n)
カラーカラーマップを作成します。このカラーマップは完全に白です。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:map = 冬 ()
:map = 冬 (n)
カラーマップを作成します。このカラーマップは青から緑まで変化します。
引数n はスカラーである必要があります。指定されていない場合は、現在のカラーマップの長さ、つまり 64 が使用されます。
参照: colormap。
:cmap = 対比 (x)
:cmap = 対比 (x, n)
画像のコントラストを最大化するグレーのカラーマップを返します。
返されるカラーマップにはn行が含まれます。n が定義されていない場合は、現在のカラーマップのサイズが使用されます。
参照: colormap、brighten。
次の 3 つの関数は、既存のカラーマップを置き換えるのではなく変更します。
:map_out = 明るくする (beta)
:map_out = 明るくする (map, beta)
:map_out = 明るくする (h, beta)
:明るくする (…)
カラーマップを明るくしたり暗くしたりします。
引数beta は-1 から 1 の間のスカラー値である必要があり、負の値はカラーマップを暗くし、正の値はカラーマップを明るくします。
マップ引数を省略すると、関数は現在のカラーマップに適用されます。
最初の引数は有効なグラフィック ハンドルhにすることもできます。その場合、brightenこのハンドルに関連付けられたカラーマップに適用されます。
出力が指定されていない場合は、結果は現在のカラーマップに書き込まれます。
参照: colormap、contrast。
:スピンマップ ()
:スピンマップ (t)
:スピンマップ (t, inc)
:スピンマップ ("inf")
色の増分をincとして、カラーマップをt秒間循環させます。
両方のパラメータはオプションです。デフォルトのサイクル時間は 5 秒、デフォルトの増分は 2 です。オプション"inf"が指定されている場合は、が押されるまで連続的にサイクルしますControl-C。
回転すると、元のカラー 1 はカラー 2 に、カラー 2 はカラー 3 になります。正または負の増分が許可され、incの値が大きいほど、カラーマップの循環が速くなります。
参照: colormap。
:白背景 ()
:白背景 (color)
:白背景 ("none")
:白背景 (hfig)
:白背景 (hfig, color)
:白背景 (hfig, "none")
現在の配色内の色を反転します。
ルート プロパティも反転され、後続のすべてのプロットで新しい配色が使用されます。
オプションの引数colorが存在する場合、背景色は反転されるのではなく、 colorに設定されます。colorは、8 つの既知の色のいずれかを表す文字列、または RGB トリプレットです。特別な文字列引数は、"none"プロットを工場出荷時のデフォルト色に戻します。
最初の引数hfigが図形ハンドルまたは図形ハンドルのリストである場合、 によって返される現在の図形ではなく、これらの図形に対して操作を行いますgcf。図形のリストに 0 がない限り、ルート プロパティは変更されません。
プログラミング ノート:whitebgは、指定された図の子の色のプロパティを変更することによって動作します。影響を受けるのは、単色のオブジェクトのみです。たとえば、単色のパッチは"FaceColor"変更されますが、シェーディング ( ) のあるパッチは"interp"変更されません。反転の場合、新しい色は RGB 空間での反転に過ぎません: 。色が指定されると、軸と図は新しい色に設定され、子オブジェクトの色は新しい背景に対してある程度のコントラスト (可視性) を持つように調整されます。 cnew = [1-R 1-G 1-B]
参照: reset、get、set。
次の関数を使用してカラーマップを操作できます。
: cmunique [Y, newmap] = (X, map)
: cmunique [Y, newmap] = (RGB)
: cmunique [Y, newmap] = (I)
入力画像X を、可能な限り最小のカラーマップnewmapを使用する出力インデックス画像Yに変換します。
入力がインデックス付き画像 (カラーマップmapを持つX ) の場合、出力は重複行が削除されたカラーマップnewmapになります。出力画像Yは、新しい (おそらく小さい) カラーマップに合わせてインデックスが調整された元の入力画像です 。
入力が RGB 画像 (MxNx3 配列) の場合、出力カラーマップには元の画像内の一意の色ごとに 1 つのエントリが含まれます。最悪の場合、新しいマップの行数は元の画像のピクセル数と同じになる可能性があります。
入力がグレースケール画像Iの場合、出力カラーマップには、元の画像内の一意の強度値ごとに 1 つのエントリが含まれます。最悪の場合、新しいマップの行数は、元の画像のピクセル数と同じになる可能性があります。
実装の詳細:
入力画像が強度グレースケール画像Iであっても、 newmap は常に Mx3 行列になります(3 つの RGB プレーンすべてに同じ値が割り当てられます)。
新しいカラーマップのサイズが 256 以下の場合、出力イメージは uint8 クラスになります。それ以外の場合、出力イメージは double クラスになります。
rgb2ind、gray2indも参照してください。
: cmpermute [Y, newmap] = (X, map)
: cmpermute [Y, newmap] = (X, map, index)
カラーマップ内の色を並べ替えます。
引数を 2 つだけ指定して呼び出されると、cmpermuteカラーマップmap をランダムに並べ替え、新しいカラーマップnewmapを返します。また、 newmapを使用して表示したときに元の入力イメージXと同等のインデックス付きイメージYも返します。
オプションの 3 番目の引数を指定して呼び出されると、新しいカラーマップ内の色の順序はインデックスによって定義されます。
注意: インデックスに重複要素を含めることはできません。重複要素があると関数が失敗します。