vImageBoxConvolve: ошибки при размере ядра > 255

У кого-нибудь еще есть проблемы, когда размер ядра> 255?

Ошибка, которую я получаю, выглядит так, будто цветовые каналы перегружены... но только когда размер ядра > 255. В документации ничего не говорится об ограничениях размера ядра. И vImage не возвращает ошибку.

Кстати, я использую vImageBoxConvolve_ARGB8888. Это происходит на любом изображении, особенно в белых областях.

Вот результат: введите здесь описание изображения

Этот многоцветный беспорядок в левом верхнем углу на самом деле просто яркий фон.

Кажется странным, что со всем размытием, происходящим в эти дни, никто другой не получит этого.

Спасибо.


person pizzafilms    schedule 25.11.2013    source источник
comment
Вы уверены, что хотите использовать свертку с шириной больше 255? Это ужасно много вычислений для каждого пикселя. Что касается размытия, то понижение дискретизации с последующим повышением в сочетании с несколькими другими оптимизациями может значительно уменьшить его: mobile-gpu" rel="nofollow noreferrer">sunsetlakesoftware.com/2013/10/21/ . Я не удивлен, что вы видите артефакты при выполнении такой большой свертки с неплавающим типом из-за проблем с динамическим диапазоном.   -  person Brad Larson    schedule 26.11.2013
comment
У меня аналогичная проблема: stackoverflow.com/questions/32677548/   -  person Archagon    schedule 20.09.2015
comment
Наличие такого большого размера ядра полезно, когда вы пытаетесь (например) нормализовать размытие по Гауссу для разных разрешений. Если вы хотите иметь такое же количество размытия для высоты 1024, как, скажем, для высоты 8000, вам придется немного увеличить размер ядра.   -  person Archagon    schedule 20.09.2015
comment
Брэд, vImage использует (в основном) алгоритм постоянной стоимости для коробки и палатки. Радиус ядра не сильно влияет на производительность. Вот почему люди используют его для больших размытий.   -  person Ian Ollmann    schedule 08.10.2015


Ответы (1)


Коробчатая свертка имеет (примерно) постоянную стоимость независимо от размера ядра, поэтому она и палатка являются фильтрами, которые можно использовать для большой свертки. Я удивлен, что ядра 255 * 255 достаточно для переполнения. Здесь мы должны использовать 32-битный аккумулятор со знаком. Возможно, при таком размере палатка переполнится. Я предлагаю зарегистрировать ошибку с воспроизводимым примером.

http://bugreporter.apple.com

person Ian Ollmann    schedule 28.11.2013