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

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

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

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

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

Мой вопрос затем, то, что за и против каждого метода интерполяции? Как они отличаются и какой я должен использовать?

21
задан Tom Wright 24 June 2010 в 17:28
поделиться

3 ответа

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

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

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

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

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

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

23
ответ дан 29 November 2019 в 20:35
поделиться

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

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

1
ответ дан 29 November 2019 в 20:35
поделиться

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

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

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

10
ответ дан 29 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: