extern OBJ _AArrayFold_Sb(OBJ f,OBJ a) /* \ */ { NAT i = 1,l = leng_array(a); OBJ r; if (l == 0){ HLT("\\'ArrayFold: array is empty"); } if (l > 1) { copy_closure(f,l-2); } else { free_closure(f,1); } if (excl_array(a,1)){ r = data_array(a)[0]; while (i < l){ OBJ t = data_array(a)[i]; r = EVAL2(f,t,r); i++; } dispose_array_flat(a); } else { r = data_array(a)[0]; copy_some(r,1); while (i < l){ OBJ t = data_array(a)[i]; copy_some(t,1); r = EVAL2(f,t,r); i++; } decr_array(a,1); } return r; }
extern OBJ _javabind_fromObjectArray(int dim, jclass clazz, OBJ (*conv)(jobject), jarray jarr){ OBJ arr; if (jarr != NULL){ jsize leng,i; leng = (*javabind_env)->GetArrayLength(javabind_env, jarr); arr = alloc_array(leng); for (i = 0; i < leng; i++){ jobject jo = (*javabind_env)->GetObjectArrayElement(javabind_env, jarr, i); javabind_catch_abort(); if (dim > 1){ data_array(arr)[i] = _javabind_fromObjectArray(dim-1, clazz, conv, jo); } else { data_array(arr)[i] = (*conv)(jo); } } (*javabind_env)->DeleteLocalRef(javabind_env, jarr); return arr; } else { arr = alloc_array(0); set_sflag(arr, null_sflag); return arr; } }
extern OBJ _AArrayFold_Ss(OBJ f,OBJ a) /* / */ { NAT i = leng_array(a); OBJ r; if (i == 0){ HLT("/'ArrayFold: array is empty"); } if (i > 1) { copy_closure(f,i-2); } else { free_closure(f,1); } if (excl_array(a,1)){ --i; r = data_array(a)[i]; while (i > 0){ OBJ t; i--; t = data_array(a)[i]; r = EVAL2(f,t,r); } dispose_array_flat(a); } else { --i; r = data_array(a)[i]; copy_some(r,1); while (i > 0){ OBJ t; i--; t = data_array(a)[i]; copy_some(t,1); r = EVAL2(f,t,r); } decr_array(a,1); } return r; }
extern jobject _javabind_asObjectArray(int dim, jclass clazz, jobject (*asJava)(OBJ), OBJ arr){ jsize leng,i, excl; jarray jarr; excl = excl_array(arr, 1); leng = leng_array(arr); jarr = (*javabind_env)->NewObjectArray(javabind_env, leng, array_type(dim-1, clazz), NULL); javabind_catch_abort(); if (dim > 1){ for (i = 0; i < leng; i++){ OBJ subArr = data_array(arr)[i]; jobject jo; if (!excl) copy_array(subArr, 1); jo = _javabind_asObjectArray(dim-1, clazz, asJava, subArr); (*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i, jo); javabind_catch_abort(); (*javabind_env)->DeleteLocalRef(javabind_env, jo); } } else { /* passing asJava alone doesnt works anymore since 1.1b (the free method is required as well). Yet, the only unregular treatment of free currently is for _javabind_asObject; so a quick hack checking for the function address helps out. */ if (asJava == _javabind_asObject){ for (i = 0; i < leng; i++){ OBJ elem = data_array(arr)[i]; (*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i, get_jobject(elem)); javabind_catch_abort(); if (excl){ if (excl_jobject(elem, 1)){ _javabind_dispose(elem); } else { decr_jobject(elem, 1); } } } } else { for (i = 0; i < leng; i++){ OBJ elem = data_array(arr)[i]; jobject jo; if (!excl) copy_some(elem, 1); jo = (*asJava)(elem); (*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i, jo); javabind_catch_abort(); (*javabind_env)->DeleteLocalRef(javabind_env, jo); } } } if (excl){ dispose_array_flat(arr); } else { decr_array(arr,1); } return jarr; }
extern OBJ _AUserAndGroup_Ahc_Agetgroups(OBJ x1) /* hc_getgroups */ {OBJ r; int gasize; free_some(x1,1); gasize=getgroups(0,NULL); if(gasize<0){ return_unix_failure(errno); } if(gasize==0){ r=alloc_array(0); } else{ gid_t *gidarray; int i; gidarray=(gid_t*)malloc_aux(sizeof(gid_t)*gasize); if(getgroups(gasize,gidarray)!=gasize){ return_unix_failure(errno); } r=alloc_array(gasize); for(i=0;i<gasize;i++){ make_groupid(gidarray[i],data_array(r)[i]); } free_aux(gidarray); } return_okay(r); }
bool VilGMM::train(const vcl_vector<vnl_vector<double> > & data) { vpdfl_gaussian_builder g_builder; vpdfl_mixture_builder builder; builder.init(g_builder,comp_n_); builder.set_weights_fixed(false); if (data.size() <= comp_n_ * 20) { return false; } if (gmm_) { delete gmm_; gmm_ = NULL; } gmm_ = builder.new_model(); mbl_data_array_wrapper<vnl_vector<double> > data_array(data); builder.build(*gmm_, data_array); if (verbose_) { vcl_cout<<"training sample number is "<<data.size()<<vcl_endl; vcl_cout<<"Probability distribution function is "<<gmm_<<vcl_endl; vcl_cout<<"Mean: "<<gmm_->mean()<<vcl_endl; vcl_cout<<"Var: "<<gmm_->variance()<<vcl_endl; } return true; }
bool VilGMM::train(const vil_image_view<vxl_byte> & image, const vil_image_view<vxl_byte> & maskImage, int mask) { assert(image.ni() == maskImage.ni()); assert(image.nj() == maskImage.nj()); assert(image.nplanes() == 3); vpdfl_gaussian_builder g_builder; vpdfl_mixture_builder builder; builder.init(g_builder,comp_n_); builder.set_weights_fixed(false); vcl_vector<vnl_vector<double> > data; for (int j = 0; j<image.nj(); j++) { for (int i = 0; i<image.ni(); i++) { if (maskImage(i, j) == mask) { vnl_vector<double> color(3); for (int k = 0; k<3; k++) { color[k] = image(i, j, k); } data.push_back(color); } } } if (data.size() <= comp_n_ * 20) { return false; } if (gmm_) { delete gmm_; gmm_ = NULL; } gmm_ = builder.new_model(); mbl_data_array_wrapper<vnl_vector<double> > data_array(data); builder.build(*gmm_, data_array); if (verbose_) { vcl_cout<<"training sample number is "<<data.size()<<vcl_endl; vcl_cout<<"Probability distribution function is "<<gmm_<<vcl_endl; vcl_cout<<"Mean: "<<gmm_->mean()<<vcl_endl; vcl_cout<<"Var: "<<gmm_->variance()<<vcl_endl; } return true; }
static OBJ convert_chararray(char **car) {OBJ r; int asz; asz=0; while(car[asz]!=NULL){ asz++; } if(asz==0){ r=alloc_array(0); } else{ int i; r=alloc_array(asz); for(i=0;i<asz;i++){ data_array(r)[i]=make_denotation(car[i]); } } return r;}