コード例 #1
0
void drwnSegImagePixelFeatures::cacheInstanceData(const drwnSegImageInstance& instance)
{
    DRWN_LOG_DEBUG("caching data for " << instance.name());
    _instanceName = instance.name();
    _instanceWidth = instance.width();
    _instanceHeight = instance.height();
}
コード例 #2
0
void drwnSegImageStdRegionFeatures::cacheInstanceData(const drwnSegImageInstance& instance)
{
    // cache data needed by parent class
    drwnSegImageRegionFeatures::cacheInstanceData(instance);
    DRWN_FCN_TIC;

    // clear existing filterbank responses
    _filters.clear();

    // filterbank response images
    drwnTextonFilterBank filterBank(FILTER_BANDWIDTH);
    vector<cv::Mat> responses;
    filterBank.filter(instance.image(), responses);
    _filters.addResponseImages(responses);

    DRWN_LOG_DEBUG("...allocated "  << (_filters.memory() / (1024 * 1024))
        << "MB for filter responses");

    DRWN_FCN_TOC;
}
コード例 #3
0
void drwnSegImageStdPixelFeatures::cacheInstanceData(const drwnSegImageInstance& instance)
{
    // cache data needed by parent class
    drwnSegImagePixelFeatures::cacheInstanceData(instance);
    DRWN_FCN_TIC;

    // clear existing filterbank responses and cached features
    _filters.clear();
    _auxFeatures.clear();

    // filterbank response images
    drwnTextonFilterBank filterBank(FILTER_BANDWIDTH);
    vector<cv::Mat> responses;
    filterBank.filter(instance.image(), responses);
    _filters.addResponseImages(responses);

    // add RGB features
    if (INCLUDE_RGB) {
        cv::Mat rgb(instance.height(), instance.width(), CV_32FC3);
        instance.image().convertTo(rgb, CV_32FC3, 1.0 / 255.0);
        vector<cv::Mat> channels(3);
        cv::split(rgb, &channels[0]);
        _filters.addResponseImages(channels);
    }

    // add HOG features
    if (INCLUDE_HOG) {
        responses.clear();
        drwnHOGFeatures hogFeatureBank;
        hogFeatureBank.computeDenseFeatures(instance.image(), responses);
        _filters.addResponseImages(responses);
    }

    // add LBP features
    if (INCLUDE_LBP) {
        responses.clear();
        drwnLBPFilterBank lbpFilterBank(false);
        lbpFilterBank.filter(instance.image(), responses);
        _filters.addResponseImages(responses);
    }

    // load auxiliary features
    if (!AUX_FEATURE_EXT.empty()) {
        _auxFeatures.resize(instance.size(), vector<double>(AUX_FEATURE_EXT.size()));

        for (unsigned i = 0; i < AUX_FEATURE_EXT.size(); i++) {
            string filename = AUX_FEATURE_DIR + string("/") + _instanceName + AUX_FEATURE_EXT[i];
            DRWN_LOG_DEBUG("...loading features from " << filename);

            string ext(drwn::strExtension(AUX_FEATURE_EXT[i]));
            std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower);

            if (ext.compare("txt") == 0) {
                // text file
                ifstream ifs(filename.c_str());
                for (unsigned j = 0; j < _auxFeatures.size(); j++) {
                    ifs >> _auxFeatures[j][i];
                    DRWN_ASSERT_MSG(!ifs.fail(), "expecting " << _auxFeatures.size() <<
                        " features from file text " << filename << " but only read " << j);
                }
                ifs.close();

            } else if (ext.compare("bin") == 0) {
コード例 #4
0
void drwnSegImageRegionFeatures::cacheInstanceData(const drwnSegImageInstance& instance)
{
    DRWN_LOG_DEBUG("caching data for " << instance.name());
    _instanceName = instance.name();
    _instanceRegions = instance.superpixels.size();
}