vtkImageFlip filter broken on Apple Silicon
The vtkImageFlip
filter produces curious off by one artifacts on Apple Silicon (mac mini M1). Below is the output of
for (std::size_t y = 0; y < 20; ++y)
{
for (std::size_t x = 0; x < 20; ++x)
std::cout << _data->GetScalarComponentAsDouble(x, y, 0, _component) << ' ';
std::cout << '\n';
}
performed on a 20x20 image read in from the attached PNG, before and after application of the vtkImageFlip
filter on an M1 mac mini
vtkImageFlip
before 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 0 0 0 0 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
vtkImageFlip
after 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 0 0 0 0 62734 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 62734 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 62734 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62734 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 1 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 0 0 0 0 0 0 0 0 0 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 1 0 0 0 0 0 0 0 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 1 0 0 0 0 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735 62735
Pay attention to the 1
s and 62734
s in the flipped data, which are not present in the unflipped data. On intel machines the flip produces the expected result.!