PNG 形式を使用して、数百の RGB 画像を読み取る必要があります。色の 1 つ (赤、緑、または青) のみが必要で、現在、次のようなことを行っています。
A = imread(file);
A = A(:, :, 1);
読み取りを高速化するために、1 つの色の値のみを読み取ることができるかどうか疑問に思っていました。この操作をできるだけ速くする必要があります。
PNG 形式を使用して、数百の RGB 画像を読み取る必要があります。色の 1 つ (赤、緑、または青) のみが必要で、現在、次のようなことを行っています。
A = imread(file);
A = A(:, :, 1);
読み取りを高速化するために、1 つの色の値のみを読み取ることができるかどうか疑問に思っていました。この操作をできるだけ速くする必要があります。
@carandraug が述べたように、オクターブはそのような方法を提供しません。あなたはすでに最も簡単なオプションを投稿しました。Octave は、画像ファイルを読み取るためのバックエンドとしてImageMagickを使用しています。ここには最適化の余地はあまりありません。
さらに、かなり大量の画像の読み取りプロセスを本当に高速化する必要がある場合は、別の読み取り方法を探すか、独自の方法を実装することをお勧めします。開始するのに適した場所は、 libpngのソース コードです。別のアイデアは、最初に RGB png を非圧縮の単純な bmp に変換することです。画像を変換するプロセスは、選択した別の高速プログラムで処理してください。たとえば、RAM ドライブ内に bmp を作成し、低レベル コマンド (fread) を使用してオクターブから読み取ります。このような戦略は、ある程度最適化できます。しかし、多くの画像について話している場合にのみ、努力する価値があります。