📄 normbindata.cc
字号:
const char *help = "\progname: normbindata.cc\n\code2html: This program reads a bindata and normalizes it.\n\version: Torch3 vision2.0, 2004-2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "ImageGray.h"#include "DiskXFile.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char *argv[]){ char *filename_in; char *filename_out; bool verbose; CmdLine cmd; cmd.setBOption("write log", false); cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("imagefile in", &filename_in, "image file in"); cmd.addSCmdArg("output filename", &filename_out, "output bindata filename"); cmd.addText("\nOptions:"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.read(argc, argv); // int n_frames; int frame_size; DiskXFile *pf_in; DiskXFile *pf_out; // Load pf_in = new DiskXFile(filename_in, "r"); pf_in->read(&n_frames, sizeof(int), 1); pf_in->read(&frame_size, sizeof(int), 1); Sequence *seqimage = new Sequence(1, frame_size); // pf_out = new DiskXFile(filename_out, "w"); if(pf_out == NULL) { error("Opening bindata file %s", filename_out); return 0; } if(verbose) { print("Output file ...\n"); print(" n_inputs = %d\n", frame_size); print(" n_patterns = %d\n", n_frames); } // pf_out->write(&n_frames, sizeof(int), 1); pf_out->write(&frame_size, sizeof(int), 1); // real *mean = NULL; real *stdv = NULL; mean = new real [frame_size]; stdv = new real [frame_size]; for(int i = 0 ; i < frame_size ; i++) { mean[i] = 0; stdv[i] = 0; } for(int p = 0 ; p < n_frames ; p++) { pf_in->read(seqimage->frames[0], sizeof(real), frame_size); for(int i = 0 ; i < frame_size ; i++) { real z = seqimage->frames[0][i]; mean[i] += z; stdv[i] += z*z; } } for(int i = 0 ; i < frame_size ; i++) { mean[i] /= (real) n_frames; stdv[i] /= (real) n_frames; stdv[i] -= mean[i]*mean[i]; if(stdv[i] <= 0) { warning("MeanVarNorm: input column %d has a null stdv. Replaced by 1.", i); stdv[i] = 1.; } else stdv[i] = sqrt(stdv[i]); } delete pf_in; pf_in = new DiskXFile(filename_in, "r"); pf_in->read(&n_frames, sizeof(int), 1); pf_in->read(&frame_size, sizeof(int), 1); for(int p = 0 ; p < n_frames ; p++) { pf_in->read(seqimage->frames[0], sizeof(real), frame_size); for(int i = 0 ; i < frame_size ; i++) { real src_ = seqimage->frames[0][i]; src_ = (src_ - mean[i]) / stdv[i]; pf_out->write(&src_, sizeof(real), 1); } } delete [] mean; delete [] stdv; delete pf_in; delete pf_out; delete seqimage; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -