Может ли OpenCV cv::resize() изменить минимальное и максимальное значения изображения? (Используя метод INTER_LINEAR)

Допустим, у меня есть изображение в оттенках серого (размер 640 × 480) с минимальной интенсивностью пикселей = 23 и максимальной интенсивностью = 245.

Если я изменить его размер, используя cv::resize() с INTER_LINEAR до 1920×1080, могут ли изменяться минимальная и максимальная интенсивность? Моя минимальная интенсивность стала 25, а максимальная - 247. Возможно ли неправильное использование, которое ведет к этому?

Можно ли ограничить cv::resize изменить размер только в пределах минимальных значений?

Я попытался нормализовать изображение после изменения размера с NORM_MINMAX и исходные значения min max, но результаты не выглядят одинаково. У меня нет возможности использовать INTER_NEAREST, Это выглядит очень размытым.

Я хочу сохранить исходные минимальные максимальные значения, но изменить их размер с помощью INTER_LINEAR. Является ли это возможным?

1 ответ

Решение

Нет, по моему мнению, невозможно сохранить значения min / max любыми методами, использующими интерполяцию. См. Билинейная интерполяция для получения дополнительной информации и понимания, почему минимальные / максимальные значения могут больше не присутствовать в измененном изображении.

Если вы хотите сохранить исходные минимальные и максимальные значения, вам придется проводить обработку вручную без какой-либо гарантии, что визуальный результат будет хорошим.

Возможное решение:

  • одно изображение изменено с INTER_LINEAR
  • еще один с INTER_NEAREST
  • слияния двух изображений:
    • I_res(i,j)=I_near(i,j) когда I_near(i,j)==min or max
    • I_res(i,j)=I_linear(i,j) иначе

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

Другие вопросы по тегам