Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 17:49   #1
fen1ksss
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 44
По умолчанию работа с Tbitmap

В итоге должна получиться программа
"из видео .avi получить 1 панорамный кадр"

Дошел до того момента, когда 2 кадра отличаются менее чем на пиксель (субпиксельный сдвиг), подскажите, можно ли сдвинуть битмап не на integer, а скажем на real?
fen1ksss вне форума Ответить с цитированием
Старый 11.10.2010, 17:57   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от fen1ksss Посмотреть сообщение
В итоге должна получиться программа
"из видео .avi получить 1 панорамный кадр"

Дошел до того момента, когда 2 кадра отличаются менее чем на пиксель (субпиксельный сдвиг), подскажите, можно ли сдвинуть битмап не на integer, а скажем на real?
Разве если есть картина (стена или что там) размером в 600х200, то почему нельзя сделать к примеру один кадр 300х200, и панорама тогда будет просто
1. Битмап = 0 до 300 по OX
2. Битмап = 300 до 600 по OX

Зачем сдвигать менее чем на 1 пиксель? Советую отдохнуть от задачи, потом на свежую голову взяться за нее и подумать над теоретической частью, т.к. пока либо я не понял, либо вы действительно не туда думаете
BOBAH13 вне форума Ответить с цитированием
Старый 11.10.2010, 18:31   #3
fen1ksss
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Разве если есть картина (стена или что там) размером в 600х200, то почему нельзя сделать к примеру один кадр 300х200, и панорама тогда будет просто
1. Битмап = 0 до 300 по OX
2. Битмап = 300 до 600 по OX

Зачем сдвигать менее чем на 1 пиксель? Советую отдохнуть от задачи, потом на свежую голову взяться за нее и подумать над теоретической частью, т.к. пока либо я не понял, либо вы действительно не туда думаете
Допустим есть видео длительностью примерно 1 секунда, получится примерно 30 кадров. Допустим я двигаю камеру быстро, тогда изменение координаты по оси Х одного кадра от другого будет большим, допустим 5 пикселей.
Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Зачем сдвигать менее чем на 1 пиксель?
Если я двигаю камеру медленно, то координата будет изменяться допустим на пиксель, а может так получиться, что на пол пикселя, треть пикселя и тд... Т.е. это не я так решил что сдвиг меньше пикселя, а зависит от скорости.

Как делать если отличие больше чем пиксель я знаю, вопрос в том что делать если смещение меньше пикселя.

Надеюсь так более понятно
fen1ksss вне форума Ответить с цитированием
Старый 11.10.2010, 20:21   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

GDI+ отрисует вам "подобие" double смещений (если меня память не подводит)
BOBAH13 вне форума Ответить с цитированием
Старый 11.10.2010, 20:44   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Если угловое смещение камеры меньше чем расстояние между пикселями на матрице, то цвет (освещенность) пикселя за время этого смещения не изменится. А что вы хотите - цифра. real в этом случае маст дай.
Но есть методы интерполяции. Здесь real может рулить. На что, впрочем, BOBAH13 и намекнул.
Прик вне форума Ответить с цитированием
Старый 12.10.2010, 00:27   #6
fen1ksss
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 44
По умолчанию

Другой вопрос, прикладываю проект с последовательностью из 11 кадров.

Подскажите, почему правильно работает только при
Код:
until (xx>=489) or (Not Result.found);
until (x>Bitmap1.Width-40) or (Result.found);
именно таких числовых значениях?
И от чего это зависит, никак не могу разобраться...
Вложения
Тип файла: rar AviToBmp.rar (4.05 Мб, 14 просмотров)
fen1ksss вне форума Ответить с цитированием
Старый 12.10.2010, 11:33   #7
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

Цитата:
Дошел до того момента, когда 2 кадра отличаются менее чем на пиксель (субпиксельный сдвиг), подскажите, можно ли сдвинуть битмап не на integer, а скажем на real?
Увеличиваешь масштаб в два раза и двигаешь на пиксел, приводишь к оригинальному размеру, в итоге получишь сдвиг на половину пиксела. Таким образом в видеокодеках реализована полупиксельная компенсация движения.
x128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение Tbitmap Horus92 Помощь студентам 2 27.07.2010 10:05
Работа с TBitMap. Herly Помощь студентам 31 07.01.2010 16:07
TBitmap и указатели Levsha100 Общие вопросы C/C++ 3 17.05.2009 22:36
движение TBitMap Juffin Мультимедиа в Delphi 1 14.04.2009 21:34
TBitmap odi_noki Мультимедиа в Delphi 17 25.10.2008 09:53