![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка видеосигнала [D7, WinXP]
BREND © (2008-10-06 15:02:00)Помогите решить проблему:
Есть видео файл. Нужно написать программу для обработки шумов в видео.
Вот например - через такую функцию:
-----------------
type
TVector = array of Double; // Представление данных для процедур модуля
// Удаление шума из сигнала с использованием вейвлет-преобразования.
// Функция выполняет разложение исходного сигнала Signal с использованием
// вейвлета Mode порядка Order. Возвращаемое значение - сигнал,
// восстановленный по коэффициентам аппроксимации на уровне Level.
function Denoise(
const Signal: TVector; // Исходный сигнал
const Mode: Integer; // Тип вейвлета
const Order: Integer; // Порядок вейвлета
const Level: Integer // Глубина разложения
): TVector; // Обработанный сигнал
overload;
Проблема в том, что я не знаю как мне представить видеосигнал через array of double?
А затем еще и наоборот???
Все что я нашел - это вывод видео через Directshow, и то в несколько строк ((
BREND (2008-10-10 11:01:00) [21]
> Sapersky (09.10.08 18:34) [11]
> Получить отдельные кадры видео в DirectShow можно и без
> написания фильтра, вроде бы через ISampleGrabber.
Кадры нужно будет потом как-то вывести.
Допустим, я написал фильтр (трансформ или рендер).
Открываю файл через DSPACK, автоматически строится цепочка фльтров (Filtergraph.RenderFile) и выводится (Filtergraph.Play).
Как мнет вставит свой фильтр в цепочку?
Sapersky (2008-10-09 18:34:00) [22]Получить отдельные кадры видео в DirectShow можно и без написания фильтра, вроде бы через ISampleGrabber.
BREND (2008-10-09 10:28:00) [23]Я понял, что есть 2 варианта: или через Directshow или через VFW.
Сейчас разбираюсь с этим:
http://www.libray.narod.ru/Program/DirectX/Chapter6.html
Только вот с DS-фильтром тяжелее будет. Его наверное нужно регистрировать в системе, а надо ли это?
Sapersky (2008-10-08 14:58:00) [24]А воспроизвести в чем-то PAVIStream можно?
Можно выводить полученные через Avistreamgetframe битмапы, нужная частота кадров определяется через AVIStreamInfo.
Cпециальных средств воспроизведения в духе "запустил и забыл" в VFW, похоже, нет. Во всяком случае, в справке по VFW (которая, кстати, идёт в составе стандартного хелпа Delphi) ничего такого не увидел.
Сергей М. (2008-10-08 12:15:00) [25]
> BREND © (08.10.08 11:05) [7]
Ты статью проштудировал ?
BREND (2008-10-08 11:05:00) [26]avi2bmp.zip - хорошый пример.
Можно сделать массив из картинок - фреймов через Avistreamgetframe(gapgf, iframenumber);
А воспроизвести в чем-то PAVIStream можно?
Сергей М. (2008-10-07 20:41:00) [27]
> если я открываю не зжатый RIFF файл?
А по барабану что тты открываешь - технология DS имеет соотв инструменты.
Sapersky (2008-10-07 15:04:00) [28]Я нашел что можно использовать Avifile API и Directshow.
Еще вроде есть VFW. Но конркетного примера нет.
AviFile и VFW это скорее всего одно и то же.
Пример:
http://www.programania.com/avi2bmp.zip
BREND (2008-10-07 13:53:00) [29]Спасибо за пример.
А если я открываю не зжатый RIFF файл?
Должно как-то быть проще. Все нужно записать в структуру - типа IAVIStream.
Сергей М. (2008-10-07 10:59:00) [30]http://vlafy.iulabs.com/rus/progds/_progds.htm
BREND (2008-10-07 10:54:00) [31]Знал бы как ни спрашивал бы.
Я нашел что можно использовать Avifile API и Directshow.
Еще вроде есть VFW.
Но конркетного примера нет.
Сергей М. (2008-10-06 15:07:00) [32]
> Все что я нашел - это вывод видео через Directshow
Ну так и напиши свой DS-фильтр, в чем проблема ?