// HOUSE MODEL // // FILE NAME : house.C // MODULE TYPE : Depth Class // STATUS : In development // PURPOSE : Visual depth analisys // // Instituto Tecnologico Autonomo de Mexico // (c) Copyright 1996 // // HISTORY : Version (Date-Name) Modification, description. // // 1.0 (Agu 13, 1996 - Claudia Calderas & Salvador Marmol), // Start of development for distributed execution. // // 1.5 (Sept 22, 1997 - Salvador Marmol), // Adecutation for the new library. // // 1.6 (Nov 10, 1997 - Oscar Peguero), // Implementation of the stereo schema. // // 1.7 (Mar 16, 1998 - Oscar Peguero), // Changes in loops / steps #include "nsl_include.h" #include "house.h" extern void view_to_right_retina(nsl_vector&,nsl_matrix&,nsl_data&,nsl_data&,nsl_data&); extern void view_to_left_retina(nsl_vector&,nsl_matrix&,nsl_data&,nsl_data&,nsl_data&); extern void retina_to_accommodation(nsl_matrix&,nsl_matrix&,nsl_vector&,nsl_data&,nsl_data&,nsl_data&,nsl_data&,nsl_data&); extern void retina_to_disparity(nsl_matrix&,nsl_vector&,nsl_vector&); Dev2::Dev2(char *str, NslModule* parent,int sizeX,int sizeY) : NslModule(str, parent), a("a",this,sizeX,sizeY), m("m",this,sizeX,sizeY), mf("mf",this,sizeX,sizeY), s("s",this,sizeX,sizeY), u("u",this,sizeY), uf("uf",this,sizeY), tu("tu",this), tm("tm",this), hu("hu",this), hm("hm",this), wm("wm",this,3), kmu("kmu",this), kam("kam",this), kum("kum",this), ks("ks",this), x1("x1",this), x2("x2",this) { } void Dev2::initRun() { m = 0; mf = 0; s = 0; u = 0; uf = 0; } void Dev2::simRun() { nslDiff(m,tm,-m+kam*a-kum*nslExpandRows(uf,m.getRows())+ks*s+wm*mf+hm); mf = NSLsigma(m,x1,x2); nslDiff(u,tu, -u + kmu*nslReduceRows(mf)+hu); uf = NSLramp(u); } HouseRetina::HouseRetina(char *s, NslModule* parent, int sizeX, int sizeY, int sizeR) : NslModule(s, parent), in("in",this,sizeX,sizeY), rl("rl",this,sizeR), rr("rr",this,sizeR), a("a",this,sizeX,sizeY), d("d",this,sizeX,sizeY), w("w",this), yf("yf",this), l("l",this), dmax("dmax",this), sigma("sigma",this) { } void HouseRetina::initRun() { rr = 0; rl = 0; a = 0; d = 0; view_to_right_retina(rr,in,w,yf,l); view_to_left_retina(rl,in,w,yf,l); retina_to_accommodation(a,in,rr,w,yf,l,dmax,sigma); retina_to_disparity(d,rr,rl); } HouseStereo::HouseStereo(char *str, NslModule* parent, int sizeX, int sizeY, int sizeR) : NslModule(str, parent), s("s", this,sizeX,sizeY), m("m", this,sizeX,sizeY), r("r", this,sizeX,sizeY,sizeR), in("in",this,sizeX,sizeY), out("out",this,sizeX,sizeY) { makeConn(); } void HouseStereo::makeConn(void) { nslConnect(r.a, s.a); nslConnect(r.d, m.a); nslConnect(s.mf, m.s); nslConnect(m.mf, s.s); nslRelabel(in,r.in); nslRelabel(m.mf,out); } HouseVisin::HouseVisin(char *str, NslModule* parent, int sizeX, int sizeY) : NslModule(str, parent), out("out",this,sizeX,sizeY) { } DepthModel::DepthModel() : NslModel("DepthModel"), visin("visin",this,11,11), // 11,11), //81,81) stereo("stereo",this,11,11,21) // 11,11,21) //81,81,161) { makeConn(); } void DepthModel::makeConn(void) { nslConnect(visin.out, stereo.in); } AslSchemaModel _DepthModel("DepthModel");