Ejemplo n.º 1
0
void rspfFilter::createMatrix(NEWMAT::Matrix& m,
                               long width,
                               double middle,
                               double scale)const
{
   NEWMAT::ColumnVector colVec(width);
   NEWMAT::RowVector    rowVec(width);

   double t = 0.0;
   double val = 0.0;
   if(width == 1)
   {
      t = 0;
      val = filter(t, getSupport());
      colVec[0] = val;
      rowVec[0] = val;
   }
   else
   {
      for(long index = 0; index < width; index++)
      {
         t = (double)index/(double)(width-1);
         t = middle + (t - .5)*scale;
         val = filter(t, getSupport());
         colVec[index] = val;
         rowVec[index] = val;
      }
   }

   // do the outer product to construct the
   // filter matrix
   m = colVec * rowVec;
}
Ejemplo n.º 2
0
vector<vector<bool>> createVisited(int col,int row){
    vector<vector<bool>>ret;
    for (int i = 0; i < row; i++) {
        vector<bool> rowVec(col,false);
        ret.push_back(rowVec);
    }
    return ret;
}
Ejemplo n.º 3
0
  /* Debugging utility to check if columns have been Inserted into the 
   * matrix that do not correspond to a row on any processor
   */
  void check_for_rogue_columns( Epetra_CrsMatrix& mat) {
    // Set up rowVector of 0s and column vector of 1s
    const Epetra_Map& rowMap = mat.RowMap();
    const Epetra_Map& colMap = mat.ColMap();
    Epetra_Vector rowVec(rowMap); rowVec.PutScalar(0.0);
    Epetra_Vector colVec(colMap); colVec.PutScalar(1.0);
    Epetra_Import importer(colMap, rowMap);

    // Overwrite colVec 1s with rowVec 0s 
    colVec.Import(rowVec, importer, Insert);

    // Check that all 1s have been overwritten
    double nrm=0.0;
    colVec.Norm1(&nrm); // nrm = number of columns not overwritten by rows

    // If any rogue columns, exit now (or just get nans later)
    if (nrm>=1.0) {
      *out << "ERROR: Column map has " << nrm 
           << " rogue entries that are not associated with any row." << endl;
       rowMap.Comm().Barrier();
       exit(-3);
    }
  }
Ejemplo n.º 4
0
/**
 * @author      JIA Pei
 * @version     2010-02-22
 * @brief       Generate all types of window functions
 * @param       windowSize      Input    -- the window size
 * @param       windowFunc      Output    -- the window function
 * @return      Mat_<float>     return 
 */
