Кажется, что концептуально вы почти у цели:
- Возьмите в качестве эталона один из трех цветовых каналов (например, красный)
- Подходим зеленый против красного
- Сопоставьте синий с красным
Тогда проблема заключается в совпадении с точностью до субпикселя. Получить значащие числа немного сложно, так как ошибки интерполяции, которые может сделать любой метод, влияют на точность.
Есть два способа регистрации изображений, которые я могу придумать:
Регистрация изображений Lucas-Kanade . Использование линейной интерполяции может не дать достаточно точных результатов, поэтому рассмотрим бикубические или другие методы.
Нил Доджсон сделал хороший обзор. Важно, чтобы разные субпиксельные сдвиги ядра интерполяции имели одинаковую частотную передачу. Для кубического семейства аппроксимирующий b-сплайн в этом случае намного лучше, чем cattmull-rom.
Сначала увеличьте изображение, а затем зарегистрируйте изображение с точностью до пикселя, используя вашу любимую технику. (взаимная корреляция в области Фурье должна делать). Это работает только в том случае, если масштабирование выполняется аккуратно. Билинейный или бикубический, скорее всего, не даст вам достаточной точности. Я могу думать о трех направлениях:
а. Йен-интерполяция . Смотрите уравнение 11 его статьи. Действительно медленно, но оптимально. Хотя у вас, кажется, есть некоторый псевдоним в сигнале, поэтому предположение «ограниченного диапазона», которое делает Йена, может не сработать.
б. Рассчитать БПФ изображения, обнулить верхние частоты, обратное БПФ.
с. Нелинейное масштабирование. Поскольку края достаточно острые, изображение не имеет необходимой полосы пропускания, что может быть основным ограничением предыдущих методов. Дифференциально-зависимая интерполяция может быть лучше в этом случае.
Как только вы получите субпиксельное преобразование между ними, коррекция в зеленый и синий каналы уже решена, независимо от того, какой метод вы выберете.