Поздравляю автора с решением проблемы с экшенами.
Что касается сути и качества алгоритма, то тут есть что обсудить. Нежелающие про это слышать, могут с лёгкостью пропустить этот текст. У них и так всё хорошо :)
Как оказалось, картинка с мирой (изображение №4 с красно-зелёными полосами с сайта автора) совершенно не предназначена для демонстрации алгоритма. Показать это очень просто. Суть алгоритма с3с состоит в учёте гаммы и простейшем усреднении. Но если к этому изображению применить обратную гамму, то оно ничуть не изменится! Дело в том, что на этом изображении в соответствующих каналах находятся компоненты цвета 0 и 255, а других чисел вообще нет. Поэтому обратное гамма-преобразование не изменит эту картинку и все точки останутся прежними. Далее, после усреднения появятся точки из диапазона 0-255, для которых последующее гамма-преобразование приведёт к увеличению их значений, что в итоге выразится в увеличении средней яркости всей картинки. Фактически, происходит изменение картинки с помощью гаммы (обратная гамма не работает) и естественно, что после такого преобразования тёмные места становятся значительно светлее.
Учёт гаммы при работе с ранее сохранёнными изображениями — правильный подход, но нужно быть осторожным с искусственными картинками, часть из которых просто нельзя использовать даже для демонстрации. Поэтому лучше использовать естественные изображения. На них разница уже не настолько заметна, потому что обратная гамма в этом случае уже работает, но в итоге всё равно происходит небольшое увеличение средней яркости. И это, как мне кажется, правильно.
Суть с3с в учёте гаммы и простом усреднении. Если рассмотреть свойства только алгоритма интерполяции без учёта гаммы, то бикубик Фотошопа явно лучше. Поэтому если в экшен Фотошопа перед ресайзом добавить обратную гамму (приведение к гамме = 1.0) и использовать бикубик ФШ, то итоговое качество будет выше по сравнению с с3с из-за более совершенного алгоритма интерполяции ФШ.
К сожалению, у алгоритма с3с нет возможности увеличения. У ФШ и ImageJ такая возможность есть, а тут увы. Дело в том, что у ресайза нет точного метода количественного измерения результатов, поэтому обычно используют ресайз туда и обратно, чтобы можно было измерить качество алгоритма. В некотором смысле это проверка адекватности модели интерполяции заданного набора данных. Это приблизительный подход, потому что при увеличении приходится дорисовывать картинку, а при уменьшении удалять высокие частоты, но в целом такой подход является широко распространённым критерием измерения качества алгоритма ресайза.
Я недавно проверил Фотошоп и ImageJ по этой методике. ImageJ выигрывает у ФШ более децибела и это очень логично. Научная база под этот метод ресайза подведена внушительная, статьи очень серьёзные. Идея математической обработки состоит в том, что ресайз делают с помощью кубического Б-сплайна, который корректируют сначала предварительной фильтрацией, затем по методу наименьших квадратов и потом ещё раз фильтруют. К сожалению, учёта гаммы в ImageJ нет, так что с этой точки зрения у алгоритма все шансы стать ещё лучше. По моему опыту и измерениям наилучший ресайз (именно ресайз, т. е. передискретизация данных изображения) у программы ImageJ. А с практической точки зрения лучший вариант — это бикубик ФШ с учётом гаммы. Интересно было бы услышать, какие есть другие достойные претенденты на место самого лучшего ресайза.