Matlab 形式の人間の顔を含むデータセットを受け取りましたが、データセットを Matlab にインポートした後、画像を表示する方法がわかりません。
マトリックスのサイズは 60x60x3x1000 です。つまり、画像のサイズは 60x60 で、画像 RGB ごとに 3 つのチャネルがあり、そのような画像が 1000 あります。
i 番目の面をカラーで表示するなどの基本的な操作の方法がわかりません。
ありがとう
Matlab 形式の人間の顔を含むデータセットを受け取りましたが、データセットを Matlab にインポートした後、画像を表示する方法がわかりません。
マトリックスのサイズは 60x60x3x1000 です。つまり、画像のサイズは 60x60 で、画像 RGB ごとに 3 つのチャネルがあり、そのような画像が 1000 あります。
i 番目の面をカラーで表示するなどの基本的な操作の方法がわかりません。
ありがとう
データが [0..255] の範囲で指定されているように見えますが、( ではなくuint8
) double 型です。
したがって、必要なk番目の画像を取得するには
Im_k = uint8( squeeze( Images(:,:,:,k) ) );
または、倍精度浮動小数点を使用する場合
Im_k = squeeze( Images(:,:,:,k) ) / 255;
(この場合に使用する必要があるかどうかは100%確信が持てませんsqueeze
)。
画像を表示する
figure('Name', 'Showing k-th face');
imshow( Im_k );
試しましたimage(1:60, 1:60, Images(:, :, :, i))
か?
個々のチャネルを取得するには、次のようにします。
colormap(gray)
image(Images(:,:,1,i))
また
colormap(gray)
image(Images(:,:,2,i))
また
colormap(gray)
image(Images(:,:,3,i))
これにより、チャンネルが分離され、個々の色成分が正しい彩度レベルにスケーリングされます。
また、範囲外であるというエラーが発生した場合は、次を試してください。
imagesc(1:60, 1:60, Images(:, :, :, i))
そうは言っても、あなたの教授や同僚が標準の [0,255] 形式で RGB データを提供しなかったとは信じがたいです。ただし、それを行うとimagesc
、カラー チャネルを並べて比較する際に役に立たなくなります。
また、各カラー マトリックスの値の一部がどのように見えるかを確認することも役立ちます。あなたが私に次の出力を与えた場合、私たちはそれを見ることができました:
min(Images(:, :, 1, 1))
max(Images(:, :, 1, 1))
実際にそれらがある種の浮動小数点数である場合、それを標準の整数 RGB 表現にスケーリングする方法を示すことができます。