Конференция "Media" » Обработка видеосигнала [D7, WinXP]
 
  • Sapersky (14.10.08 19:27) [20]
    Полагаю, при фильтрации не нужно смешивать компоненты RGB - скорее их следует обрабатывать по отдельности.
    Ещё сомневаюсь, что следует загонять в фильтр сразу всю строку. Обычно фильтруют в некоторой окрестности текущего пикселя, например, -2..+2. Впрочем, это надо смотреть исходники Denoise.

    По VFW - посмотрел avi2bmp.zip, каким-то кривым он мне показался. Написал свой:
    http://sapersky.narod.ru/files/AviPlayer_VFW.rar
    Тоже неидеально работает, у некоторых роликов не читает кадры в конце - но это, похоже, проблема VFW. Всегда возвращает 24-битный битмап (правда, преобразование сделано только из 8-битного формата, не знаю, бывают ли какие-то другие).
  • BREND © (15.10.08 10:40) [21]
    Есть нормальный модуль для записи видео с TBitmap, так, чтоб в 3 ф-ии: 'создать' - 'записать кадр' - 'закрыть' ?
    Все примеры, какие я нашел - это запись из bmp файлов.

    Или хотя бы скажите как получить PBitmapInfoHeader из TBitmap?
  • Sapersky (15.10.08 16:09) [22]
    Есть нормальный модуль для записи видео с TBitmap, так, чтоб в 3 ф-ии: 'создать' - 'записать кадр' - 'закрыть' ? Все примеры, какие я нашел - это запись из bmp файлов.

    Есть модуль:
    http://www.programania.com/aviwriter_2.zip
    хотя там гораздо больше чем 3 функции, и может ли он писать из битмапов - толком не помню.
    Я делал упрощённую версию, но для TFastDIB, a не TBitmap. Прямо сейчас мне конвертировать некогда, может, через пару дней.
    Это всё опять-таки с VFW, насчёт DShow не в курсе.

    Или хотя бы скажите как получить PBitmapInfoHeader из TBitmap?

    GetDIBits
  • BREND © (15.10.08 17:50) [23]
    Относительно фильтрации - то наверное действительно нужно сделать три массива всей картинки, а затем подавать на фильтр.

    Если интересно, как работает фильтр, то ехе здесь:http://brend-777.narod.ru/WaveDemo.exe
  • BREND © (16.10.08 10:36) [24]

    Sapersky
    > По VFW - посмотрел avi2bmp.zip, каким-то кривым он мне показался.
    >  Написал свой:http://sapersky.narod.ru/files/AviPlayer_VFW.rar

    Спасибо, очень хорошо переделал.
  • BREND © (17.10.08 11:17) [25]
    Я добавил запись в видео.
    http://brend-777.narod.ru/AviPlayer_VFW.rar
    Пока еще без кодека, но пишет!
    Использовал модуль VFW.pas (где-то нашел), вроде он новее за Avifile32.pas.

    Если увидите, что я что-то неправильно сделал, или не дописал что-то, пишите.
  • BREND © (20.10.08 14:50) [26]
    Подскажите, как лучше добавить шум.
    Randomize;
          for j := 0 to 1000 do

          FrameBitmap.Canvas.Pixels[random(FrameBitmap.Width - 1),random(FrameBitmap.Height - 1)] := clGray



    А то как то неправильно выходит.
  • Sapersky (20.10.08 15:14) [27]
    Ну вот мой вариант, с заданием кодека, качества и проч. Также он несколько проще, без GlobalAlloc, GlobalLock и прочих "страшных слов" (и AVIStreamInit там, кстати, лишний - это то же самое, что AVIFileInit, который вызывается в конструкторе).
    Хотя переделывать на новые заголовки (VFW.pas) я поленился - вроде и со старыми работает.
    http://sapersky.narod.ru/files/AviHandler_VFW.rar
  • Sapersky (20.10.08 15:25) [28]
    Подскажите, как лучше добавить шум.
    А то как то неправильно выходит.


    Могу предложить не менять цвет на серый, а добавлять/вычитать к каждому цветовому компоненту (R, G, B) некую случайную величину.
  • BREND © (20.10.08 22:51) [29]
    Я тоже добавил поддержку кодеков, но несколько иначе:
    dwRate := FFramesPerSecond;
    strhdr.dwScale := 1;
    strhdr.dwSuggestedBufferSize := FramePtr^.biSizeImage;



    TAVICOMPRESSOPTIONS:


    я задаю только fccHandler и dwQuality. И все.
    Не знаю нужен ли FKeyFrameEvery, все и так работает.

    И еще, я нигде не вижу результатов параметра Quality - ни в размере, ни в качестве.
  • Sapersky (21.10.08 12:10) [30]
    Не знаю нужен ли FKeyFrameEvery, все и так работает.

    Ключевые кадры, теоретически, должны улучшать скорость позиционирования видео на произвольном месте (для кодеков, у которых текущий кадр рассчитывается с учётом предыдущих). Практически - не проверял, возможно, особой разницы нет.

    И еще, я нигде не вижу результатов параметра Quality - ни в размере, ни в качестве.

    Некоторые стандартные кодеки (напр. MSVC) используют Quality, хотя большинство продвинутых настраиваются через конфигурационное окно и поэтому стандартное "качество" игнорируют.
  • BREND © (22.10.08 11:46) [31]

    > Могу предложить не менять цвет на серый, а добавлять/вычитать
    > к каждому цветовому компоненту (R, G, B) некую случайную
    > величину.

    Везде в нете натыкаюсь на процедуру AddNoise, из библиотеки FastLIB:
    http://www.soft32.ru/delphi.shtml?topic=graphic&title=bmp_add_noise
    Нормальный равномерный шум.

    Я пока что сделал так:
    рисую на изображении много квадратов - задаю количество и размер, размещение - рандомом.
    Плюс выбор цвета заполнения, рамки, и стиль.
    Самый лучший вроде bsDiagCross, с ним фильтр хорошо справляется.
    Нужно еще как-то сгладить края.
  • Pavia © (22.10.08 23:49) [32]
    Это аддетивный Гаусовский шум.
    Нормальное распределение оно же Гаусовское. Соответствует тому шуму который обычно имеем при съемки изоброжения камерой.

    Шум он бывает разный.


    > Тоже неидеально работает, у некоторых роликов не читает
    > кадры в конце - но это, похоже, проблема VFW.

    Видео  может начинаться как с 0 кадра так и спервого, в структуре возращается номер начального кадра.


    > Всегда возвращает 24-битный битмап (правда, преобразование
    > сделано только из 8-битного формата, не знаю, бывают ли
    > какие-то другие).

    Бывают. VFW можно попросить выдать нужный формат или использовать то цветовое пространство в котором представленно изоброжение YUV и RGB самые распростроненные .


    > VFW.pas

    Помню когда начинал разбираться корректировал этот файл.
 
Конференция "Media" » Обработка видеосигнала [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]