コード例 #1
0
void DetectDescribe::performDescription(const cv::Mat& image,
		std::vector<cv::KeyPoint> &v, cv::Mat & descriptors,
		const int _descriptorType) {
	DescriptorExtractor *extractor;
	LDB *ldb;
	cv::SiftDescriptorExtractor extractorSift;

	switch (_descriptorType) {
	case 0:
		ldb = new LDB();
		break;
	case 1:
		// SIFT is created statically
		break;
	case 2:
		extractor = new cv::SurfDescriptorExtractor();
		break;
	case 3:
		extractor = new cv::ORB();
		break;
	case 4:
		extractor = new cv::BriefDescriptorExtractor();
		break;
	case 5:
		extractor = new cv::BRISK();
		break;
	case 6:
		extractor = new cv::FREAK();
		break;
	default:
		extractor = new cv::ORB();
	}

	if (_descriptorType == 0) {
		cv::Mat dst;
		cv::cvtColor(image, dst, CV_BGR2GRAY);
		ldb->compute(dst, v, descriptors);
		delete ldb;
	} else if (_descriptorType == 1) {
		extractorSift.compute(image, v, descriptors);
	} else {
		extractor->compute(image, v, descriptors);
		delete extractor;
	}
}
コード例 #2
0
ファイル: D_Ldb.cpp プロジェクト: roberto-arroyo/OpenABLE
/**
 * @brief This function calculates a D-LDB descriptor for the stereo pair
 * @param img_left_d Left image
 * @param img_right_d Right image
 * @param kpts Processed keypoints
 * @param descriptor Obtained descriptor
 *
*/
Mat D_Ldb::compute_D_Ldb(Mat &img_left_d, Mat &img_right_d, vector<KeyPoint> &kpts, Mat &descriptor){

    Mat descriptorDisp;
    Mat disparity;
    LDB ldb;

    // Process the stereo pair and D-LDB
    undistort_rectify_init(img_left_d.size());
    undistort_rectify_images(img_left_d,img_right_d);
    depth_image_to_cv_image();
    get_color_disparity_map().copyTo(disparity);
    cvtColor(disparity,disparity,COLOR_RGB2GRAY);
    //imshow("Disparity", disparity);
    //waitKey();
    ldb.compute(img_left_d,kpts,descriptor);
    ldb.compute(disparity,kpts,descriptorDisp);
    cv::hconcat(descriptor,descriptorDisp,descriptor);

    return descriptor;

}