Pythonの画像の要素の順序は?

私は h5 ファイルから読み込まれた一連の画像を持っています。ディメンションを確認して、(209、64、64、3)を取得します。

read = h5py.File('datasets/train_catvnoncat.h5', 'r')
read['train_set_x'].shape

(209,64,64,3)

it means that there are 209 images but the point that I cannot understand is that, what is (64, 64, 3)?
I have used the following code for plotting:

import matplotlib.pyplot as plt

plt.imshow(read['train_set_x'][1])
plt.show()

and I get a colored image which is 64 by 64. before this, I thought for (., ., .) shapes, the second number specifies the number of lines and the third one specifies the number of rows. also the first one specifies the number of the mentioned (row and column) arrays.
My question is that in numpy if you have a three dimensional array, for accessing rows and columns you have to change the second and third entries in the indexing operator; Why this is different in images and rows and columns are arranged differently in images. Shouldn't it be (3, 64, 64)?

0
これらがカラー画像であると仮定すると、64x64は行と列のインデックスであり、残りの3つの値は画像のRGBチャネルです。
追加された 著者 Tim Whitcomb,
@RHillこれはまさに私の要点です。それは(3、64、64)ではありませんか?
追加された 著者 Media,
@NeilSlaterあなたは、この順序付けが私たちがリストやタプルなどの他のコンテナにあるものと異なっていると私に伝えていますか?
追加された 著者 Media,
@NeilSlater実際には、タプルやリストの代わりに私の例を変更したい、numpyの配列やnumpyの行列を考える。 3-D形状の行列(実際にテンソル)の行と列にアクセスしたい場合は、2番目と3番目のエントリを使用して対応する要素にアクセスします。
追加された 著者 Media,

1 答え

あなたが見つけた [64、64、3] シェイプは、(x、y、colour_channel)次元のカラーイメージを表現する一般的な規則です。

ここで重要なのは convention です。基本的な数学やコンピューティングのニーズからカラー画像を表現する本質的に好ましい方法はなく、Pythonの中でも、次元 - 例えばOpenCVはシェイプに(x、y、channel)規約を使用していますが、BGRの順番でチャンネルを持っています。チャンネル0は青です。他のほとんどのライブラリはRGBオーダーを使用します。

私の質問は、3次元配列を持つnumpyでは、行と列にアクセスするために、インデックス演算子の2番目と3番目のエントリを変更する必要があるということです。

3次元配列を持っているときは、「行」と「列」と呼ぶこともできます。その配列が表すものに部分的に依存しており、コンテンツを視覚化する単一の方法はありません。

3
追加された