Попробовал тут реализовать на сишечке lanczos3 и получается вот такое:
оригинал: http://0x0.st/KTx6.png
результат: http://0x0.st/KTxE.jpg
Вопрос пока без исходников - правда ли что такого мерзского алиасинга в нормально реализованном lanczos3 даже близко быть не должно? Артефакты сжатия джипегом во второй картинке тоже есть, но основные претензии к этим ссаным лесенкам на тонких линиях. Если кто реализовывал lanczos-based downsampling в обозримом прошлом, можете примерно подсказать отвал жопы в каком месте мог привести к подобным приколам?
(чёрная горизонталь, красный синус и жёлтый косинус - это фоновый тест движка, который просто базово проверяет что тригонометрия не уехала в дурку и что что-то в принципе живо).
UPDATE Как обычно был обманут DeepSeek. Оно мне в качестве примера выдало некий кусок кода, который вот так с артефактами работал, на первый взгляд выглядело годно. Но оказалось, что оно забыло увеличить размер ядра. То есть, идеально-математическое представление ядра свёртки 3*3 в физической реализации для конкретного ratio ресайза не растягивается как нужно. Условно говоря, вам надо свернуть полоску пикселей в один пиксель, но длина этой полоски не должна быть константной в 6 пикселей, а должна растянуться плавно на «сколько нужно» если ratio больше единицы. Так-то. Короче, забыл подумать не-жопой! После допила напильником заработало идеально, прям цимес! Дипсиком я пользовался для уточнения некоторых физических смыслов, было полезно, но когда дошло до реального кода у него жопа отвалилась.