#ifndef __LSRM_BAATZ_SEGMENTER_TXX #define __LSRM_BAATZ_SEGMENTER_TXX #include #include namespace lsgrm { template void BaatzSegmenter::WriteSpecificAttributes(NodePointerType node, FILE * nodeStream) { std::size_t bands = node->m_Means.size(); fwrite(&(bands), sizeof(bands), 1, nodeStream); for(unsigned int b = 0; b < node->m_Means.size(); b++) { fwrite(&(node->m_Means[b]), sizeof(node->m_Means[b]), 1, nodeStream); fwrite(&(node->m_SquareMeans[b]), sizeof(node->m_SquareMeans[b]), 1, nodeStream); fwrite(&(node->m_SpectralSum[b]), sizeof(node->m_SpectralSum[b]), 1, nodeStream); fwrite(&(node->m_Std[b]), sizeof(node->m_Std[b]), 1, nodeStream); } } template void BaatzSegmenter::ReadSpecificAttributes(NodePointerType node, FILE * nodeStream) { std::size_t bands; fread(&(bands), sizeof(bands), 1, nodeStream); node->m_Means.assign(bands, 0); node->m_SquareMeans.assign(bands, 0); node->m_SpectralSum.assign(bands, 0); node->m_Std.assign(bands, 0); for(unsigned int b = 0; b < bands; b++) { fread(&(node->m_Means[b]), sizeof(node->m_Means[b]), 1, nodeStream); fread(&(node->m_SquareMeans[b]), sizeof(node->m_SquareMeans[b]), 1, nodeStream); fread(&(node->m_SpectralSum[b]), sizeof(node->m_SpectralSum[b]), 1, nodeStream); fread(&(node->m_Std[b]), sizeof(node->m_Std[b]), 1, nodeStream); } } template long long unsigned int BaatzSegmenter::GetNodeMemory(NodePointerType &node) { unsigned int nBands = node->m_Means.size(); //this->m_InputImage->GetNumberOfComponentsPerPixel(); long long unsigned int memory = 0; memory += sizeof(NodePointerType); // size of the node pointer memory += sizeof(NodeType); // size of the node (actually, size of the base node) memory += 4 * nBands * sizeof(float); // size of the 4 attributes, multiplied by the nb. of bands memory += node->m_Edges.size() * sizeof(EdgeType); // size of the edges return memory; } } // end of namespace lsrm #endif