Label object representation and manipulation with ITK

Lehmann, Gaetan1*
1.INRA
Abstract

Abstract

Richard Beare has recently introduced a new filter to efficiently labelize the connected components with ITK, and has also proposed to use the run-length encoding used in that filter to implement some of the most useful binary mathematical morphology operators: the opening by attribute. Following that idea, and after have searched a way to use the ITK's spatial objects for this task, a new set of classes have been developed to represent and manipulate the label images and the objects within them in ITK. Those new classes have been used to implement several label images manipulation based on object attributes, as well as the binary and label specialization of some mathematical morphology filters based on the morphological reconstruction. This contribution comes with 65 new classes, and should greatly enhance the binary mathematical morphology in ITK. All the source codes are provided, as well as a full set of tests and several usage examples of the new classes.

Keywords

mathematical morpholgylabel object
Manuscript
Source Code and Data

Source Code and Data

binaryAttributeMorphologyCMakeLists.txt9.3 KBIJMacros.txt3.1 KBTODO.txt627 BWrappingCMakeLists.txt570 BWrapITKTypes.cmake424 Bwrap_ITKLabelCollectionImageBase.cmake700 Bwrap_itkBinaryClosingByReconstructionImageFilter.cmake276 Bwrap_itkBinaryFillholeImageFilter.cmake97 Bwrap_itkBinaryGrindPeakImageFilter.cmake98 Bwrap_itkBinaryImageToLabelCollectionImageFilter.cmake316 Bwrap_itkBinaryOpeningByReconstructionImageFilter.cmake276 Bwrap_itkBinaryReconstructionByDilationImageFilter.cmake113 Bwrap_itkBinaryReconstructionByErosionImageFilter.cmake112 Bwrap_itkBinaryShapeKeepNObjectsImageFilter.cmake106 Bwrap_itkBinaryShapeOpeningImageFilter.cmake101 Bwrap_itkBinaryStatisticsKeepNObjectsImageFilter.cmake348 Bwrap_itkBinaryStatisticsOpeningImageFilter.cmake343 Bwrap_itkInPlaceLabelCollectionImageFilter.cmake177 Bwrap_itkLabelCollectionImage.cmake125 Bwrap_itkLabelCollectionImageFilter.cmake421 Bwrap_itkLabelCollectionImageToBinaryImageFilter.cmake276 Bwrap_itkLabelCollectionImageToLabelImageFilter.cmake275 Bwrap_itkLabelCollectionImageToMaskImageFilter.cmake271 Bwrap_itkLabelImageToLabelCollectionImageFilter.cmake315 Bwrap_itkLabelObject.cmake156 Bwrap_itkLabelShapeKeepNObjectsImageFilter.cmake105 Bwrap_itkLabelShapeOpeningImageFilter.cmake100 Bwrap_itkLabelStatisticsKeepNObjectsImageFilter.cmake347 Bwrap_itkLabelStatisticsOpeningImageFilter.cmake342 Bwrap_itkReconstructionLabelCollectionImageFilter.cmake281 Bwrap_itkShapeKeepNObjectsLabelCollectionImageFilter.cmake187 Bwrap_itkShapeLabelCollectionImageFilter.cmake175 Bwrap_itkShapeLabelObject.cmake161 Bwrap_itkShapeOpeningLabelCollectionImageFilter.cmake182 Bwrap_itkShapeRelabelImageFilter.cmake95 Bwrap_itkShapeRelabelLabelCollectionImageFilter.cmake182 Bwrap_itkStatisticsKeepNObjectsLabelCollectionImageFilter.cmake192 Bwrap_itkStatisticsLabelCollectionImageFilter.cmake274 Bwrap_itkStatisticsLabelObject.cmake166 Bwrap_itkStatisticsOpeningLabelCollectionImageFilter.cmake187 Bwrap_itkStatisticsRelabelImageFilter.cmake337 Bwrap_itkStatisticsRelabelLabelCollectionImageFilter.cmake187 BarticleArticle.tex40.7 KBInsightArticle.cls3.9 KBInsightJournal.bib155.8 KBInsightJournal.sty35 KBMakefile1.9 KBalgorithm.sty2.2 KBalgorithmic.sty5.4 KBamssymb.sty14.9 KBfancyhdr.sty14.4 KBfloatflt.sty10.8 KBfncychap.sty10.1 KBtimes.sty857 Battribute_values.cxx2 KBbinary_closing_by_reconstruction.cxx1.6 KBbinary_fillhole.cxx1.3 KBbinary_grind_peak.cxx1.3 KBbinary_opening_by_reconstruction.cxx1.6 KBbinary_reconstruction_by_dilation.cxx1.5 KBbinary_reconstruction_by_erosion.cxx1.5 KBbinary_shape_keep_n_objects.cxx1.3 KBbinary_shape_opening.cxx1.3 KBbinary_statistics_keep_n_objects.cxx1.5 KBbinary_statistics_opening.cxx1.5 KBgeneric_attribute.cxx5.7 KBimages2th_ESCells.hdr348 B2th_ESCells.img4.5 MB2th_cthead1.png3 KBbinary_physical_size_opening-100-0-100-0-0.png3.3 KBbinary_physical_size_opening-100-0-100-0-1.png3.3 KBbinary_physical_size_opening-100-0-100-1-0.png2.9 KBbinary_physical_size_opening-100-0-100-1-1.png2.8 KBbinary_physical_size_opening-100-0-10000-0-0.png3.2 KBbinary_physical_size_opening-100-0-10000-0-1.png3.3 KBbinary_physical_size_opening-100-0-10000-1-0.png3 KBbinary_physical_size_opening-100-0-10000-1-1.png2.9 KBbinary_physical_size_opening-100-150-100-0-0.png3.7 KBbinary_physical_size_opening-100-150-100-0-1.png3.7 KBbinary_physical_size_opening-100-150-100-1-0.png3.7 KBbinary_physical_size_opening-100-150-100-1-1.png3.7 KBbinary_physical_size_opening-100-150-10000-0-0.png3.7 KBbinary_physical_size_opening-100-150-10000-0-1.png3.7 KBbinary_physical_size_opening-100-150-10000-1-0.png3.7 KBbinary_physical_size_opening-100-150-10000-1-1.png3.7 KBbinary_physical_size_opening-200-0-100-0-0.png3.5 KBbinary_physical_size_opening-200-0-100-0-1.png3.5 KBbinary_physical_size_opening-200-0-100-1-0.png3.2 KBbinary_physical_size_opening-200-0-100-1-1.png3.2 KBbinary_physical_size_opening-200-0-10000-0-0.png3.2 KBbinary_physical_size_opening-200-0-10000-0-1.png3.2 KBbinary_physical_size_opening-200-0-10000-1-0.png3.5 KBbinary_physical_size_opening-200-0-10000-1-1.png3.5 KBbinary_physical_size_opening-200-150-100-0-0.png3.5 KBbinary_physical_size_opening-200-150-100-0-1.png3.5 KBbinary_physical_size_opening-200-150-100-1-0.png3.7 KBbinary_physical_size_opening-200-150-100-1-1.png3.7 KBbinary_physical_size_opening-200-150-10000-0-0.png3.8 KBbinary_physical_size_opening-200-150-10000-0-1.png3.8 KBbinary_physical_size_opening-200-150-10000-1-0.png3.5 KBbinary_physical_size_opening-200-150-10000-1-1.png3.5 KBbinary_size_keep_n_objects-100-0-10-0-0.png3.3 KBbinary_size_keep_n_objects-100-0-10-0-1.png3.3 KBbinary_size_keep_n_objects-100-0-10-1-0.png2.5 KBbinary_size_keep_n_objects-100-0-10-1-1.png2.5 KBbinary_size_keep_n_objects-100-0-3-0-0.png3.2 KBbinary_size_keep_n_objects-100-0-3-0-1.png3.3 KBbinary_size_keep_n_objects-100-0-3-1-0.png2.5 KBbinary_size_keep_n_objects-100-0-3-1-1.png2.5 KBbinary_size_keep_n_objects-100-150-10-0-0.png3.7 KBbinary_size_keep_n_objects-100-150-10-0-1.png3.6 KBbinary_size_keep_n_objects-100-150-10-1-0.png3.6 KBbinary_size_keep_n_objects-100-150-10-1-1.png3.6 KBbinary_size_keep_n_objects-100-150-3-0-0.png3.7 KBbinary_size_keep_n_objects-100-150-3-0-1.png3.7 KBbinary_size_keep_n_objects-100-150-3-1-0.png3.6 KBbinary_size_keep_n_objects-100-150-3-1-1.png3.6 KBbinary_size_keep_n_objects-200-0-10-0-0.png3.5 KBbinary_size_keep_n_objects-200-0-10-0-1.png3.5 KBbinary_size_keep_n_objects-200-0-10-1-0.png3.2 KBbinary_size_keep_n_objects-200-0-10-1-1.png3.2 KBbinary_size_keep_n_objects-200-0-3-0-0.png3.5 KBbinary_size_keep_n_objects-200-0-3-0-1.png3.5 KBbinary_size_keep_n_objects-200-0-3-1-0.png3.2 KBbinary_size_keep_n_objects-200-0-3-1-1.png3.2 KBbinary_size_keep_n_objects-200-150-10-0-0.png3.5 KBbinary_size_keep_n_objects-200-150-10-0-1.png3.5 KBbinary_size_keep_n_objects-200-150-10-1-0.png3.8 KBbinary_size_keep_n_objects-200-150-10-1-1.png3.7 KBbinary_size_keep_n_objects-200-150-3-0-0.png3.5 KBbinary_size_keep_n_objects-200-150-3-0-1.png3.5 KBbinary_size_keep_n_objects-200-150-3-1-0.png3.8 KBbinary_size_keep_n_objects-200-150-3-1-1.png3.8 KBbinary_size_on_border_opening-100-0-60-0-0.png2.6 KBbinary_size_on_border_opening-100-0-60-0-1.png2.6 KBbinary_size_on_border_opening-100-0-60-1-0.png3.5 KBbinary_size_on_border_opening-100-0-60-1-1.png3.5 KBbinary_size_on_border_opening-100-150-60-0-0.png3.6 KBbinary_size_on_border_opening-100-150-60-0-1.png3.6 KBbinary_size_on_border_opening-100-150-60-1-0.png3.5 KBbinary_size_on_border_opening-100-150-60-1-1.png3.5 KBbinary_size_on_border_opening-200-0-60-0-0.png3.3 KBbinary_size_on_border_opening-200-0-60-0-1.png3.3 KBbinary_size_on_border_opening-200-0-60-1-0.png3.4 KBbinary_size_on_border_opening-200-0-60-1-1.png3.4 KBbinary_size_on_border_opening-200-150-60-0-0.png3.8 KBbinary_size_on_border_opening-200-150-60-0-1.png3.8 KBbinary_size_on_border_opening-200-150-60-1-0.png3.5 KBbinary_size_on_border_opening-200-150-60-1-1.png3.5 KBbinary_size_opening-100-0-100-0-0.png3.3 KBbinary_size_opening-100-0-100-0-1.png3.3 KBbinary_size_opening-100-0-100-1-0.png2.9 KBbinary_size_opening-100-0-100-1-1.png2.8 KBbinary_size_opening-100-0-10000-0-0.png3.2 KBbinary_size_opening-100-0-10000-0-1.png3.3 KBbinary_size_opening-100-0-10000-1-0.png3 KBbinary_size_opening-100-0-10000-1-1.png2.9 KBbinary_size_opening-100-150-100-0-0.png3.7 KBbinary_size_opening-100-150-100-0-1.png3.7 KBbinary_size_opening-100-150-100-1-0.png3.7 KBbinary_size_opening-100-150-100-1-1.png3.7 KBbinary_size_opening-100-150-10000-0-0.png3.7 KBbinary_size_opening-100-150-10000-0-1.png3.7 KBbinary_size_opening-100-150-10000-1-0.png3.7 KBbinary_size_opening-100-150-10000-1-1.png3.7 KBbinary_size_opening-200-0-100-0-0.png3.5 KBbinary_size_opening-200-0-100-0-1.png3.5 KBbinary_size_opening-200-0-100-1-0.png3.2 KBbinary_size_opening-200-0-100-1-1.png3.2 KBbinary_size_opening-200-0-10000-0-0.png3.2 KBbinary_size_opening-200-0-10000-0-1.png3.2 KBbinary_size_opening-200-0-10000-1-0.png3.5 KBbinary_size_opening-200-0-10000-1-1.png3.5 KBbinary_size_opening-200-150-100-0-0.png3.5 KBbinary_size_opening-200-150-100-0-1.png3.5 KBbinary_size_opening-200-150-100-1-0.png3.7 KBbinary_size_opening-200-150-100-1-1.png3.7 KBbinary_size_opening-200-150-10000-0-0.png3.8 KBbinary_size_opening-200-150-10000-0-1.png3.8 KBbinary_size_opening-200-150-10000-1-0.png3.5 KBbinary_size_opening-200-150-10000-1-1.png3.5 KBcthead1-label.png1.6 KBcthead1.png192.6 KBlabel_physical_size_opening-0-10000-0.png1.5 KBlabel_physical_size_opening-0-10000-1.png988 Blabel_physical_size_opening-0-3000-0.png1.6 KBlabel_physical_size_opening-0-3000-1.png547 Blabel_physical_size_opening-176-10000-0.png1.2 KBlabel_physical_size_opening-176-10000-1.png1.6 KBlabel_physical_size_opening-176-3000-0.png1.4 KBlabel_physical_size_opening-176-3000-1.png1.6 KBlabel_size_keep_n_objects-0-1-0.png1.3 KBlabel_size_keep_n_objects-0-1-1.png547 Blabel_size_keep_n_objects-0-3-0.png1.6 KBlabel_size_keep_n_objects-0-3-1.png1.3 KBlabel_size_keep_n_objects-176-1-0.png1.2 KBlabel_size_keep_n_objects-176-1-1.png1.5 KBlabel_size_keep_n_objects-176-3-0.png1.5 KBlabel_size_keep_n_objects-176-3-1.png1.6 KBlabel_size_opening-0-10000-0.png1.5 KBlabel_size_opening-0-10000-1.png988 Blabel_size_opening-0-3000-0.png1.6 KBlabel_size_opening-0-3000-1.png547 Blabel_size_opening-176-10000-0.png1.2 KBlabel_size_opening-176-10000-1.png1.6 KBlabel_size_opening-176-3000-0.png1.4 KBlabel_size_opening-176-3000-1.png1.6 KBsize_relabel-0-0-0.png1.4 KBsize_relabel-0-0-1.png1.6 KBsize_relabel-0-1-0.png1.6 KBsize_relabel-0-1-1.png1.6 KBsize_relabel-176-0-0.png1.4 KBsize_relabel-176-0-1.png1.6 KBsize_relabel-176-1-0.png1.7 KBsize_relabel-176-1-1.png1.6 KBinstall_template.sh384 BitkAttributeKeepNObjectsLabelCollectionImageFilter.h4.8 KBitkAttributeKeepNObjectsLabelCollectionImageFilter.txx3.3 KBitkAttributeLabelObject.h3.3 KBitkAttributeOpeningLabelCollectionImageFilter.h4.3 KBitkAttributeOpeningLabelCollectionImageFilter.txx2.8 KBitkAttributeRelabelImageFilter.h6.3 KBitkAttributeRelabelImageFilter.txx4.2 KBitkAttributeRelabelLabelCollectionImageFilter.h4.6 KBitkAttributeRelabelLabelCollectionImageFilter.txx3.3 KBitkBinaryAttributeKeepNObjectsImageFilter.h7.3 KBitkBinaryAttributeKeepNObjectsImageFilter.txx4.9 KBitkBinaryAttributeOpeningImageFilter.h7.4 KBitkBinaryAttributeOpeningImageFilter.txx4.8 KBitkBinaryClosingByReconstructionImageFilter.h4.6 KBitkBinaryClosingByReconstructionImageFilter.txx4.3 KBitkBinaryFillholeImageFilter.h4.7 KBitkBinaryFillholeImageFilter.txx4.7 KBitkBinaryGrindPeakImageFilter.h5 KBitkBinaryGrindPeakImageFilter.txx4.4 KBitkBinaryImageToLabelCollectionImageFilter.h7.8 KBitkBinaryImageToLabelCollectionImageFilter.txx14.3 KBitkBinaryNotImageFilter.h3.6 KBitkBinaryOpeningByReconstructionImageFilter.h4.8 KBitkBinaryOpeningByReconstructionImageFilter.txx3.7 KBitkBinaryReconstructionByDilationImageFilter.h7.2 KBitkBinaryReconstructionByDilationImageFilter.txx4.1 KBitkBinaryReconstructionByErosionImageFilter.h7.2 KBitkBinaryReconstructionByErosionImageFilter.txx4.7 KBitkBinaryShapeKeepNObjectsImageFilter.h7.2 KBitkBinaryShapeKeepNObjectsImageFilter.txx4.3 KBitkBinaryShapeOpeningImageFilter.h7.1 KBitkBinaryShapeOpeningImageFilter.txx4.3 KBitkBinaryStatisticsKeepNObjectsImageFilter.h8.2 KBitkBinaryStatisticsKeepNObjectsImageFilter.txx4.6 KBitkBinaryStatisticsOpeningImageFilter.h8.2 KBitkBinaryStatisticsOpeningImageFilter.txx4.6 KBitkConnectedComponentAlgorithm.h3.8 KBitkInPlaceLabelCollectionImageFilter.h7.3 KBitkInPlaceLabelCollectionImageFilter.txx3.9 KBitkLabelAttributeKeepNObjectsImageFilter.h6.7 KBitkLabelAttributeKeepNObjectsImageFilter.txx4.3 KBitkLabelAttributeOpeningImageFilter.h6.7 KBitkLabelAttributeOpeningImageFilter.txx4.3 KBitkLabelCollectionImage.h11.4 KBitkLabelCollectionImage.txx7.9 KBitkLabelCollectionImageFilter.h4.4 KBitkLabelCollectionImageFilter.txx3.8 KBitkLabelCollectionImageToAttributeImageFilter.h4.6 KBitkLabelCollectionImageToAttributeImageFilter.txx4.1 KBitkLabelCollectionImageToBinaryImageFilter.h5.5 KBitkLabelCollectionImageToBinaryImageFilter.txx5 KBitkLabelCollectionImageToLabelImageFilter.h3.5 KBitkLabelCollectionImageToLabelImageFilter.txx2.3 KBitkLabelCollectionImageToMaskImageFilter.h5.7 KBitkLabelCollectionImageToMaskImageFilter.txx7.6 KBitkLabelImageToLabelCollectionImageFilter.h4.7 KBitkLabelImageToLabelCollectionImageFilter.txx5.7 KBitkLabelObject.h7.7 KBitkLabelPerimeterEstimationCalculator.h2.9 KBitkLabelPerimeterEstimationCalculator.txx4.4 KBitkLabelShapeKeepNObjectsImageFilter.h6.5 KBitkLabelShapeKeepNObjectsImageFilter.txx3.8 KBitkLabelShapeOpeningImageFilter.h6.5 KBitkLabelShapeOpeningImageFilter.txx3.8 KBitkLabelStatisticsKeepNObjectsImageFilter.h7.5 KBitkLabelStatisticsKeepNObjectsImageFilter.txx4.1 KBitkLabelStatisticsOpeningImageFilter.h7.5 KBitkLabelStatisticsOpeningImageFilter.txx4.1 KBitkReconstructionLabelCollectionImageFilter.h4.2 KBitkReconstructionLabelCollectionImageFilter.txx2.6 KBitkShapeKeepNObjectsLabelCollectionImageFilter.h4.5 KBitkShapeKeepNObjectsLabelCollectionImageFilter.txx4.6 KBitkShapeLabelCollectionImageFilter.h5.1 KBitkShapeLabelCollectionImageFilter.txx9.5 KBitkShapeLabelObject.h9.9 KBitkShapeOpeningLabelCollectionImageFilter.h4.5 KBitkShapeOpeningLabelCollectionImageFilter.txx3.9 KBitkShapeRelabelImageFilter.h6.3 KBitkShapeRelabelImageFilter.txx3.7 KBitkShapeRelabelLabelCollectionImageFilter.h4.2 KBitkShapeRelabelLabelCollectionImageFilter.txx4.6 KBitkStatisticsKeepNObjectsLabelCollectionImageFilter.h4.7 KBitkStatisticsKeepNObjectsLabelCollectionImageFilter.txx4.9 KBitkStatisticsLabelCollectionImageFilter.h4.4 KBitkStatisticsLabelCollectionImageFilter.txx7.4 KBitkStatisticsLabelObject.h16.3 KBitkStatisticsOpeningLabelCollectionImageFilter.h4.6 KBitkStatisticsOpeningLabelCollectionImageFilter.txx4.3 KBitkStatisticsRelabelImageFilter.h7.4 KBitkStatisticsRelabelImageFilter.txx4 KBitkStatisticsRelabelLabelCollectionImageFilter.h4.3 KBitkStatisticsRelabelLabelCollectionImageFilter.txx4.9 KBlabel_shape_keep_n_objects.cxx1.2 KBlabel_shape_opening.cxx1.2 KBlabel_statistics_keep_n_objects.cxx1.4 KBlabel_statistics_opening.cxx1.4 KBmask.cxx1.7 KBperf_threads.cxx3.5 KBshape_relabel.cxx1.2 KBstat_templatesitkLabelXXXKeepNObjectsImageFilter.h5.7 KBitkLabelXXXOpeningImageFilter.h5.6 KBitkXXXKeepNObjectsLabelCollectionImageFilter.h3.2 KBitkXXXOpeningLabelCollectionImageFilter.h3.1 KBitkXXXRelabelImageFilter.h5.6 KBitkXXXRelabelLabelCollectionImageFilter.h3.1 KBwrap_itkLabelXXXKeepNObjectsImageFilter.cmake356 Bwrap_itkLabelXXXOpeningImageFilter.cmake351 Bwrap_itkXXXKeepNObjectsLabelCollectionImageFilter.cmake201 Bwrap_itkXXXOpeningLabelCollectionImageFilter.cmake196 Bwrap_itkXXXRelabelImageFilter.cmake346 Bwrap_itkXXXRelabelLabelCollectionImageFilter.cmake196 Bstatistics_relabel.cxx1.3 KBtemplatesitkBinaryXXXKeepNObjectsImageFilter.h4.5 KBitkBinaryXXXOpeningImageFilter.h4.4 KBitkLabelXXXKeepNObjectsImageFilter.h4.5 KBitkLabelXXXOpeningImageFilter.h4.4 KBitkXXXKeepNObjectsLabelCollectionImageFilter.h3.2 KBitkXXXOpeningLabelCollectionImageFilter.h3.1 KBitkXXXRelabelImageFilter.h4.4 KBitkXXXRelabelLabelCollectionImageFilter.h3.1 KBwrap_itkBinaryXXXKeepNObjectsImageFilter.cmake120 Bwrap_itkBinaryXXXOpeningImageFilter.cmake115 Bwrap_itkLabelXXXKeepNObjectsImageFilter.cmake119 Bwrap_itkLabelXXXOpeningImageFilter.cmake114 Bwrap_itkXXXRelabelImageFilter.cmake109 B

