⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ebm_gui.cpp

📁 Gaussian Mixture Algorithm
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	energy(energy)	{		add_box(new state_Idx_Gui(in, "in", this, mutex));		add_box(new module_1_1_GUI("layer 1", this, mutex));		add_box(new state_Idx_Gui(ebm1->fout, "out", this, mutex));		add_box(new module_1_1_GUI("layer 2", this, mutex));		add_box(new state_Idx_Gui(energy, "energy", this, mutex));	}fc_ebm1_GUI::fc_ebm1_GUI(fc_ebm1<state_idx, state_idx>* ebm1,const char* title, QWidget *parent, QMutex* mutex):	ebbox(parent, title, NULL, NULL, mutex),	ebm1(ebm1)	{		add_box(new module_1_1_GUI("layer 1", this, mutex));		add_box(new state_Idx_Gui(ebm1->fout, "out", this, mutex));		add_box(new module_1_1_GUI("layer 2", this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */fc_ebm2_GUI::fc_ebm2_GUI(fc_ebm2<state_idx, state_idx, state_idx>* ebm2, state_idx* in1, state_idx* in2, state_idx* energy, const char* title, QWidget *parent, QMutex* mutex):	ebbox(parent, title, NULL, NULL, mutex),	ebm2(ebm2),	in1(in1),	in2(in2),	energy(energy)	{		add_box(new state_Idx_Gui(in1, "in1", this, mutex));		add_box(new state_Idx_Gui(in2, "in2", this, mutex));		add_box(new module_1_1_GUI("layer 1", this, mutex));		add_box(new state_Idx_Gui(ebm2->fout, "out", this, mutex));		add_box(new module_1_1_GUI("layer 2", this, mutex));		add_box(new state_Idx_Gui(energy, "energy", this, mutex));	}fc_ebm2_GUI::fc_ebm2_GUI(fc_ebm2<state_idx, state_idx, state_idx>* ebm2, const char* title, QWidget *parent, QMutex* mutex):	ebbox(parent, title, NULL, NULL, mutex),	ebm2(ebm2)	{		add_box(new module_1_1_GUI("layer 1", this, mutex));		add_box(new state_Idx_Gui(ebm2->fout, "out", this, mutex));		add_box(new module_1_1_GUI("layer 2", this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */linear_module_GUI::linear_module_GUI(linear_module* module, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	module(module)	{		add_box(new state_Idx_Gui(module->w, "w", this, mutex));	}linear_module_GUI::linear_module_GUI(linear_module* module, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	module(module)	{		add_box(new state_Idx_Gui(module->w, "w", this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */nn_layer_full_GUI::nn_layer_full_GUI(nn_layer_full* layer, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	layer(layer)	{		add_box(new linear_module_GUI(layer->linear, "linear module", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI("sigmoid", this, mutex));	}nn_layer_full_GUI::nn_layer_full_GUI(nn_layer_full* layer, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	layer(layer)	{		add_box(new linear_module_GUI(layer->linear, "linear module", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI("sigmoid", this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */f_layer_GUI::f_layer_GUI(f_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	layer(layer)	{		add_box(new state_Idx_Gui(layer->weight, "weight", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}f_layer_GUI::f_layer_GUI(f_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	layer(layer)	{		add_box(new state_Idx_Gui(layer->weight, "weight", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */c_layer_GUI::c_layer_GUI(c_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	layer(layer)	{		add_box(new Idx_Gui((void*)(layer->table), INTG, "table", this, mutex));		add_box(new state_Idx_Gui(layer->kernel, "kernel", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}c_layer_GUI::c_layer_GUI(c_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	layer(layer)	{	add_box(new Idx_Gui((void*)(layer->table), INTG, "table", this, mutex));		add_box(new state_Idx_Gui(layer->kernel, "kernel", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */s_layer_GUI::s_layer_GUI(s_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	layer(layer)	{		add_box(new state_Idx_Gui(layer->coeff, "coeff", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sub, "sub", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}s_layer_GUI::s_layer_GUI(s_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	layer(layer)	{		add_box(new state_Idx_Gui(layer->coeff, "coeff", this, mutex));		add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex));		add_box(new state_Idx_Gui(layer->sub, "sub", this, mutex));		add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex));		add_box(new module_1_1_GUI(squash_title, this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * * */logadd_layer_GUI::logadd_layer_GUI(logadd_layer* layer, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, out, title, parent, mutex),	layer(layer)	{		add_box(new Idx_Gui((void*)&(layer->expdist), DOUBLE, "expdist", this, mutex));		add_box(new Idx_Gui((void*)&(layer->sumexp), DOUBLE, "sumexp", this, mutex));	}logadd_layer_GUI::logadd_layer_GUI(logadd_layer* layer, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(title, parent, mutex),	layer(layer)	{		add_box(new Idx_Gui((void*)&(layer->expdist), DOUBLE, "expdist", this, mutex));		add_box(new Idx_Gui((void*)&(layer->sumexp), DOUBLE, "sumexp", this, mutex));	}/* * * * * * * * * * * * * * * * * * */edist_cost_GUI::edist_cost_GUI(edist_cost* edist, state_idx *in, state_idx *energy, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI(in, energy, title, parent, mutex),	edist(edist)	{		add_box(new logadd_layer_GUI(edist->logadder, "log-add layer", this, mutex));		add_box(new state_Idx_Gui(edist->dist, "dist", this, mutex));		add_box(new state_Idx_Gui(edist->logadded_dist, "logadded_dist", this, mutex));		add_box(new Idx_Gui((void*)(edist->proto), DOUBLE, "proto", this, mutex));		add_box(new Idx_Gui((void*)&(edist->label2classindex), UBYTE, "proto", this, mutex));	}edist_cost_GUI::edist_cost_GUI(edist_cost* edist, const char* title, QWidget *parent, QMutex* mutex):	module_1_1_GUI( title, parent, mutex),	edist(edist)	{		add_box(new logadd_layer_GUI(edist->logadder, "log-add layer", this, mutex));		add_box(new state_Idx_Gui(edist->dist, "dist", this, mutex));		add_box(new state_Idx_Gui(edist->logadded_dist, "logadded_dist", this, mutex));		add_box(new Idx_Gui((void*)(edist->proto), DOUBLE, "proto", this, mutex));		add_box(new Idx_Gui((void*)&(edist->label2classindex), UBYTE, "proto", this, mutex));	}/* * * * * * * * * * * * * * * * * * * * * */ebwindow::ebwindow(int height, int width):	QWidget()	{	resize(width, height);	mylabel = new QLabel(this);    mylabel->setGeometry(QRect(0, 0, width, height));    mylabel->setScaledContents(true);    mydisplay = new QPixmap(width, height);    QColor color;    color.setRgb(255, 255, 255);    mydisplay->fill(color.rgb());    mylabel->setPixmap(*mydisplay);    painter = new QPainter(mydisplay);    show();}void ebwindow::resizeEvent (QResizeEvent *event){	resize(event->size());	mylabel->resize(event->size());}void ebwindow::gray_draw_matrix(void* idx, idx_type type, int x, int y, int minv, int maxv, int zoomx, int zoomy, QMutex* mutex){	if(mutex != NULL) mutex->lock();	int order = static_cast<Idx<double>*>(idx)->order();	if(order < 2){		ylerror("not designed for idx0 and idx1");		if(mutex != NULL) mutex->unlock();		return;	}	int height = (order == 2 )? static_cast<Idx<double>*>(idx)->dim(0): static_cast<Idx<double>*>(idx)->dim(1);	int width = (order == 2 )? static_cast<Idx<double>*>(idx)->dim(1): static_cast<Idx<double>*>(idx)->dim(2);	Idx<ubyte>* mycopy = new Idx<ubyte>(height, width);	int min, max;	if((minv == 0)&&(maxv == 0)){		min = idx_min(*mycopy);		max = idx_max(*mycopy);	} else {		min = minv;		max = maxv;	}	if(type == DOUBLE){		Idx<double> test1(height, width);		if(order==2) idx_copy(*(static_cast<Idx<double>*>(idx)), test1);		else {			Idx<double> bla = static_cast<Idx<double>*>(idx)->select(0,0);			idx_copy(bla, test1);		}		idx_dotc( test1, (double)(255/(max-min)), test1);		idx_addc( test1, (double)(-min*255/(max-min)), test1);		idx_copy( test1, *mycopy);	}	if(type == FLOAT){		Idx<float> test2(height, width);		if(order==2) idx_copy(*(static_cast<Idx<float>*>(idx)), test2);		else {			Idx<float> bla = static_cast<Idx<float>*>(idx)->select(0,0);			idx_copy(bla, test2);		}		idx_dotc( test2, (float)(255/(max-min)), test2);		idx_addc( test2, (float)(-min*255/(max-min)), test2);		idx_copy( test2, *mycopy);	}	if(type == INTG){		if(order==2) idx_copy(*(static_cast<Idx<intg>*>(idx)), *mycopy);		else {			Idx<intg> test3 = static_cast<Idx<intg>*>(idx)->select(2,0);			idx_copy(test3, *mycopy);		}		idx_dotc(*mycopy, (ubyte)(255/(max-min)), *mycopy);		idx_addc(*mycopy, (ubyte)(-min*255/(max-min)), *mycopy);	}	if(type == UBYTE){		if(order==2) idx_copy(*(static_cast<Idx<ubyte>*>(idx)), *mycopy);		else {			Idx<ubyte> test4 = static_cast<Idx<ubyte>*>(idx)->select(2,0);			idx_copy(test4, *mycopy);		}		idx_dotc(*mycopy, (ubyte)(255/(max-min)), *mycopy);		idx_addc(*mycopy, (ubyte)(-min*255/(max-min)), *mycopy);	}	if(mutex != NULL) mutex->unlock();	QImage* image;	QVector<QRgb> table(256);	for (int i = 0; i < 256; i++){	    table[i] = qRgb(i, i, i);	}	image = new QImage((uchar*)mycopy->idx_ptr(), width, height, width * sizeof(unsigned char), QImage::Format_Indexed8);	image->setColorTable(table);	image = new QImage(image->scaled(width*zoomx, height*zoomy));	painter->drawImage(x, y, *image);	mylabel->setPixmap(*mydisplay);}void ebwindow::RGB_draw_matrix(void* idx, idx_type type, int x, int y, int zoomx, int zoomy, QMutex* mutex){	if(mutex != NULL) mutex->lock();	int order = static_cast<Idx<double>*>(idx)->order();	if(order != 3){		ylerror("designed for idx3 only !");		if(mutex != NULL) mutex->unlock();		return;	}	int width = static_cast<Idx<double>*>(idx)->dim(2);	int height = static_cast<Idx<double>*>(idx)->dim(3);	Idx<ubyte> myimage(height, width, 4);	Idx<ubyte> mypartimage = myimage.narrow(2,3,0);	if(type == DOUBLE){		Idx<double> test1 = static_cast<Idx<double>*>(idx)->narrow(0,3,0);		idx_copy(test1, mypartimage);	}	if(type == FLOAT){		Idx<float> test2 = static_cast<Idx<float>*>(idx)->narrow(0,3,0);		idx_copy(test2, mypartimage);	}	if(type == INTG){		Idx<intg> test3 = static_cast<Idx<intg>*>(idx)->narrow(0,3,0);		idx_copy(test3, mypartimage);	}	if(type == UBYTE){		Idx<ubyte> test4 = static_cast<Idx<ubyte>*>(idx)->narrow(0,3,0);		idx_copy(test4, mypartimage);	}	if(mutex != NULL) mutex->unlock();	QImage* image;	image = new QImage((uchar*)myimage.idx_ptr(), width, height, width * sizeof(unsigned char), QImage::Format_RGB32);	image = new QImage(image->scaled(width*zoomx, height*zoomy).rgbSwapped());	painter->drawImage(x, y, *image);	mylabel->setPixmap(*mydisplay);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -