Используйте фильтры. css фильтры, svg фильтры. Работает только в современных браузерах. плавности без js наверно не добиться.
Также можно сделать две копии картинки (одна из них чб), наложить друг на друга и скриптом плавно менять прозрачность обеих (в разных направлениях)
|