Это вообще невозможно, но есть эвристические подходы, чтобы попытаться это сделать.
Почему это невозможно?
Если исходное изображение имело несколько прозрачных пикселей и отображалось на простом белом фоне (или на любом известном фоне), то в результирующем изображении теряется информация. Например, розовый пиксель создан из красного пикселя с некоторой прозрачностью или действительно розовый пиксель без прозрачности?
Даже чисто белый пиксель изначально мог быть полностью белым, или полностью прозрачным, или где-то посередине.
Эвристические подходы
Если вы знаете что-то об исходном изображении или можете что-то вывести, посмотрев на него, вы сможете определить, каким был цвет и прозрачность исходных пикселей. Простой первый шаг - если внешние пиксели белого цвета, возможно, вы захотите залить эту область полностью прозрачными пикселями. Также белые области внутри цветных областей могут быть отверстиями, которые также могут быть прозрачными.
Далее вы можете вывести цвета граничных пикселей вокруг объектов одного цвета (при условии, что для сглаживания использовалась прозрачность). Например, для красного круга с розовыми пикселями по окружности, скорее всего, они изначально были красными с некоторой прозрачностью, что приводило к их визуализации в различных оттенках розового. Для более сложных, разноцветных форм вы можете получить разумный результат, отредактировав изображение вручную, используя суждения, знания / догадки исходного изображения и знание того, как выполнялось сглаживание.
Я написал плагин Paint.Net (C #), чтобы автоматизировать подобные вещи много лет назад, и иногда он давал разумные результаты, но часто вам нужно делать это вручную.