Улучшаем качество видео движения протист и нарезаем его на кадры

Это заметка из серии об анализе траектории движения протист. В ней поговорим, как улучшить качество видео и нарезать его на кадры.



Для фиксации движения протист используем фотоаппарат, соединенный с микроскопом. Несмотря на сильный свет, наш фотоаппарат снимает темное видео с низким контрастом.

Темное низкоконтрастное видео

Поэтому интересующие нас простейшие незначительно отличаются от фона.

Кадр исходного видео

Если в графическом редакторе автоматически улучшить контраст, получится хорошо.

Автоматическое осветление

Если подправить гистограмму, тоже выйдет неплохо.

Коррекция гистограммы улучшает заметность живых объектов и грязи на стекле; грязь мешает, но она неподвижна, поэтому после прослеживания траекторий, мы ее уберем

Очевидно, что использовать графический редактор для исправления всех кадров — нереально. Поэтому нагрузим работой компьютер: улучшим видео с помощью FFmpeg.

Улучшаем видео с помощью ffmpeg

Фотоаппарат записыват видео в формате mov (мув). FFmpeg осветлит его и покадрово сохранит в заданном каталоге.

Осветляем видео
Следующая команда читает исходный видеофайл input.mov и исправляет гистограмму каждого кадра так, чтобы черная точка сдвинулась до 64 (0,25~64/255), а белая — до 120 (0,47~120/255).

ffmpeg -i input.mov 
-vf "monochrome ,
     colorlevels=romin=0.25:rimax=0.47:gomin=0.25:gimax=0.47:bomin=0.25:bimax=0.47 ,
     smartblur=2.0:-0.7:-3.5:0.65:0.25:2.0"
output.avi

Опция -vf говорит, что мы применяем фильтры, влияющие на качество изображения.

  • Фильтр monochrome делает видео черно-белым.
  • Фильтр colorlevels выполняет коррекцию гистограммы. Его параметры:
    • r|g|b|omin задают уровень красной, зеленой и синей компоненты минимальной (черной) точки,
    • r|g|b|imax соответственно максимальной (белой);
    • значения компонент лежат в диапазоне [0; 1], что соответствует уровням [0; 255].
  • Фильтр smartblur немного шарпит границы — делает их более резкими.

Команда записывает результат в файл output.avi.

Чтобы фильтры обработали видео, выходной файл должен иметь иной формат, отличный от мув. В данном случае — это avi. Однако при конвертации в ави качество обработанного видео ухудшается. Поэтому поступим по иному.

Запишем каждый кадр обработанного видео в отдельный файл
Для этого заменим последнюю срочку команды на следующую:

-compression_algo lzw -pix_fmt rgb24 enhanced/frame_%04d.tif

Она сохранит каждый кадр обработанного видео в сжатом тиф-файле (-compression_algo lzw -pix_fmt rgb24) в каталоге enhanced. Тифы получат префикс frame_ и будут пронумерованы четырехзначным номером с ведущими нулями (%04d):

  • frame_0001.tif, frame_0002.tif, frame_0003.tif, ....

Вся команда выглядит так:

ffmpeg -i input.mov 
-vf "monochrome ,
     colorlevels=romin=0.25:rimax=0.47:gomin=0.25:gimax=0.47:bomin=0.25:bimax=0.47 ,
     smartblur=1.5:-0.35:-3.5:0.65:0.25:2.0"
-compression_algo lzw -pix_fmt rgb24 enhanced/frame_%04d.tif

Результат радует.

Осветленные кадры видео

Резюме

Чтобы осветлить видео и покадрово сохранить его в заданном каталоге, используйте приведенную команду ffmpeg.

В дальнейшем тифы понадобятся для формирования многослойных тифов, которые будут использованы для выделения треков протист.



На сегодня все.

Поделиться
Отправить
Запинить
Популярное