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