Я хотел бы выполнить аффинное преобразование на растровом изображении с очень низким разрешением, и я хотел бы сделать это при сохранении максимального количества информации.
Мои входные данные - это 1-битное изображение рукописного символа размером 64 на 64 пикселя, а мой вывод будет в оттенках серого и с более высоким разрешением. После анализа изображения я строю серию аффинных преобразований (вращение, масштабирование, сдвиг, перенос), которые я мог умножить в одну матрицу аффинного преобразования.
Моя проблема в том, что, учитывая входное изображение и мою вычисленную матрицу аффинного преобразования, как я могу рассчитать свое выходное изображение с максимально возможным качеством? Я читал статьи о различных методах интерполяции, но все они посвящены тому, как выполнять интерполяцию для масштабирования, а не для общих аффинных преобразований.
Вот демонстрация того, что делает именно то, что я ищу. Учитывая матрицу аффинного преобразования и метод интерполяции, он вычисляет изображение.
http://bigwww.epfl.ch/demo/jaffine/index.html
Не могли бы вы объяснить мне, какие шаги требуются для расчета изображения в оттенках серого с более высоким разрешением (например, 4x), если у меня 1-битный вход с более низким разрешением и заданная матрица аффинного преобразования T?
Можете ли вы связать меня с некоторыми исходным кодом, руководствами или статьями или, возможно, даже книги о том, как реализовать линейную, кубическую или лучшую интерполяцию с аффинным преобразованием?
Мне нужно реализовать эту проблему на Java, и я знаю, что в Java есть класс Affine, но я не знаю, реализует ли он интерполяцию. Знаете ли вы какую-либо библиотеку C ++ или Java, в которой есть приятный для чтения код, чтобы выяснить, как написать алгоритм для выполнения аффинного преобразования с использованием интерполяции?
Существуют ли какие-либо бесплатные библиотеки для Java или C ++, которые имеют встроенные функции для вычисления аффинного преобразования с использованием интерполяции?