//----------------------------------------------------------------------------
void ImageUtility2::Erode8(Image2<int> const& input, bool zeroExterior,
                           Image2<int>& output)
{
    std::array<std::array<int, 2>, 8> neighbors;
    input.GetNeighborhood(neighbors);
    Erode(input, zeroExterior, 8, &neighbors[0], output);
}
//----------------------------------------------------------------------------
void ImageUtility2::GetComponents8(Image2<int>& image,
                                   std::vector<std::vector<size_t>>& components)
{
    std::array<int, 8> neighbors;
    image.GetNeighborhood(neighbors);
    GetComponents(8, &neighbors[0], image, components);
}
//----------------------------------------------------------------------------
void ImageUtility2::Dilate8(Image2<int> const& input, Image2<int>& output)
{
    std::array<std::array<int, 2>, 8> neighbors;
    input.GetNeighborhood(neighbors);
    Dilate(input, 8, &neighbors[0], output);
}