Select a file to preview

Reviews

Reviews

Xabier Artaechevarria

Wednesday 16 April 2008

Summary:
[Short description of the paper. In two or three phrases describe the problem that was addressed by the authors and the approach they took to solve it.]

The author presents a complete group of ITK classes to represent and manipulate label objects in ITK. This contribution fulfills a current need within the ITK toolkit.


Evidence:
[Describe the evidence that the authors provide in order to support their claims in the paper. This is a key component on Open Science, opinions that are not supported by evidence should be labeled as "speculations" or "author's opinion" while. The same rule applies to the text of the reviews: claims should be supported by evidence]

The author provides enough evidence to all the claims in the paper. Many example images show how the presented filters work.

Open Science:
[Describe how much the paper and its addendums adhere to the concept of Open Science. Do the authors provide the source code of the programs used in their experiments? Do the authors provide the input images that they used? Or are those images publicly available? Do the authors provide the output images that they show in the paper? Do the authors provide enough details for you to be able to replicate their work?]

The paper adheres perfectly to the concept of Open Science. The source code and the images are provided, together with enough explanations to reproduce the results.

Reproducibility:

I did not reproduce all the results. I re-used a part of the code for label map creation, label object manipulation and binary image generation from label map image.

Use of Open Source Software:
[Did the authors use Open Source software in their work? Do they describe their experience with it, advantages and disadvantages? Do they provide advice for future users of those Open Source packages?]

