О курсе |
Лекции |
Практикум |
FAQs | Оценки | Глоссарий | Литература |
Метаморфические преобразования растровых изображений (morphing) |
Автор: Мазеев Максим
Метаморфическое преобразование изображений I(0)(v) и I(T)(v) - преобразование:
F(t): I(0)(v),I(T)(v) -> I(t)(u), tЄ[0, T] , v=(vx, vy), u=(ux, uy),
выполняющее “плавное превращение” изображения I(0) в– I(T) (и наоборот I(T) в– I(0)). Функция F(t) обладает следующими свойствами:
F(t=0, I(0), I(T)) = I(0)
F(t=T, I(0), I(T)) = I(T)
F(t, I(0), I(T)) = I(t), 0<t<T, последовательность изображений { I(t)(u) } представляет промежуточные состояния между I(0) и I(T), причем I(0) ->{ I(t) }-> I(T) при 0->t->T, т.е. отражает эффект «непрерывной» трансформации объектов из I(0) в объекты из I(T) и наоборот.
Последовательное замещение одного изображения другим. (Fading)
|
Пример 1 Пример 2 |
Геометрические преобразования.Аффинное преобразование. (Affine transformation)Аффинное преобразование задается в виде:
, обратное v=A-1(u – b),
|
Пример 1 Пример 2 |
Аффинное преобразование M изображения I(0)(v) в I(T)(u), можно записать так
M: I(0)(v) -> I(T)(u)
I(0)(v)= I(T)(u) = I(T)(Mv)
или в более удобном для реализации виде: I(T)(u) = I(0)(v)= I(0)(M-1u)
(Для точек вне изображения можно взять «средний» цвет изображения или цвет фона. Либо взять «большое» изображение, а показывать и выполнять геометрические преобразования только над его частью)
С помощью такого преобразования можно задать поворот, перенос, масштабирование и «скашивание»
Рассмотрим последовательность аффинных преобразований M(t), такую что
M(t) = MA(t),b(t) = M(1-t)E+tA,tb tЄ[0, 1], E – единичная матрица
в матричном виде
Получим последовательность изображений {I(t)(u)}
M(t): I(0)(v) -> I(t)(u), I(t)(u) = I(0)( M(t)-1 u )
причем
M(0)= ME,0: I(0)(v) -> I(0)(v),
M(1) = MA,b: I(0)(v) -> I(1)(u)
M(t) = M(1-t)E+tA,tb: I(0)(v) -> I(t)(u)
т.е. {I(t)(u)} – некоторая последовательность изображений, представляющая собой «плавный» переход от I(0) к I(1)
Таким образом, задав I(0)(v), MA, b и применив описанный алгоритм, можно построить последовательность, отражающую «постепенное» выполнение аффинного преобразования MA,b над I(0)(v)
Заметим, что M(t) можно задать и другими способами, необязательно линейными, как в этом примере. Если M матрица поворота на 1800, то из предложенного алгоритма M(0.5) – нулевая матрица, и многие дальнейшие рассуждения не верны. В этом случае необходимо представить другой способ задания M(t), например, выделить матрицу поворота и «разложить» М на последовательность поворотов и смещений с растяжениями.
Объединим геометрические преобразования изображений с последовательным замещением одного изображения другим.
Простейшая
реализация морфинга.
|
Пример 1 Пример 2 |
Такое преобразование обладает следующими свойствами
I(t)(u) = { t = 0 }= I(0)(u) = 1 I(0)( M(0)-1u ) + 0 I(1)(…) = I(0)( M(0)u ) = I(0)(u) – начальное изображение
I(t)(u) = { t = 1 }= I(1)(u) = 0 I(0)( …) + 1 I(1) ( [M-1(1-t)]-1 u) = I(1)( [M-1(0)]-1u ) = I(1)(u) -конечное изображение
I(t)(u) = { t = 0.5 }= I(0.5)(u) = 0.5 I(0)( M(0.5)-1u ) + 0.5 I(1) ( [M-1(0.5)]-1 u) – промежуточное изображение - «середина» между соответствующими пикселами начального и конечного изображений, над каждым из которых применена «половина» аффинного преобразования MA,b
Если I(0), I(1), и M подобраны так, что из I(0) с помощью преобразования М получается изображение I’(1) похожее на I(1), например, совпадением контуров объектов, то построенная последовательность { I(t)} ,будет представлять собой «непрерывное» метаморфическое трансформирование I(0) в I(1)
Для построения «удачной» последовательности { I(t)(u) } необходимо подобрать подходящие изображения I(0), I(1), и построить геометрическое преобразование M (mapping) изображений. Преобразование M необязательно должно быть аффинным, оно может быть, например, некоторой композицией аффинных преобразований.
Один из способов задания такой композиции рассматривается в следующей части.
Это преобразование представляет собой частный случай аффинного.
Выберем на начальном – I(0) и конечном – I(1) изображениях по одному вектору PQ и P’Q’ соответственно. Вычислим коэффициенты аффинного преобразования, такого, что P->P’, Q->Q’ и для любой точки v из I(0) и u из I(1) выполнены условия:
a=|OP| / |QP| равно a’=|O’P’| / |Q’P’| (см. рис) и расстояние от точек v и u до соответствующих векторов PQ и P’Q’ равны b =b ’=const.
|
-> |
Получим
a) ,
- отношение OP к QP, см. рис.
- расстояние от v до QP
- перпендикуляр
- скалярное произведение
Или в матричном виде
б)
M=MA,b
,
где
- скалярное произведение
Такое преобразование MA,b не выполняет «скашивания» изображения
Выберем на начальном – I(0) и конечном – I(1) изображениях по набору векторов {PiQi} и {Pi’Qi’}
Построим композицию преобразований Mi переводящих PiQi->Pi’Qi’, (Преобразование PQ->P’Q’ описано в предыдущей части)
Для этого вычислим v как взвешенную сумму между соответствующими vi, полученных с помощью Mi.
,
,
- «нормированное расстояние» от v до i-го вектора
с1, с2 – константы
можно взять, например, такие, с1>0, c2Є[0.5, 2]
Пример 1
выполняемое геометрическое преобразование:
Пример 2
выполняемое геометрическое преобразование:
Пример 3
выполняемое геометрическое преобразование:
Для вычисления цвета изображения “между пикселами” можно воспользоваться следующими подходами:
- Вычислить среднее значение цвета в некоторой окрестности вокруг искомой точки
например, (x, y) находится внутри области xЄ[i, i+1], yЄ[j, j+1], тогда
I(x, y)=[I(i, j)+ I(i+1, j)+ I(i, j+1)+ I(i+1, j+1)] / 4
- Интерполировать значение цвета
для более точной передачи деталей изображений, размер окрестности лучше выбирать исходя из «плотности» сетки при геометрической трансформации
Преобразование представляет собой развитие метода, основанного на характеристических линиях. Вместо указания пар соответствующих отрезков на изображениях, соответствие строится между кривыми (например, Безье-сплайнами). В дальнейшем сплайны в автоматическом режиме интерполируются ломанными, и задача сводится к задаче на характеристических кривых.
Такой подход позволяет более точно трансформировать основные элементы изображений и в некоторых случаях намного быстрее построить соответствие между объектами изображений, т.к. очень часто ломанную, состоящую из множества отрезков, можно заменить одним звеном кривой линии (сплайном).
количество баллов |
|
Простейшие преобразования растровых изображений |
|
|
2 |
|
3 |
|
5 |
Морфинг. Преобразования на основе характеристических линий |
|
|
5 |
|
8 |
|
11 |
Удобство интерфейса, удобная работа с программой |
+1 - +4 |
Программы к заданиям 1)-6) должны иметь РЕЖИМ РАБОТЫ С КОМАНДНОЙ СТРОКОЙ, т.е. как минимум принимать входные параметры из командной строки. Обязательные параметры для всех заданий - имена начального и конечного изображений в формате BMP (24-bit-color format), начальная часть имени файла для серии BMP файлов, в которые выводятся результаты промежуточных шагов (промежуточных изображений) и N – количество шагов.Описание формата командной строки
Задание 1
<your_program1.exe> <first_image> <last_image> <output_file> NНапример:
На входе
morphing.exe first.bmp last.bmp middle 10На выходегде
morphing.exe – ваша программаfirst.bmp – начальное изображение
last.bmp – конечное изображение
middle – начальная часть имен файлов для вывода построенных промежуточных изображений
10 – количество промежуточных изображений, которые необходимо построить
middle0.bmp = first.bmpЭталонный пример: Source1.zip, Source2.zipmiddle1.bmp
middle2.bmp
…
middle9.bmp
middle10.bmp = last.bmp
Задание 2, 3<your_program2.exe> <first_image><output_file> N <transformation_file> <your_program3.exe> <first_image> <last_image> <output_file> N <transformation_file>Задание 4transformation_file – файл с коэффициентами аффинного преобразования, его формат
{ a11, a12, a21, a22 } { b1, b2 }все числа могут быть вещественные, с десятичной точкой “.”,пример
{0.707, 0.707, -0.707, 0.707} {5, –5}ЗАМЕЧАНИЕ. Все координаты относительно нижнего левого угла изображения. (Координатная система как в BMP файле)
Эталонный пример для задания 2: Source1.zip, Source2.zipЭталонный пример для задания 3: Source1.zip, Source2.zip
<your_program4.exe> <first_image> <last_image> <output_file> N <transformation_file> transformation_file:{
{Px, Py, Qx, Qy }}{
{P’x, P’y, Q’x, Q’y}}ЗАМЕЧАНИЕ. Все координаты относительно нижнего левого угла изображения. (Координатная система как в BMP файле)
Пример
{
{1, 2, 51, 52 }}{
{41, 3, 61, 62}}что значит PQ-> P’Q’ = {(1,2), (51,52)}->{(41,3),(61,62)}
Задание 5<your_program5.exe> <first_image> <last_image> <output_file> N <transformation_file> transformation_file{
Задание 6Эталонный пример: Source1.zip, Source2.zip, Source3.zip{P1x , P1y , P2x , P2y , …, Pmx , Pmy } 1-ая ломанная}…
{P1x , P1y , P2x , P2y , … , Pmx , Pmy } n-ая ломанная
{
{P1x , P1y , P2x , P2y , …, Pmx , Pmy } 1-ая ломанная}…
{P1x , P1y , P2x , P2y , …, Pmx , Pmy } n-ая ломанная
Пример
{
{1, 2, 51, 52 }}{57, 58, 60, 62 }
{
{41, 3, 61, 62} {37, 38, 40, 42 }}Необходимо реализовать режим работы с характеристическими линиями, см Задание 5. Кривые могут быть заданы произвольным образом. Для выполнения задания желательно реализовать графический интерфейс (GUI), с возможностью сохранения и восстановления «разметки» в файле.Дополнительные средства для удобной работы с программой ПРИВЕТСТВУЮТСЯ, например GUI, и будут оценены.
См. предыдущие задания и FAQ
Полезные исходные коды для работы с растровыми изображениями в формате BMP. Реализовано под Visual C++ 6.0 (можно использовать для выполнения заданий)
[1] Thaddeus Beier, Shawn Neely, Feature-Based Image Metamorphosis, SIGGRAPH’92 (Chicago, July 26-31, 1992)
На главную |
Наверх |
Hosted by Graphics & Media Lab
http://graphics.cs.msu.su |
Поддержка и дизайн: Алексей Игнатенко |