<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Математик среди биологов: заметки с тегом ffmpeg</title>
<link>https://antonlyakh.ru/blog/tags/ffmpeg/</link>
<description>Я немного умею складывать, но от вычитания у меня всегда кружится голова</description>
<author>Антон Лях</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Лях</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Я немного умею складывать, но от вычитания у меня всегда кружится голова</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Улучшаем качество видео движения протист и нарезаем его на кадры</title>
<guid isPermaLink="false">464</guid>
<link>https://antonlyakh.ru/blog/all/uluchshaem-kachestvo-video-dvizheniya-protist-i-narezaem-ego-na/</link>
<pubDate>Wed, 22 Feb 2023 19:43:22 +0300</pubDate>
<author>Антон Лях</author>
<comments>https://antonlyakh.ru/blog/all/uluchshaem-kachestvo-video-dvizheniya-protist-i-narezaem-ego-na/</comments>
<description>
&lt;p&gt;Это заметка из &lt;a href="https://antonlyakh.ru/blog/all/seriya-zametok-ob-analize-traektoriy-dvizheniya-protist/"&gt;серии об анализе траектории движения протист&lt;/a&gt;. В ней поговорим, как улучшить качество видео и нарезать его на кадры.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Для фиксации движения протист используем фотоаппарат, соединенный с микроскопом. Несмотря на сильный свет, наш фотоаппарат снимает темное видео с низким контрастом.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/some-frames.png" width="1000" height="333" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Темное низкоконтрастное видео&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Поэтому интересующие нас простейшие незначительно отличаются от фона.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/frame__0001.png" width="800" height="450" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Кадр исходного видео&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Если в графическом редакторе автоматически улучшить контраст, получится хорошо.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/frame__0001----contrast-enhance-example.png" width="799" height="450" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Автоматическое осветление&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Если подправить гистограмму, тоже выйдет неплохо.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/frame__0001----hist-adjustmen-example.png" width="800" height="449" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Коррекция гистограммы улучшает заметность живых объектов и грязи на стекле; грязь мешает, но она неподвижна, поэтому после прослеживания траекторий, мы ее уберем&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Очевидно, что использовать графический редактор для исправления всех кадров — нереально. Поэтому нагрузим работой компьютер: улучшим видео с помощью &lt;a href="https://ffmpeg.org/"&gt;FFmpeg&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Улучшаем видео с помощью ffmpeg&lt;/h3&gt;
&lt;p&gt;Фотоаппарат записыват видео в формате &lt;kbd&gt;mov&lt;/kbd&gt; (мув). &lt;kbd&gt;FFmpeg&lt;/kbd&gt; осветлит его и покадрово сохранит в заданном каталоге.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Осветляем видео&lt;/b&gt;&lt;br /&gt;
Следующая команда читает исходный видеофайл &lt;kbd&gt;input.mov&lt;/kbd&gt; и исправляет гистограмму каждого кадра так, чтобы черная точка сдвинулась до 64 (0,25~64/255), а белая — до 120 (0,47~120/255).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ffmpeg -i input.mov 
-vf &amp;quot;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&amp;quot;
output.avi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Опция &lt;kbd&gt;-vf&lt;/kbd&gt; говорит, что мы применяем фильтры, влияющие на качество изображения.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Фильтр &lt;kbd&gt;monochrome&lt;/kbd&gt; делает видео черно-белым.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Фильтр &lt;kbd&gt;colorlevels&lt;/kbd&gt; выполняет коррекцию гистограммы. Его параметры:
&lt;ul&gt;
  &lt;li&gt;&lt;kbd&gt;r|g|b|omin&lt;/kbd&gt; задают уровень красной, зеленой и синей компоненты минимальной (черной) точки,&lt;/li&gt;
  &lt;li&gt;&lt;kbd&gt;r|g|b|imax&lt;/kbd&gt; соответственно максимальной (белой);&lt;/li&gt;
  &lt;li&gt;значения компонент лежат в диапазоне [0; 1], что соответствует уровням [0; 255].&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Фильтр &lt;kbd&gt;smartblur&lt;/kbd&gt; немного шарпит границы — делает их более резкими.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Команда записывает результат в файл &lt;kbd&gt;output.avi&lt;/kbd&gt;.&lt;/p&gt;
&lt;p&gt;Чтобы фильтры обработали видео, выходной файл должен иметь иной формат, отличный от &lt;abbr&gt;мув&lt;/abbr&gt;. В данном случае — это &lt;abbr&gt;avi&lt;/abbr&gt;. Однако при конвертации в &lt;abbr&gt;ави&lt;/abbr&gt; качество обработанного видео ухудшается. Поэтому поступим по иному.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Запишем каждый кадр обработанного видео в отдельный файл&lt;/b&gt;&lt;br /&gt;
Для этого заменим последнюю срочку команды на следующую:&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;-compression_algo lzw -pix_fmt rgb24 enhanced/frame_%04d.tif&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Она сохранит каждый кадр обработанного видео в сжатом тиф-файле (&lt;kbd&gt;-compression_algo lzw -pix_fmt rgb24&lt;/kbd&gt;) в каталоге &lt;kbd&gt;enhanced&lt;/kbd&gt;. Тифы получат префикс &lt;kbd&gt;frame_&lt;/kbd&gt; и будут пронумерованы четырехзначным номером с ведущими нулями (&lt;kbd&gt;%04d&lt;/kbd&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;kbd&gt;frame_0001.tif, frame_0002.tif, frame_0003.tif, ...&lt;kbd&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Вся команда выглядит так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ffmpeg -i input.mov 
-vf &amp;quot;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&amp;quot;
-compression_algo lzw -pix_fmt rgb24 enhanced/frame_%04d.tif&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Результат радует.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/some-frames_enhanced.png" width="1000" height="340" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Осветленные кадры видео&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="800" data-ratio="1.7777777777778"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/frame__0001-enhanced.png" width="800" height="450" alt="" /&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/frame__0001.png" width="800" height="450" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Резюме&lt;/h3&gt;
&lt;p&gt;Чтобы осветлить видео и покадрово сохранить его в заданном каталоге, используйте приведенную команду &lt;kbd&gt;ffmpeg&lt;/kbd&gt;.&lt;/p&gt;
&lt;p&gt;В дальнейшем тифы понадобятся для формирования многослойных тифов, которые будут использованы для выделения треков протист.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;На сегодня все.&lt;/p&gt;
</description>
</item>


</channel>
</rss>