2014-12-28 1 views
0

У меня есть код Matlab, который создает график, как показано ниже, и перезаписывает график 500 раз. Эти 500 сюжетов считаются 500 кадрами, и позже он создает фильм из этих 500 кадров.Фиксация изображения до 3 координат в Matlab Рисунок

enter image description here

В каждом кадре местоположения D, H, B1, B2 и B3 изменения. Я хочу установить изображение ниже на B1, B2, B3 Координаты участка. Так что, если B1, B2, B3 перемещение фигуры также перемещается вместе с ней.

enter image description here

Возможно ли это? Я понятия не имею, как это сделать. Помощь очень нужна.

ответ

0

Я считаю, что это выполнимо. Вам необходимо преобразовать фигуру в координаты B1..3 для каждого кадра.
Для этого вам нужно знать местоположение xy B1..3 рисунка (обозначим их как movingB1..3), тогда вам понадобится место xy B1..3 участка (обозначим их как fixedB1..3).
Теперь для каждого кадра используйте cp2tform, чтобы найти преобразование 'affine', которое отображает movingB1..3 в fixedB1..3.
Как только у вас есть трансформация, используйте tformarray, чтобы преобразовать фигуру в нужное место на графике, а затем построить график, если ваш график.

Я настоятельно рекомендую не использовать imtransform, поскольку он имеет нетривиальную поддержку в переводе.

+0

Спасибо за ваш ответ. Нужно ли масштабировать изображение перед его преобразованием? – Darshan

+0

@ Даршан, аффинное преобразование должно заботиться о масштабировании для вас: оно отображает 3 2D-точки в 'movingB1..3' в 3 2D-точки на вашем графике' fixedB1..3. Попробуйте и убедитесь сами. – Shai

+0

Хорошо, я создал матрицу BucketMap с использованием cp2tform. Не могли бы вы помочь мне с tformarray? Для A я поставил «BucketOnly.jpg», а для T положил BucketMap. Я не уверен, что поставить для R, TDIMS_A, TDIMS_B, TSIZE_B, TMAP_B и F. Извините, что я никогда не использовал tformarray. – Darshan

Смежные вопросы