Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Cresson Remi
LSGRM
Commits
972a814a
Commit
972a814a
authored
Aug 10, 2016
by
remicres
Browse files
ENH: sort objects labels from left to right, then top to bottom
parent
01d93ed8
Changes
1
Hide whitespace changes
Inline
Side-by-side
include/lsrmGraphToOtbImage.txx
View file @
972a814a
...
...
@@ -12,17 +12,17 @@ namespace lsrm
const unsigned int width,
const unsigned int height)
{
LabelImageType::IndexType
index
;
LabelImageType::SizeType
s
ize;
LabelImageType::RegionType
r
egion;
LabelImageType::IndexType
labelImageRegionStart
;
LabelImageType::SizeType
labelImageRegionS
ize;
LabelImageType::RegionType
labelImageR
egion;
index[0] = 0; index
[1] = 0;
size[0] = width; s
ize[1] = height;
r
egion.SetIndex(
index
);
r
egion.SetSize(
s
ize);
labelImageRegionStart[0] = 0; labelImageRegionStart
[1] = 0;
labelImageRegionSize[0] = width; labelImageRegionS
ize[1] = height;
labelImageR
egion.SetIndex(
labelImageRegionStart
);
labelImageR
egion.SetSize(
labelImageRegionS
ize);
LabelImageType::Pointer label_img = LabelImageType::New();
label_img->SetRegions(
r
egion);
label_img->SetRegions(
labelImageR
egion);
label_img->Allocate();
using LabelImageIterator = itk::ImageRegionIterator<LabelImageType>;
...
...
@@ -39,13 +39,29 @@ namespace lsrm
for (auto& pix: borderPixels)
{
index
[0] = pix % width;
index
[1] = pix / width;
label_img->SetPixel(
index
, label);
labelImageRegionStart
[0] = pix % width;
labelImageRegionStart
[1] = pix / width;
label_img->SetPixel(
labelImageRegionStart
, label);
}
++label;
}
// Sort labels in their appearance order from left->right to top->bottom
const LabelImageType::InternalPixelType noDataLabel = 0;
vnl_vector<LabelImageType::InternalPixelType> lut(label,noDataLabel);
label=1;
for(it.GoToBegin();!it.IsAtEnd(); ++it)
{
unsigned int inputLabel = it.Get();
if (lut[ inputLabel ] == noDataLabel)
{
lut[ inputLabel ] = label;
label++;
}
}
for(it.GoToBegin();!it.IsAtEnd(); ++it)
it.Set(lut[it.Get()]);
// Fill holes
typedef itk::GrayscaleFillholeImageFilter<LabelImageType,LabelImageType> FillholeFilterType;
FillholeFilterType::Pointer fillFilter = FillholeFilterType::New();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment