Как выбрать метод интерполяции изображения? (Emgu / OpenCV)

image opencv interpolation emgucv

23690 просмотра

5 ответа

Функция изменения размера изображения, предоставляемая Emgu (оболочка .net для OpenCV), может использовать любой из четырех методов интерполяции :

  1. CV_INTER_NN (по умолчанию)
  2. CV_INTER_LINEAR
  3. CV_INTER_CUBIC
  4. CV_INTER_AREA

Я приблизительно понимаю линейную интерполяцию, но могу только догадываться, что делают куб или область. Я подозреваю, что NN обозначает ближайшего соседа, но я могу ошибаться.

Причина, по которой я изменяю размер изображения, заключается в уменьшении количества пикселей (они будут повторяться в какой-то момент), сохраняя при этом их репрезентативность. Я упоминаю об этом, потому что мне кажется, что интерполяция является центральной для этой цели - поэтому выбор правильного типа должен быть очень важным.

Тогда мой вопрос: каковы плюсы и минусы каждого метода интерполяции? Чем они отличаются и какую мне использовать?

Автор: Tom Wright Источник Размещён: 24.07.2019 03:23

Ответы (5)


21 плюса

Решение

Ближайший сосед будет максимально быстро, но при изменении размера вы потеряете существенную информацию.

Линейная интерполяция менее быстра, но не приведет к потере информации, если вы не уменьшите изображение (которым вы являетесь).

Кубическая интерполяция (вероятно, фактически «бикубическая») использует одну из многих возможных формул, которые включают несколько соседних пикселей. Это намного лучше для сжатия изображений, но вы по-прежнему ограничены в том, сколько вы можете уменьшить без потери информации. В зависимости от алгоритма, вы можете уменьшить свои изображения на 50% или 75%. Основным недостатком этого подхода является то, что он намного медленнее.

Не уверен, что такое «область» - это может быть «бикубик». По всей вероятности, этот параметр даст ваш лучший результат (с точки зрения потери / появления информации), но за счет самого длительного времени обработки.

Обновление: эта ссылка дает более подробную информацию (включая пятый тип, не включенный в ваш список):

http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize

Автор: MusiGenesis Размещён: 24.06.2010 05:38

10 плюса

Используемый метод интерполяции зависит от того, чего вы пытаетесь достичь:

CV_INTER_LINEAR или CV_INTER_CUBIC применяют фильтр нижних частот (средний) для достижения компромисса между визуальным качеством и удалением краев (фильтры нижних частот, как правило, удаляют края для уменьшения наложения изображений). Между этими двумя я бы порекомендовал вам CV_INTER_CUBIC .

Метод CV_INTER_NN на самом деле является ближайшим соседом, это самый простой метод, и вы получите более острые края (фильтр нижних частот применяться не будет). Однако этот метод просто похож на «масштабирование» изображения, без визуального улучшения.

Автор: Federico Cristina Размещён: 24.06.2010 05:40

6 плюса

Алгоритмы: (описания взяты из документации OpenCV)

  • INTER_NEAREST - интерполяция ближайшего соседа
  • INTER_LINEAR - билинейная интерполяция (используется по умолчанию)
  • INTER_AREA - повторная выборка с использованием отношения площади пикселя. Это может быть предпочтительный метод для прореживания изображений, поскольку он дает результаты без муаров. Но когда изображение увеличено, оно похоже на метод INTER_NEAREST.
  • INTER_CUBIC - бикубическая интерполяция в окрестности 4x4 пикселей
  • INTER_LANCZOS4 - интерполяция Ланцоша в окрестности 8x8 пикселей

Если вы хотите больше скорости, используйте метод Nearest Neighbor.

Если вы хотите сохранить качество изображения после понижающей дискретизации, вы можете использовать интерполяцию на основе INTER_AREA, но, опять же, это зависит от содержимого изображения.

Вы можете найти подробный анализ скорости сравнения здесь

Ниже приведено сравнение скорости на изображении 400 * 400 пикселей, полученном по вышеуказанной ссылке.

Сравнение скорости

Автор: nbsrujan Размещён: 31.05.2017 07:24

1 плюс

Все они теряют информацию, которую вы используете, зависит от скорости, которую вам нужно, сколько информации вы можете позволить себе потерять и характер вашего изображения.

Извините, что нет правильного ответа - поэтому есть выбор

Автор: Martin Beckett Размещён: 24.06.2010 05:42

0 плюса

Существует метод «мультимасштабной полулокальной интерполяции с сглаживанием», который может одновременно интерполировать лучшее качество изображения и уменьшать артефакты сглаживания изображений (на основе его статьи, опубликованной в «IEEE Transactions on Image processing, 2012»). Код этого метода находится по адресу https://github.com/KaiGuo-Vision/MultiscaleInterpolation

Автор: Mike Размещён: 24.07.2019 12:21
Вопросы из категории :
32x32