The author makes use of ITK. The lack of and need for specific classes for label object manipulation is pointed out. I agree with that point.


Open Source Contributions:
Do the author's provide their source code?

Yes 

Is it in a form that is usable?

Yes, there are ITK classes and practical usage examples. 

Do they describe clearly how to use of the code?

There are not examples for all classes, but the available examples may be enough to be able to use all the classes.

How long did it take you to use that code?

One  day.


Code Quality:
If the authors provided their source code: Was the code easy to read?

Yes

Did they use a modern coding style?

Yes, it adheres to the ITK style. 

Was it suitable for multiple-platforms?

Yes


Applicability to other problems:

As shown in the article, the presented classes can be used in principle for any kind of images containing different objects, since they can be used for basic label object manipulation.

Suggestions for future work:

Maybe more attributes could be computed.

Requests for additional information from authors:


Additional Comments:
This is a very complete contribution which would be very useful to have inside ITK.

Daniel Blezek

Wednesday 9 July 2008

Summary:
Classes for efficient as a representation of labels and objects ITK.

Hypothesis:
Not applicable.

Evidence:
not applicable

Open Science:
the software described in this article is completely open including many examples.

Reproducibility:
   Was able to download and compile the code without any issues at all.  Code is well documented and very usable.

Use of Open Source Software:
this package is completely built on ITK.

