Есть ли в Three.js текстура min_ila для Inter_area, как в opencv? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть холст three.js, на который я загрузил изображение с разрешением 2730x4096.Я дал возможность загружать изображения с различными разрешениями с холста.Когда я загружаю изображение с более низким разрешением - скажем, изображение 960x1440, я получаю очень размытое изображение с неровными краями.

Я попытался увеличить резкость, установив анизотропию на максимум (16 в моем случае), а также попытался использовать карту.minFilter = THREE.LinearFilter, который также увеличил резкость изображения, но края по-прежнему зазубрины.

Я пытался запустить его через FXAA-композитор сглаживания, но сглаживание не очень хорошее.Может быть, я не даю правильные параметры.Все время, пока активен сглаживание от рендерера (renderer.antialias = true)

Когда я пытаюсь сделать то же самое в opencv, я использовал интерполяцию cv2.INTER_AREA для уменьшения изображения 2730x4096, которое дает мне очень четкие изображения сабсолютно без зазубренных краев.

Поэтому я подумал, что реализация интерполяции INTER_AREA для minFilter вместо THREE.LinearFilter может привести к лучшим результатам.Есть ли что-то уже существующее в three.js, которое я не использую, или, если мне нужно использовать этот новый метод интерполяции, как это сделать?

Иллюстрация: два файла PFA - один файл загружается с помощьюХолст Three.js напрямую с разрешением 960x1440 (нижнее), а другое - это изображение, которое было уменьшено с 2730x4096 до 960x1440 с использованием opencv (верхнее).На уменьшенном изображении opencv детали более четкие, а края чище, чем на изображении three.js.Я начинаю верить, что это из-за интерполяции INTER_AREA для сокращения в opencv.Это воспроизводимое в three.js?

Исходное изображение высокого разрешения можно загрузить с здесь

960x1440 downsized from 2730x4096 in opencv

960x1440 from three.js canvas

1 Ответ

0 голосов
/ 25 апреля 2019

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

Кроме того, убедитесь, что вы включаете сглаживание с помощью renderer.antialias = true;, если вам это нужно.Не уверен, что вы уже делаете этот шаг, учитывая ограниченный объем кода в вашем вопросе.

...