MCPcopy Create free account
hub / github.com/MITK/MITK / RemoveGroup

Method RemoveGroup

Modules/Multilabel/src/mitkLabelSetImage.cpp:268–315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266}
267
268void mitk::MultiLabelSegmentation::RemoveGroup(GroupIndexType indexToDelete)
269{
270 if (!this->ExistGroup(indexToDelete)) mitkThrow() << "Cannot remove group. Group does not exist. Invalid group index: "<<indexToDelete;
271
272 auto relevantLabels = m_GroupToLabelMap[indexToDelete];
273
274 {
275 std::lock_guard<std::shared_mutex> guard(m_LabelNGroupMapsMutex);
276 // remove labels of group
277 for (auto labelValue : relevantLabels)
278 {
279 auto label = m_LabelMap[labelValue];
280 this->ReleaseLabel(label);
281 m_LabelToGroupMap.erase(labelValue);
282 m_LabelMap.erase(labelValue);
283 this->InvokeEvent(LabelRemovedEvent(labelValue));
284 }
285
286 // remove the group entries in the maps and the image.
287 m_Groups.erase(m_Groups.begin() + indexToDelete);
288 m_GroupToLabelMap.erase(m_GroupToLabelMap.begin() + indexToDelete);
289 m_GroupContainer.erase(m_GroupContainer.begin() + indexToDelete);
290
291 //update old indexes in m_LabelToGroupMap to new group indexes
292 for (auto& element : m_LabelToGroupMap)
293 {
294 if (element.second > indexToDelete) element.second = element.second - 1;
295 }
296 }
297
298
299 if (!this->ExistLabel(m_ActiveLabelValue))
300 {
301 //the current active label was removed with the group. Set active label to the first defined label
302 if (!m_LabelMap.empty())
303 {
304 m_ActiveLabelValue = m_LabelMap.begin()->first;
305 }
306 else
307 {
308 m_ActiveLabelValue = MultiLabelSegmentation::UNLABELED_VALUE;
309 }
310 }
311
312 this->InvokeEvent(LabelsChangedEvent(relevantLabels));
313 this->InvokeEvent(GroupRemovedEvent(indexToDelete));
314 this->Modified();
315}
316
317mitk::MultiLabelSegmentation::LabelValueVectorType mitk::MultiLabelSegmentation::ExtractLabelValuesFromLabelVector(const LabelVectorType& labels)
318{

Calls 7

ExistGroupMethod · 0.95
ReleaseLabelMethod · 0.95
ExistLabelMethod · 0.95
eraseMethod · 0.45
beginMethod · 0.45
emptyMethod · 0.45
ModifiedMethod · 0.45