cv::Mat_<float> VO_WindowFunc::VO_GenerateWindowFunc(cv::Size windowSize, unsigned int windowFunc)
{
    cv::Mat_<float> resMat = cv::Mat_<float>::ones(windowSize);
    cv::Mat_<float> rowVec = cv::Mat_<float>::ones(1, windowSize.width);
    cv::Mat_<float> colVec = cv::Mat_<float>::ones(windowSize.height, 1);

    switch(windowFunc)
    {
        case HAMMING:
        {
            double a = 2.0 * CV_PI / (windowSize.width - 1.0);
            for(unsigned int i = 0; i < windowSize.width; ++i)
                rowVec(0, i)    = 0.53836 - 0.46164 * cos(a*i);
            double b = 2.0 * CV_PI / (windowSize.height - 1.0);
            for(unsigned int i = 0; i < windowSize.height; ++i)
                colVec(i, 0)    = 0.53836 - 0.46164 * cos(b*i);
            resMat = colVec*rowVec;
        }
        break;
        case HANN:
        {
            double a = 2.0 * CV_PI / (windowSize.width - 1.0);
            for(unsigned int i = 0; i < windowSize.width; ++i)
                rowVec(0, i)    = 0.5 * (1.0 - cos(a*i));
            double b = 2.0 * CV_PI / (windowSize.height - 1.0);
            for(unsigned int i = 0; i < windowSize.height; ++i)
                colVec(i, 0)    = 0.5 * (1.0 - cos(b*i));
            resMat = colVec*rowVec;
        }
        break;
        case TUKEY:
        break;        
        case COSINE:
        {
            double a = CV_PI / (windowSize.width - 1.0);
            for(unsigned int i = 0; i < windowSize.width; ++i)
                rowVec(0, i)    = sin(a*i);
            double b = CV_PI / (windowSize.height - 1.0);
            for(unsigned int i = 0; i < windowSize.height; ++i)
                colVec(i, 0)    = sin(b*i);
            resMat = colVec*rowVec;
        }
        break;
        case LANCZOS:
        break;
        case BARTLETT:
        break;
        case TRIANGULAR:
        break;
        case GAUSS:
        {
        }
        break;
        case BARTLETTHANN:
        break;
        case BLACKMAN:
        break;
        case KAISER:
        break;        
        case NUTTALL:
        break;
        case BLACKMANHARRIS:
        break;
        case BLACKMANNUTTALL:
        break;
        case FLATTOP:
        break;
        case BESSEL:
        break;        
        case DOLPHCHEBYSHEV:
        break;
        case EXPONENTIAL:
        break;
        case RIFEVINCENT:
        break;
        case GABOR:
        break;
        case RECTANGULAR:
        default:
        {
            for(unsigned int i = 0; i < windowSize.width; ++i)
                for(unsigned int j = 0; j < windowSize.height; ++j)
                    resMat(i, j) = 1.0f;
        }
        break;
    }
    
    return resMat;
}
Ejemplo n.º 5
0
static PyObject* Sbk_PathParamFunc_setTable(PyObject* self, PyObject* pyArg)
{
    PathParamWrapper* cppSelf = 0;
    SBK_UNUSED(cppSelf)
    if (!Shiboken::Object::isValid(self))
        return 0;
    cppSelf = (PathParamWrapper*)((::PathParam*)Shiboken::Conversions::cppPointer(SbkNatronEngineTypes[SBK_PATHPARAM_IDX], (SbkObject*)self));
    int overloadId = -1;
    PythonToCppFunc pythonToCpp;
    SBK_UNUSED(pythonToCpp)

    // Overloaded function decisor
    // 0: setTable(std::list<std::vector<std::string> >)
    if (PySequence_Check(pyArg)) {
        overloadId = 0; // setTable(std::list<std::vector<std::string> >)
    }

    // Function signature not found.
    if (overloadId == -1) goto Sbk_PathParamFunc_setTable_TypeError;

    // Call function/method
    {

        if (!PyErr_Occurred()) {
            // setTable(std::list<std::vector<std::string> >)
            // Begin code injection


            if (!PyList_Check(pyArg)) {
                PyErr_SetString(PyExc_TypeError, "table must be a list of list objects.");
                return 0;
            }

            std::list<std::vector<std::string> > table;

            int size = (int)PyList_GET_SIZE(pyArg);
            for (int i = 0; i < size; ++i) {


                PyObject* subList = PyList_GET_ITEM(pyArg,i);
                if (!subList || !PyList_Check(subList)) {
                    PyErr_SetString(PyExc_TypeError, "table must be a list of list objects.");
                    return 0;
                }
                int subSize = (int)PyList_GET_SIZE(subList);
                std::vector<std::string> rowVec(subSize);

                for (int j = 0; j < subSize; ++j) {
                    PyObject* pyString = PyList_GET_ITEM(subList,j);

                    if ( PyString_Check(pyString) ) {
                        char* buf = PyString_AsString(pyString);
                        if (buf) {
                            std::string ret;
                            ret.append(buf);
                            rowVec[j] = ret;
                            }
                    } else if (PyUnicode_Check(pyString) ) {
                        PyObject* utf8pyobj = PyUnicode_AsUTF8String(pyString); // newRef
                        if (utf8pyobj) {
                            char* cstr = PyBytes_AS_STRING(utf8pyobj); // Borrowed pointer
                            std::string ret;
                            ret.append(cstr);
                            Py_DECREF(utf8pyobj);
                            rowVec[j] = ret;
                        }
                    }
                }
                table.push_back(rowVec);
            }

            cppSelf->setTable(table);


            // End of code injection


        }
    }

    if (PyErr_Occurred()) {
        return 0;
    }
    Py_RETURN_NONE;

    Sbk_PathParamFunc_setTable_TypeError:
        const char* overloads[] = {"list", 0};
        Shiboken::setErrorAboutWrongArguments(pyArg, "NatronEngine.PathParam.setTable", overloads);
        return 0;
}