📄 dct2d.cc
字号:
const char *help = "\progname: dct2D.cc\n\code2html: This program reads a pgm image and computes its DCT 2D.\n\version: Torch3 vision2.0, 2004-2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "ImageGray.h"#include "ipDCT2D.h"#include "DiskXFile.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char **argv){ char *image_filename; bool verbose; bool normalise; int dimDCT; CmdLine cmd; cmd.setBOption("write log", false); cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("image filename", &image_filename, "image filename"); cmd.addText("\nOptions:"); cmd.addICmdOption("-dim", &dimDCT, 15, "DCT dimensionality"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.addBCmdOption("-normalise", &normalise, false, "normalise"); cmd.read(argc, argv); Image *image_in = NULL; image_in = new ImageGray(); image_in->setBOption("verbose", verbose); image_in->load(image_filename); if(verbose) { print("Image info:\n"); print(" width = %d\n", image_in->width); print(" height = %d\n", image_in->height); print(" format = %s (%d)\n", image_in->coding, image_in->n_planes); } ipCore *dct2d = NULL; dct2d = new ipDCT2D(image_in->width, "gray", dimDCT); dct2d->setBOption("verbose", verbose); dct2d->process(image_in); real *dct = dct2d->seq_out->frames[0]; real energy = 0; for(int i = 0; i < dct2d->seq_out->frame_size; i++) { print("[%d] = %g\n", i, dct[i]); energy += dct[i] * dct[i]; } energy = sqrt(energy); real log_energy = energy < 1.0 ? 0.0 : (real) log(energy); print("log Energy = %g\n", log_energy); delete dct2d; delete image_in; return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -