Понимание степени выходного изображения ядер свертки - PullRequest
0 голосов
/ 20 января 2019

Я пишу пользовательские фильтры Core Image, и мне трудно понять, что такое extent метод CIKernel apply.

Во всей документации и беседах с WWDC я обнаружил, что она описывается как «область определения ядра», поэтому область, для которой ядро ​​дает значимые ненулевые результаты.

Из этого определения я бы предположил , что экстент вывода ядра свертки совпадает с экстентом входного изображения, поскольку свертка всегда объединяет несколько входных значений в one выходное значение. Но в примерах, которые я обнаружил, и из наблюдений за поведением встроенных ядер, таких как CIGaussianBlur, выходной экстент всегда больше входного (в зависимости от размера, если ядро ​​свертки).

Я не понимаю, почему. Почему ядро ​​должно выдавать результаты для пикселей, которые находятся за пределами исходного входного домена?

1 Ответ

0 голосов
/ 20 января 2019

Согласно этому определению выходного экстента, любой выходной пиксель, в котором пересекаются входное изображение и ядро, является допустимым пикселем.Для ядра шириной 2*n+1 пикселей это определение добавляет n пикселей с обеих сторон изображения.

Но существуют и другие возможные определения.Иногда вам нужна только часть результата, где ядро ​​полностью перекрывает входной образ.Здесь мы вычитаем n пикселей с обеих сторон изображения.

Но, конечно, наиболее распространенное определение в обработке изображений - это когда размер выходного изображения совпадает с размером входного изображения.Это наиболее полезно, если изображение не меняет размер при обработке.

...