Итак, я работаю над фильтром, который выполняет размытие.
Когда изображение имеет альфа-канал, оно размыто неправильно. Это потому, что он размыт с цветными пикселями, которые лежат на разделах alpha = 0.
Я создал пример для иллюстрации. На верхнем левом изображении у нас есть оригинал. У него есть альфа-канал, но у меня он отключен.
В правом верхнем изображении я импортирую его с альфа-каналом. Пиксели в секции альфа-канала отображаются черными.
На левом нижнем изображении я выполнил алгоритм размытия. Вы можете видеть, что края имеют яркий ореол, потому что они размыты на фоне светлых пикселей, показанных на первом изображении, даже при наличии альфа-канала.
На правом нижнем изображении я создал композициюэто на фоне, так что вы можете видеть, что это неправильно компоновка.
![Blur Halo](https://i.stack.imgur.com/a3WFC.jpg)
Я читал, что это может быть проблемой предварительного умножения. Я предварительно умножил пиксели RGB, которые лежат на секциях alpha = 0, черным цветом, но это все еще неправильно. Когда я комбинирую эту версию, вы можете видеть, что она создает темный ореол вместо яркого.
Кажется, мне нужно знать значения RGB конечного изображения, но это невозможно узнать как пользовательопределит это.
Так что я делаю не так? Как я могу настроить свой алгоритм так, чтобы он правильно размывал края, а не на фоне ярких пикселей, создавая яркий ореол?
Я ценю любую помощь в этом, так как я действительно застрял!