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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2008, 11:59   #1
ne4aJIb
 
Регистрация: 25.09.2008
Сообщений: 5
По умолчанию Есть вопрос!

Всем привет!

У меня такая задача стоит. Видеокамера снимает события, происходящие с какой-то частотой. Причем между событиями она не работает. То есть просто работает как фотоаппарат, снимающий кадры. И тут проблема такая. Мне надо снимать около 5000 кадров. Рисунки эти большие. Камера записывает все эти кадры на диск в формате bmp или tif по выбору! А они все мне нужны по сути. Мне надо только один просуммированный, то есть тот рисунок, полученный как сумма всех накоплений.

Есть для этого какая-нибудь программа? Если нет, то на как написать?
ne4aJIb вне форума Ответить с цитированием
Старый 25.09.2008, 12:14   #2
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

Не совсем понял, но как насчет того, чтобы просто переводить в jpg и немного уменьшить картинки? это же легко можно поставить на поток.
Тем более что код о переводе из bmp в jpg на форуме постоянно светится
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 25.09.2008, 12:53   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

По-моему надо наложить эти картинки друг на друга, только неясно по какому принципу должны суммироваться по амплитуде или по интенсивности (найти что-то среднее между 5000 изображениями или как в телескопах усилить изображение). Например так можно "складывать" изображения из bm1 и bm2 в bm.
Код:
var
  bm, bm1, bm2: TBitMap;
  p1, p2, p: PByteArray;
  y, x: integer;
...
for y := 0 to bm1.Height - 1 do
begin
 p := bm.ScanLine[y];
 p1 := bm1.ScanLine[y];
 p2 := bm2.ScanLine[y];
 for x := 0 to bm.Width * 3 - 1 do
  p^[x] := round((p1^[x] + p2^[x])/2); //какая-то операция с p1^[x] и p2^[x]
end;
Если файлов несколько, то лучше складывать по парам - получим 2500 изображений, затем ещё раз по парам - получим 1250, потом получим уже 625 пар, затем 312 пар + 1 без пары и т.д.
eoln вне форума Ответить с цитированием
Старый 25.09.2008, 18:03   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

может как мозайку сделать, плиткой в одну большую превратить все фотографии. я понятно изъясняюсь?
Alter вне форума Ответить с цитированием
Старый 25.09.2008, 20:14   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от ne4aJIb
Рисунки эти большие.
Скажи, а насколько они большие. Их разрешение. Скока на скока пикселов.
Sibedir вне форума Ответить с цитированием
Старый 29.09.2008, 14:51   #6
ne4aJIb
 
Регистрация: 25.09.2008
Сообщений: 5
По умолчанию

Прошу прощения у форумчан за отсутствие. Был в отъезде. Но эта проблема ещё стоит у меня поперек горла.

Рисунки размером, примерно, 1000*1000 пикселей. Складывать надо по интенсивности (не знаю как связать с цветом). Сейчас у меня стоит проблема в выборе языка, в котором это будет проще всего реализовать, но при этом скорость складывания должна быть высокой. Знакомый предлагал Visual С++ MFC. Но я в этом ООП не шарю (классы и все такое). С алгоритмом у меня тоже проблема. Все же мне не верится,что программы для этого не существуют. Или я не прав?
ne4aJIb вне форума Ответить с цитированием
Старый 29.09.2008, 16:24   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Про выбор языка ничего сказать не могу, задача не такая уж и сложная. Подойдел любой.
Про алгоритм скажу следующее. Фишка в том, что если складывать по порядку, произойдет накопление ошибки, вот тут:
Код:
p^[x] := round((p1^[x] + p2^[x])/2);
Для более точного усреднения изображения нужно сначала сложить все изображения, а потом разделить на их колличество.
Ща код примерный накидаю.

Последний раз редактировалось Sibedir; 29.09.2008 в 16:29.
Sibedir вне форума Ответить с цитированием
Старый 29.09.2008, 17:29   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Вот, что получилось
Усреднение картинки.zip
Скорость при таком методе, конечно же, оставляет желать лучшего.
Sibedir вне форума Ответить с цитированием
Старый 01.10.2008, 12:17   #9
ne4aJIb
 
Регистрация: 25.09.2008
Сообщений: 5
По умолчанию

Спасибо Sibedir за программу. А что за язык?
ne4aJIb вне форума Ответить с цитированием
Старый 01.10.2008, 13:40   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
А что за язык?
Delphi 7 .
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть вопрос мб по условному форматированию Exo Microsoft Office Excel 6 03.04.2008 12:33
Есть вопрос? Makarov Общие вопросы Delphi 4 18.01.2008 12:52
Есть или нет... вот в чём вопрос...))) ZhekON Общие вопросы Delphi 9 24.09.2007 20:33
у меня есть глупый вопрос AGA Помощь студентам 3 23.06.2007 19:16