X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=folded-ctf.git;a=blobdiff_plain;f=materials.cc;h=ad79830ae2c622eea0314bb1640a7183645f753a;hp=64729dbadae673ab6ba889e68a69ec42756e0f80;hb=94ef84aef3a1845326c7c43970997b701a919bd6;hpb=9029782367bf98ab9bbb5dd1affc64a13342f3e1 diff --git a/materials.cc b/materials.cc index 64729db..ad79830 100644 --- a/materials.cc +++ b/materials.cc @@ -75,26 +75,7 @@ void write_referential_png(char *filename, referential->draw(&result_sp, level); } - (*global.log_stream) << "Writing " << filename << endl; - result_sp.write_png(filename); -} - -void write_one_pi_feature_png(char *filename, - LabelledImage *image, - PoseCellHierarchy *hierarchy, - int nb_target, - int level, - PiFeature *pf) { - - PoseCell target_cell; - hierarchy->get_containing_cell(image, level, - image->get_target_pose(nb_target), &target_cell); - PiReferential referential(&target_cell); - RGBImage result(image->width(), image->height()); - image->to_rgb(&result); - RGBImageSubpixel result_sp(&result); - referential.draw(&result_sp, level); - // pf->draw(&result_sp, 255, 255, 0, &referential); + cout << "Writing " << filename << endl; result_sp.write_png(filename); } @@ -109,33 +90,35 @@ void write_pool_images_with_poses_and_referentials(LabelledImagePool *pool, PoseCellHierarchy *hierarchy = new PoseCellHierarchy(pool); - for(int i = 0; i < min(global.nb_images, pool->nb_images()); i++) { - image = pool->grab_image(i); - RGBImage result(image->width(), image->height()); - image->to_rgb(&result); - RGBImageSubpixel result_sp(&result); - - if(global.pictures_for_article) { - for(int t = 0; t < image->nb_targets(); t++) { - image->get_target_pose(t)->draw(8, 255, 255, 255, - hierarchy->nb_levels() - 1, &result_sp); - + if(global.material_feature_nb < 0) { + for(int i = 0; i < min(global.nb_images, pool->nb_images()); i++) { + image = pool->grab_image(i); + RGBImage result(image->width(), image->height()); + image->to_rgb(&result); + RGBImageSubpixel result_sp(&result); + + if(global.pictures_for_article) { + for(int t = 0; t < image->nb_targets(); t++) { + image->get_target_pose(t)->draw(8, 255, 255, 255, + hierarchy->nb_levels() - 1, &result_sp); + + } + for(int t = 0; t < image->nb_targets(); t++) { + image->get_target_pose(t)->draw(4, 0, 0, 0, + hierarchy->nb_levels() - 1, &result_sp); + } + } else { + for(int t = 0; t < image->nb_targets(); t++) { + image->get_target_pose(t)->draw(4, 255, 128, 0, + hierarchy->nb_levels() - 1, &result_sp); + } } - for(int t = 0; t < image->nb_targets(); t++) { - image->get_target_pose(t)->draw(4, 0, 0, 0, - hierarchy->nb_levels() - 1, &result_sp); - } - } else { - for(int t = 0; t < image->nb_targets(); t++) { - image->get_target_pose(t)->draw(4, 255, 128, 0, - hierarchy->nb_levels() - 1, &result_sp); - } - } - sprintf(buffer, "/tmp/truth-%05d.png", i); - cout << "Writing " << buffer << endl; - result_sp.write_png(buffer); - pool->release_image(i); + sprintf(buffer, "/tmp/truth-%05d.png", i); + cout << "Writing " << buffer << endl; + result_sp.write_png(buffer); + pool->release_image(i); + } } for(int i = 0; i < min(global.nb_images, pool->nb_images()); i++) { @@ -145,8 +128,6 @@ void write_pool_images_with_poses_and_referentials(LabelledImagePool *pool, image->to_rgb(&result); RGBImageSubpixel result_sp(&result); - int u = 0; - // image->compute_rich_structure(); for(int t = 0; t < image->nb_targets(); t++) { @@ -164,32 +145,26 @@ void write_pool_images_with_poses_and_referentials(LabelledImagePool *pool, PiReferential referential(&target_cell); - sprintf(buffer, "/tmp/referential-%05d-%02d.png", i, u); image->compute_rich_structure(); - write_referential_png(buffer, hierarchy->nb_levels() - 1, image, &referential, 0); - - if(detector) { - int nb_features = 100; - for(int f = 0; f < nb_features; f++) - if(f == 0 || f == 50 || f == 53) { - int n_family, n_feature; - if(f < nb_features/2) { - n_family = 0; - n_feature = f; - } else { - n_family = detector->_nb_classifiers_per_level; - n_feature = f - nb_features/2; - } - pf = detector->_pi_feature_families[n_family]->get_feature(n_feature); - sprintf(buffer, "/tmp/pf-%05d-%02d-%03d.png", i, u, f); - write_referential_png(buffer, - hierarchy->nb_levels() - 1, - image, - &referential, - pf); - } + + if(global.material_feature_nb < 0) { + sprintf(buffer, "/tmp/referential-%05d-%02d.png", i, t); + write_referential_png(buffer, hierarchy->nb_levels() - 1, image, &referential, 0); + } else if(detector) { + int n_family = 0; + int n_feature = global.material_feature_nb; + while(n_feature > detector->_pi_feature_families[n_family]->nb_features()) { + n_family++; + n_feature -= detector->_pi_feature_families[n_family]->nb_features(); + } + pf = detector->_pi_feature_families[n_family]->get_feature(n_feature); + sprintf(buffer, "/tmp/pf-%05d-%02d-%05d.png", i, t, global.material_feature_nb); + write_referential_png(buffer, + hierarchy->nb_levels() - 1, + image, + &referential, + pf); } - u++; } pool->release_image(i); @@ -233,7 +208,6 @@ void write_image_with_detections(const char *filename, } } - (*global.log_stream) << "Writing " << filename << endl; - + cout << "Writing " << filename << endl; result_sp.write_png(filename); }