Изображение, изменяющее размер функции, обеспеченной Emgu (обертка .NET для OpenCV), может использовать любой из четырех методов интерполяции:
Я примерно понимаю линейную интерполяцию, но могу только предположить то, что кубический или область делают. Я подозреваю, что NN поддерживает ближайшего соседа, но я мог быть неправым.
Причина я изменяю размер изображения, состоит в том, чтобы уменьшить сумму пикселей (они будут выполнены с помощью итераций в какой-то момент) при сохранении их представителем. Я упоминаю это, потому что мне кажется, что интерполяция является центральной к этой цели - получение правильного типа должно поэтому быть довольно важным.
Мой вопрос затем, то, что за и против каждого метода интерполяции? Как они отличаются и какой я должен использовать?
Ближайший сосед будет максимально быстрым, но при изменении размера вы потеряете важную информацию.
Линейная интерполяция менее быстра, но не приведет к потере информации , если только вы не уменьшите изображение (что вы и есть).
Кубическая интерполяция (вероятно, на самом деле «бикубическая») использует одну из многих возможных формул, включающих несколько соседних пикселей. Это намного лучше для сжатия изображений, но вы все еще ограничены в том, сколько сжатия вы можете сделать без потери информации. В зависимости от алгоритма вы, вероятно, можете уменьшить свои изображения на 50% или 75%. Главный минус этого подхода в том, что он намного медленнее.
Не уверен, что такое «площадь» - на самом деле это может быть «бикубическая». По всей вероятности, этот параметр даст ваш лучший результат (с точки зрения потери / отображения информации), но за счет самого длительного времени обработки.
Обновление: эта ссылка дает более подробную информацию (включая пятый тип, не включенный в ваш список):
http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight= resize # resize
Все они теряют информацию, и то, что вы используете, зависит от скорости, которая вам нужна, от того, сколько информации вы можете позволить себе потерять, и от характера вашего изображения.
Извините, что нет правильного ответа - поэтому есть выбор
Используемый метод интерполяции зависит от того, чего вы пытаетесь достичь:
CV_INTER_LINEAR или CV_INTER_CUBIC применить фильтр нижних частот (средний) для достижения компромисс между визуальным качеством и удалением краев (фильтры нижних частот, как правило, удаляют края, чтобы уменьшить наложение на изображениях). Между этими двумя я бы рекомендовал вам CV_INTER_CUBIC .
CV_INTER_NN метод на самом деле является ближайшим соседом, это самый простой метод, и вы получите более резкие края (фильтр нижних частот не будет применяться). Однако этот метод просто похож на «масштабирование» изображения, без визуального улучшения.