前提・実現したいこと
3次元のvolumeデータ(xyz=100010001000)から
10001000(xy)の画像でz軸1番
10001000(xy)の画像でz軸2番
10001000(xy)の画像でz軸3番
の3枚の画像に同一処理をかけて連結させて保存します。
そのまま次は
10001000(xy)の画像でz軸4番
10001000(xy)の画像でz軸5番
10001000(xy)の画像でz軸6番
の3枚の画像に同一処理をかけて連結させて保存します。
これを繰り返します。
3次元volumeを2次元データ(1000個)にわけて
1000*1000の2次元画像3枚を同一処理かけて連結させて保存することはできています。
それを3次元のまま処理できるように改良しようと思っています。
発生している問題・エラーメッセージ
100010001000は大きすぎて配列にはいりません。
そのため、100010001000を読み込まずに、
最初は100010001と100010002と100010003を順番に読み込んで処理をかける方法を考えています。
どうすれば読み込みを順番にできるのでしょうか?
エラーメッセージ 配列が大きすぎる
該当のソースコード
float org[4][IMG_YSIZE][IMG_XSIZE][IMG_ZSIZE];
float tch[IMG_YSIZE][IMG_XSIZE][IMG_ZSIZE];
C++
1 2define IMG_XSIZE 1000 //画像Xサイズ 3#define IMG_YSIZE 1000 //画像Yサイズ 4#define IMG_ZSIZE 1000 //画像Zサイズ 5#define PIXEL_BYTE 1 //画像タイプ 6 7//配列確保 8float org[4][IMG_YSIZE][IMG_XSIZE][IMG_ZSIZE]; 9float tch[IMG_YSIZE][IMG_XSIZE][IMG_ZSIZE]; 10 11void main() 12{ 13 int fd; 14 long fsize; 15 //入力 16 char inputfname[][256]="C:/work/animal/1000*1000*1000.raw"; 17 char nambar[]= "1"; 18 19 //出力 20 char head[]="C:/work/output/animal"; 21 char outputfname[256]; 22 23 読み込み 24 fd=open(input_fname[seq_no],O_RDONLY | O_BINARY);//ファイルのオープン 25 fsize=IMG_XSIZE*IMG_YSIZE*IMG_ZSIZE*PIXEL_BYTE; 26 read(fd,org[seq_no],fsize); 27 close(fd); 28 29 30 ///// 31 処理 32 ///// 33 34 35 出力 36 sprintf(output_fname,"8bit_%03d_1000x1000.raw",head,numbar); 37 fd=_open(output_fname,O_CREAT|O_RDWR|O_BINARY,_S_IREAD|_S_IWRITE); 38 fsize=IMG_XSIZE*IMG_YSIZE*IMG_ZSIZE*PIXEL_BYTE; 39 write(fd,patch,fsize); 40 close(fd); 41 42 43 return; 44} 45
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。