Open Source Contributions:
I was able to immediately use the code and incorporated into an internal project.

Code Quality:
the code does conform to the ITK coding style  and is very readable.

Applicability to other problems:


Suggestions for future work:
the main suggestion that I would have for this work is to connect it to the excellence analyze object map reader contributed by Hans Johnson.

Requests for additional information from authors:


Additional Comments:
This contribution to the insight journal is a very welcome addition to the capabilities of ITK.ITK has long lacked classes and facilities for creating and manipulating label images or object maps.  In general researchers use ad hoc methods to represent objects and communicate those objects to other programs.  With this addition to ITK these ad hoc methods will no longer be required and researchers will be able to use consistent and well written classes for the representation of objects.  I was particularly pleased that the object storage method is run length encoding which allows for efficient morphological operators but also consumes less space.

Juan Paredes

Sunday 16 September 2007

Summary:
ITK lacks classes for computing shape-based attributes of objects contained in binary and labeled images. This paper contributes new classes for calculating such kind of attributes on those kind of images and allow users to conduct morphological operations based on the value of the attributes.

Hypothesis:
Non Applicable.

Evidence:
Author provided enough background, technical information and implementation detail as evidence of his work.


Open Science:
Author adheres to the concept of Open Science. Author provides source code, test images and enough details for readers to be able to replicate his work.

Reproducibility:
I downloaded, compiled and run the source code. I've got the same results that were reported in the paper.

Use of Open Source Software:
Author used ITK toolkit.

Open Source Contributions:
Author provided source code. Usage examples are also provided. Users can reproduce the author's work.

Code Quality:
Code is easy to read. I tested it on Linux (Ubuntu) and gcc 4.1.2.

Applicability to other problems:
Many computer vision applications use object-based image analysis. Many of them can take advantage of this contribution.

Suggestions for future work:
Author could include other shape-based attributes of objects like perimeter, perimeter/area and lenght/width. Some minor grammatical bugs could be fixed.

Requests for additional information from authors:
None.

Additional Comments:
This is a very valuable contribution. Very well documented and easy to read. Very well done!!!.