Что такое авто кроп в coub: Туториал по Coub API / Хабр

Содержание

Туториал по Coub API / Хабр

На днях мы выпустили Coub API. Теперь можно делать приложения, смотреть ленту, лайкать, рекобить, то есть практически все, что можно сделать на сайте, можно делать через API. Но самое главное — теперь можно из сторонних приложений через API создавать кобы.

В этом туториале я покажу, как можно сделать простейший клиент коба на Ruby on Rails. Приложение позволяет залогиниться через коб и сгенерить такой коб с любым текстом:

Рабочая версия этого приложения лежит по адресу fantozzi.dev2.workisfun.ru, код приложения из этого туториала можно посмотреть на Гитхабе: github.com/igorgladkoborodov/memegenerator

OAuth

Коб использует стандартный протокол для авторизации OAuth 2.0. Он используется в очень многих сервисах, которые предоставляют внешний API (Фейсбук, например), по нему очень много документации и библиотек для любой платформы.

Работает авторизация примерно так: приложение со своим уникальным ключом заходит на специальную страницу на coub. com, там Коб спрашивает, согласен ли пользователь дать приложению доступ. Если пользователь разрешает, то Коб возвращает пользователя обратно в приложение, и отдает вместе с запросом токен пользователя, который потом уже используется при всех API-запросах пользователя. То же самое происходит, например, при авторизации через Фейсбук или Твиттер.

Мы будем писать на RoR и для авторизации через OAuth для рельсов все уже давно написано, мы будем использовать для этого гем omniauth-oauth3 и официальный кобовский гем omniauth-coub.

Создание приложения и авторизация

Создаем приложение с красноречивым названием memegenerator и прикручиваем его к Pow (или кто чем пользуется):

$ cd ~/apps/
$ rails new memegenerator
$ ln -s ~/apps/memegenerator/ ~/.pow/memegenerator

Проверяем в браузере, что у нас по адресу memegenerator.dev живет пустое рельсовое приложение.

2. Регистрируем наше новое приложение по адресу coub. com/dev/applications

В поле Website указываем урл нашего тестового приложения, в поле Callback URL пишем

http://memegenerator.dev/auth/coub/callback

После создания приложения Коб даст нам Application ID и Secret, они нам понадобятся дальше:

3. Устанавливаем гем omniauth-coub:

Gemfile:

gem "omniauth-coub"
$ bundle install

4. Добавляем коб в провайдеры omniauth:

config/initializers/omniauth.rb:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :coub, ENV["COUB_KEY"], ENV["COUB_SECRET"], scope: "logged_in,create"
end

COUB_KEY и COUB_SECRET — это Application ID и Secret из прошлого шага, можно добавить их в ENV переменные или пока для теста вставить строки прямо тут, хотя оставлять в коде ключи нежелательно, ну вы понимаете.

Если у вас Pow, то добавить переменные можно в файле .powenv в корне приложения:

. powenv:

export COUB_KEY="[Application ID]"
export COUB_SECRET="[Secret]"

В scope вы можете указать, какими правами будет обладать приложение. Наше приложение нужно только для создания кобов, поэтому лишнего мы ничего не будем просить, только разрешение на авторизацию и создание коба: logged_in, create. Полный список режимов доступа можно посмотреть в документации к API.

5. Создаем модель пользователя с методом from_omniauth, который создает или находит в базе пользователя по данным, которые передал нам сервер авторизации на Кобе.

Что происходит в этом пункте и в паре следующих пунктов, хорошо объяснено в одном из эпизодов RailsCasts.

$ rails g model user provider:string uid:string auth_token:string name:string
$ rake db:migrate

app/models/user.rb:

class User < ActiveRecord::Base
  def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth. uid).first_or_initialize.tap do |user|
      user.auth_token = auth.credentials.token
      user.name = auth.extra.raw_info.name
      user.save!
    end
  end
end

6. Создаем контроллер сессий. Через него мы создаем и удаляем сессию.

Метод create — это то место, куда возвращается пользователь с его токеном и данными авторизации. Тут мы создаем пользователя через метод from_omniauth, который мы написали в прошлом шаге, и сохраняем его токен, записываем его в куку, чтобы при перезагрузке браузера можно было вернуть эту сессию.

$ rails g controller sessions

app/controllers/sessions_controller.rb:

class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env["omniauth.auth"])
    cookies.permanent[:auth_token] = user.auth_token
    redirect_to root_url
  end
  def destroy
    cookies.delete(:auth_token)
    redirect_to root_url
  end
  def index
  end
end

Морда приложения пускай пока поживет в контроллере сессий, поэтому тут метод index.

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

app/controllers/application_controller.rb:

helper_method :current_user
def current_user
  @current_user ||= User.find_by_auth_token(cookies[:auth_token]) if cookies[:auth_token]
end

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

app/views/sessions/index.html.erb:

<% if current_user %>
  <%= current_user.name %>
  <%= link_to "Log out", logout_path, method: :delete %>
<% else %>
  <%= link_to "Auth with Coub", "/auth/coub" %>
<% end %>

По пути /auth/coub гем omniauth-oauth3 перебросит на страницу авторизации на coub.com.

9. Прописываем роуты:

config/routes.rb:

Rails.application. routes.draw do
  root "sessions#index"
  get "/auth/:provider/callback" => "sessions#create"
  delete "logout" => "sessions#destroy"
end

С авторизацией все. Заходим на memegenerator.dev, проверяем. Должно выглядеть примерно вот так:

Теперь у нас в базе есть пользователь с токеном, который может делать запросы через Coub API.

Запросы к API

Имея токен можно делать запросы к API. Это обычные запросы по протоколу HTTP, как в браузере. GET запросы можно в браузере же и тестировать. Каждый запрос кроме своих параметров должен содержать параметр access_token с токеном пользователя, который нам до этого выдал сервер авторизации.

Например, чтобы лайкнуть коб, надо выполнить примерно такой запрос:

POST http://coub.com/api/v2/likes?id=[coub_id]&channel_id=[channel_id]&access_token=[users_token]

Некоторые запросы можно делать и без токена, например, инфа о кобе (без токена доступны только публичные кобы). Это GET запрос, эту ссылку можно открыть просто в браузере:

GET http://coub.com/api/v2/coubs/4yp6r

Все эти запросы хорошо задокументированы, полный список можно посмотреть тут: coub.com/dev/docs/Coub+API/Overview

Клиент

Каждый раз вручную делать запросы и добавлять токен неудобно, поэтому добавим модели User метод client, через который будем делать запросы:

app/models/user.rb:

def client
  @client ||= Faraday.new(:url => "http://coub.com/api/v2/", :params => {:access_token => auth_token})
end

Gemfile:

gem "faraday"
$ bundle install

Запросы мы делаем через Faraday, это HTTP клиент на Ruby.

Запустим консоль, потестим запросы к апи:

$ rails c
> user = User.first
> user.client.get "coubs/4yp6r"

Ответы выдаются в формате JSON, поэтому, если нам хочется прочитать, что вернул сервер, надо ответ распарсить стандартной JSON библиотекой:

> coub_info = JSON. parse(user.client.get("coubs/4yp6r").body)
> coub_info["id"]
=> 9090841

У нас есть айдишник коба, давайте его лайкнем:

> user.client.post "likes?id=#{coub_info["id"]}"

Генерим видео

У нас есть видео, кадр из фильма, нам надо на него три раза положить текст в разное время. Для работы с видео через консоль есть программа ffmpeg, в ней через консоль можно делать с видео практически что угодно.

На маке через Homebrew он ставится вот так:

$ brew install ffmpeg --with-freetype

Накладываем текст через ffmpeg фильтром drawtext:

$ ffmpeg -i template.mp4 -vf "drawtext=enable='between(t,1,2)':text=Blah:fontfile=PFDinTextCondPro-XBlack.ttf:fontsize=40:fontcolor=white:x=(w-tw)/2:y=(h*0.9-th)" output.mp4

Эта строчка означает:

1. ffmpeg -i template.mp4 -vf: берем видео файла template.mp4. Файл для этого туториала можно скачать вот тут.

2. drawtext=enable: накладываем текст

3. between(t,1,2): с первой по вторую секунду

4. fontfile=PFDinTextCondPro-XBlack.ttf: используем файл с шрифтом в формате TTF

5. text=Blah: пишем текст Blah

6. fontsize=40: размер шрифта

7. fontcolor=white: белого цвета

8. x=(w-tw)/2:y=(h*0.9-th): положение текста в центре внизу (w и h — это размер видео, tw и th — это размер блока с текстом)

9. output.mp4: записываем все в этот файл

Чтобы написать три текста, надо просто через запятую три drawtext написать:

$ ffmpeg -i template.mp4 -vf "drawtext=enable='between(t,1,2)':text=Text1:fontfile=PFDinTextCondPro-XBlack.ttf:fontsize=40:fontcolor=white:x=(w-tw)/2:y=(h*0.9-th), drawtext=enable='between(t,3,5)':text=Text2:fontfile=PFDinTextCondPro-XBlack.ttf:fontsize=40:fontcolor=white:x=(w-tw)/2:y=(h*0.9-th), drawtext=enable='between(t,6.3,8)':text=Text3:fontfile=PFDinTextCondPro-XBlack.ttf:fontsize=40:fontcolor=white:x=(w-tw)/2:y=(h*0. 9-th)" output.mp4

В темповой папке можно сложить файл template.mp4 и файл шрифта (можно взять любой TTF из папки со шрифтами) и попробовать в консоли запустить, оно должно сгенерить правильное видео.

Закачиваем видео

Видео у нас есть, теперь надо из него сделать коб.

Коб через API закачивается в три этапа:

1. Сначала инициализируем закачку запросом POST coubs/init_upload, в ответе мы получаем id коба и его permalink.

$ rails c
> user = User.first
> init_response = JSON.parse(user.client.post("coubs/init_upload").body)
> coub_id = init_response["id"]
> permalink = init_response["permalink"]

2. Закачиваем видео запросом POST coubs/:id/upload_video. Файл передается в теле запроса, в хедере Content-Type надо передать video/mp4:

> user.client.post do |r|
   r.url "coubs/#{coub_id}/upload_video"
   r.headers["Content-Type"] = "video/mp4"
   r. body = File.open("tmp/output.mp4", "r").read
 end

Если мы хотим загрузить отдельный саундтрек к кобу, то это можно сделать отдельным запросом coubs/:id/upload_audio. Нам в этот раз этого не нужно, поэтому мы опускаем этот запрос.

3. Финализируем создание коба запросом POST coubs/:id/finalize_upload, в параметрах передаем тайтл, настройки приватности, теги, включен ли звук.

> user.client.post "coubs/#{coub_id}/finalize_upload", title: "Test coub", original_visibility_type: "private", tags: "tag1, tag2, tag3", sound_enabled: true

После закачки коба, он будет какое-то время процесситься: видео на серверах Коба будет конвертироваться в несколько форматов для разных платформ, будут генериться превьюшки и куча всяких таких ресурсоемких вещей. Прогресс конвертирования можно проверить GET запросом coubs/:id/finalize_status. Он отдает примерно такой JSON { percent_done: 20, done: false}.

> user. client.get "coubs/#{coub_id}/finalize_status"

Ок. Мы протестировали это в консоли, теперь все это надо собрать в приложение.

Модель Coub

Создаем модель Coub:

$ rails g model coub user:belongs_to title:string visibility_type:string tags:string permalink:string coub_id:string text1:string text2:string text3:string
$ rake db:migrate

2. Делаем метод generate_video_file, который геренит видео из видео-шаблона и трех текстов, находящихся в полях text1, text2, text3. Шаблон видео и шрифт кладем в ассеты. Готовое видео кладем в папку tmp.

app/models/coub.rb:

def escape_ffmpeg_text(text)
  text.to_s.gsub("'", "\\\\\\\\\\\\\\\\\\\\\\\\'").gsub(":", "\\\\\\\\\\\\\\\\:").mb_chars.upcase # Crazy ffmpeg escaping
end
def ffmpeg_drawtext(text, from, to)
  font_file = File.join(Rails.root, "app", "assets", "fonts", "PFDinTextCondPro-XBlack. ttf")
  "drawtext=enable='between(t,#{from},#{to})':text=#{escape_ffmpeg_text(text)}:fontfile=#{font_file}:fontsize=40:fontcolor=white:x=(w-tw)/2:y=(h*0.9-th)"
end
def generate_video_file
  self.video_file = File.join(Rails.root, "tmp", "output-#{Time.now.to_i}.mp4")
  template_file = File.join(Rails.root, "app", "assets", "videos", "template.mp4")
  `ffmpeg -i #{template_file} -vf \"#{ffmpeg_drawtext(text1, 1, 2)}, #{ffmpeg_drawtext(text2, 3, 5)}, #{ffmpeg_drawtext(text3, 6.3, 8)}\" #{video_file}`
  return video_file
end

3. Делаем метод, который в три этапа закачивает видео на Коб:

app/models/coub.rb:

def upload_video
  self.title ||= text2
  self.visibility_type ||= "private"
  self.tags ||= ""
  
  init_response = JSON.parse(client.post("coubs/init_upload").body)
  self.coub_id = init_response["id"]
  self.permalink = init_response["permalink"]
  
  save
  client.post do |r|
    r.url "coubs/#{coub_id}/upload_video"
    r. headers["Content-Type"] = "video/mp4"
    r.body = File.open(video_file, "r").read
  end
  client.post "coubs/#{coub_id}/finalize_upload",
    title: title,
    original_visibility_type: visibility_type,
    tags: tags,
    sound_enabled: true
end
def generate_and_upload_video
  generate_video_file
  upload_video
end

4. Прописываем, что коб принадлежит пользователю и заодно пишем метод client для удобного доступа к клиенту через пользователя:

app/models/coub.rb:

belongs_to :user
def client
  @client ||= user.client
end

5. Метод url отдает урл коба по пермалинку:

app/models/coub.rb:

def url
  "http://coub.com/view/#{permalink}"
end

Проверим, все ли работает:

$ rails c
> coub = Coub.new
> coub.user = User.first
> coub.text1 = 'Text 1'
> coub.text2 = 'Text 2'
> coub.text3 = 'Text 3'
> coub.tags = 'tag1, tag2, tag3'
> coub. visibility_type = 'unlisted'
> coub.generate_and_upload_video
> coub.url
=> "http://coub.com/view/5dbyc"

По этому урлу можно зайти и посмотреть на синий экран “Your coub is being processed”.

Осталось сделать для всего этого контроллер:

1. Создаем контроллер coubs. Он будет состоять из двух методов: index (это будет новая морда, вместо sessions#index) и create. При создании коба мы сразу редиректим на него.

$ rails g controller coubs

app/controllers/coubs_controller.rb:

class CoubsController < ApplicationController
  def index
  end
  def create
    @coub = Coub.create(coub_params.merge(:user => current_user))
    @coub.generate_and_upload_video
    redirect_to @coub.url
  end
private
  def coub_params
    params.require(:coub).permit(:text1, :text2, :text3, :visibility_type, :tags)
  end
end

2. Перетаскиваем index. html.erb из sessions в coubs и прикручиваем туда форму:

app/views/coubs/index.html.erb:

<% if current_user %>
  <p>You’re logged in as <%= current_user.name %>. <%= link_to "Log out", logout_path, method: :delete %></p>
    <%= form_for Coub.new, url: {action: "create"} do |f| %>
    <%= f.text_field :text1, placeholder: "To me", maxlength: 30, size: 50 %><br />
    <%= f.text_field :text2, placeholder: "Your Coub API", maxlength: 30, size: 50 %><br />
    <%= f.text_field :text3, placeholder: "Is a piece of shit", maxlength: 30, size: 50 %><br />
    <%= f.select :visibility_type, options_for_select(["public", "friends", "unlisted", "private"]) %><br />
    <%= f.text_field :tags, placeholder: "first tag, second tag" %><br />
    <%= f.submit "Create Coub" %>
  <% end %>
<% else %>
  <p>Please <a href="/auth/coub">log in via Coub</a>.</p>
<% end %>

Все, теперь заходим в браузер, и проверяем, что все работает:

В этом туториале я описал только принцип работы API. Разумеется, для настоящего приложения надо еще много чего дописать: валидации, проверки ответов API, обработки ошибок, интерфейс нарисовать, тесты. Чуть-чуть допиленная версия этого скрипта лежит вот тут http://fantozzi.dev2.workisfun.ru, там все то же самое, но видео готовится и закачивается асинхронно через delayed_job.

Исходники этого туториала лежат в гитхабе: https://github.com/igorgladkoborodov/memegenerator/.

Если есть какие-то вопросы по этому туториалу или по API, пишите на [email protected].

Обзор панорамной экшн-камеры GoPro Max

Давненько мы не знакомились с новыми экшн-камерами этого бренда. Его имя играет ту же роль, что и слово «ксерокс», когда под торговой маркой понимаются любые копировальные устройства. Ровно так же слово «GoPro» давно стало синонимом экшн-камеры, и вполне заслуженно.

GoPro Max — пожалуй, самое лаконичное название из всех ранее применявшихся. В названии этом пока отсутствует цифровой индекс. Имея два полусферических объектива, аппарат дает возможность панорамной фото- и видеосъемки, причем с использованием стабилизации, что осуществить технически довольно сложно. При этом звук может записываться шестью (!) встроенными микрофонами, создавая в записи атмосферу полного погружения.

На этот раз задачка будет сложной. Рассматриваемая камера имеет необычную конструкцию, которая требует тщательного изучения и поиска сцен для съемки, что непросто проделать в такие сжатые сроки.

Конструкция, технические характеристики

Упаковка камеры имеет традиционную конструкцию, состоящую из коробки с аксессуарами и прозрачным колпаком, под которым на постаменте гордо красуется аппарат.

В отделении с аксессуарами можно отыскать следующие комплектующие:

  • площадка с изогнутой липкой основой для крепления камеры к шлему
  • фирменный аккумулятор
  • две защитные линзы
  • матерчатый чехол для переноски камеры, в котором имеется два кармашка для хранения линз
  • две защитных крышки на объективы
  • кабель USB — USB Type-C
  • руководство пользователя
  • гарантийный талон, листовки

Чего не хватает в комплекте? Конечно же, креплений на все случаи жизни: на руль, на штатив или монопод, на лобовое стекло автомобиля. .. Увы, все эти дополнительные аксессуары традиционно для GoPro и других «раскрученных» брендов приобретаются отдельно и стоят довольно ощутимых денег.

Корпус аппарата изготовлен из алюминиевой основы и прочного пластика с резиновым покрытием «софт-тач», препятствующем выскальзыванию камеры из рук. Основным объективом здесь принято считать тот, который расположен на стороне, не имеющей дисплея. Хотя параметры обеих камер совершенно одинаковы, в отличие от камер смартфонов. Рядом с каждым объективом находится решетка с отверстиями — под ними прячутся встроенные микрофоны.

Сенсорный дисплей размерами 34×19 мм хорошо улавливает касания и распознает смахивания. Пытаться управлять камерой руками в перчатках — дело бесполезное. Если, конечно, пальцы перчаток не имеют специальных вставок.

Полусферические стекла объективов выпирают из корпуса на 6 мм, это требуется для панорамной съемки. Но из-за этого их очень легко испачкать или повредить. Как ни возьмись за камеру, куда ее ни положи — обязательно хоть один объектив, но «запальцуешь».

Вид справа Вид слева Вид сверху Вид снизу

Из органов управления тут всего две кнопки: сбоку, для включения камеры и смены режима съемки, и наверху, для старта и остановки записи. Кстати, камера умеет снимать без предварительного включения. Достаточно нажать кнопку записи и удерживать ее три секунды — камера включится и тут же начнет запись в режиме панорамного таймлапса. Одно короткое нажатие приведет к старту мгновенной записи в режиме, который был установлен по умолчанию. Оригинально выполнены крепежные ушки: чтобы не увеличивать габариты камеры и была возможность установить ее вертикально без использования креплений, их сделали убирающимися в углубление, как шасси у самолета.

Как обычно, выразим глубокое сожаление по поводу отсутствия стандартного резьбового отверстия под штатив. Нет крепления надежней обыкновенной металлической резьбы, которая имеется абсолютно у любого штатива и шире всех прочих типов креплений распространена во всевозможных авто/мотодержателях, минитреногах, моноподах и т.  д.

На правом торце корпуса расположена сдвижная откидывающаяся крышка, она фиксируется собачкой. Под крышкой находится отсек сменного аккумулятора, слот для карты памяти и порт USB Type-C для зарядки батареи.

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

Прилагаемые защитные линзы не имеют резьбы, они туго надеваются на обрезиненные обода объективов камеры. Крышки же предназначены для защиты штатных объективов, без линз. На объективах крышки удерживаются также силой трения.

С надетыми защитными линзами камера серьезно прибавляет в габаритах, зато меньше приходится беспокоиться о сохранности стекол объективов.

Ввиду того, что конструктивно герметичный аппарат не имеет никаких вентиляционных отверстий или открытых металлических площадок, отводящих внутреннее тепло наружу, есть подозрения о возможном перегреве электроники во время длительной работы камеры. Чтобы проверить камеру на предмет нагрева, включим запись и оставим работающий аппарат на некоторое время, после чего сфотографируем его тепловизором. Следующие снимки были сделаны после 15 минут записи в панорамном режиме 360° (съемка двумя камерами), чтобы оба сенсора наверняка прогрелись.

Видно, что некоторые участки корпуса камеры нагрелись до 52 °C. Где-то здесь, скорее всего, спрятан процессор, обрабатывающий два потока видео и сшивающий их в панораму. Да, температура довольно высокая, но все же не настолько критическая, чтобы бить тревогу. Остается добавить, что тестирование проводилось в помещении с температурой 23-24 °C.

Основные технические характеристики аппарата приведены в следующей таблице:

Сенсор2 сенсора CMOS 16,6 Mп
Интерфейсы
  • USB Type-C
  • Wi-Fi
  • Bluetooth
Носителькарта памяти формата microSD до 128 ГБ
Габариты, вес64×69×24 мм, 154 г
Длительность записи от аккумуляторабеспрерывная запись до 105 минут в режиме 1080 60p
Режимы видеозаписив тексте статьи
Прочие характеристики
  • электронная стабилизация изображения Max HyperSmooth с функцией выравнивания горизонта
  • управление по Wi-Fi
  • режим Time Lapse
  • режим Max TimeWarp
  • режим Slow Motion
  • водонепроницаемый корпус (до 5 метров)
Розничные предложения

узнать цену

Эту и другую информацию можно увидеть на страничке продукта.

Видео/фотосъемка

При подготовке статей с обзорами видео- или фотокамер не делается попыток снять художественный, видовой или экшн-фильм, как того хочется некоторым читателям. Цель каждой сугубо технической статьи — рассказать об эксплуатационных свойствах прибора, по возможности показать, каким образом настройки камеры либо условия съемки могут повлиять на характер и качество получаемого видео, а также ознакомиться с оригинальными видеороликами, снятыми в фиксированных условиях, для последующего сравнения со съемками, которые сделаны другими аппаратами.

Прежде всего изучим технические параметры видео, которое записывает камера. Она предлагает на выбор три режима видеосъемки с разным размером кадра и разной частотой, также есть возможность выбора кодека (кроме панорамной съемки, она всегда записывается в HEVC). Кстати, частота зависит еще и от настроек региона, которые в камере скрываются в параметре с названием «Устранение мерцания». На самом деле этот параметр является переключателем PAL/NTSC, а значит, количество частот кадров, с которыми можно вести съемку, увеличивается почти вдвое. Ведь NTSC — это 24, 30 и 60 кадров в секунду, в то время как PAL всегда кратен пяти, то есть, 25 или 50 кадров в секунду.

В следующей таблице можно наблюдать, как изменяется битрейт в зависимости от выбранного формата и кодека. По всему выходит, что лучше использовать сжатие в H.265 (HEVC), который серьезно экономит место на карте памяти. В среднем на треть. И это первое правило использования камеры.

Размер кадраЧастота кадров в файлеКодек, макс. битрейт (Мбит/с)Звук
H.264H.265
выс.низ.выс.низ.
4096×134424, 25, 30нетнет30нетAAC стерео 192 Кбит/с
+ PCM 4 канала 6144 Кбит/с
1920×144024, 25, 30, 50, 6078606045AAC стерео 192 Кбит/с
1920×108024, 25, 30, 50, 6045303624AAC стерео 192 Кбит/с

Уточним: в таблице указан максимальный битрейт, с которым записывается видео с максимальной же частотой кадра. При снижении частоты кадров снижается и уровень битрейта. К примеру, если видео 1440p с частотой 60 кадров в секунду имеет битрейт 60 Мбит/с, то в видео с таким же размером кадра, но частотой 24 к/с, битрейт снижается до 35 Мбит/с.

Битрейт в файлах тратится на формирование ключевых (I) и разностных (P) кадров, двунаправленные кадры (B) в потоке отсутствуют.

Продолжим синтетические исследования. Следующий параметр, который интересен и является, по сути, ключевым для многих камер — разрешающая способность. Измерить ее нетрудно, повторить такие эксперименты может каждый. Чтобы составить полное впечатление о возможностях камеры, мы произвели измерение во всех режимах съемки, а также с разными углами обзора. И сделали это не зря. Оказалось, что изменение угла обзора трагическим образом сказывается на разрешающей способности.

Видно, что максимальная разрешающая способность достигается в режиме 1920×1440 с самым широким углом обзора: до 1000 ТВ-линий по горизонтальной стороне кадра. С уменьшением угла обзора разрешающая способность падает вплоть до 700 ТВ-линий. В Full HD-режиме съемки разрешающая способность также зависит от угла обзора, стартуя с 800 ТВ-линий на широком и заканчивая смешными 500 линиями. Такая деформация качества говорит о том, что «родной» для камеры режим съемки — это старший, с размером кадра 1920×1440, причем полученный на самом широком угле обзора. При уменьшении угла камера всего лишь делает кроп кадра, а получившийся кусочек картинки растягивает до исходной площади. Эта операция и приводит к падению детализации. Вот и второе правило: впредь снимать будем только в режиме 1920×1440 60p с самым широким углом.

Кстати, удивительное дело! Включенный стабилизатор никак не влияет ни на угол обзора, ни на разрешающую способность камеры. А это странно, ведь стабилизатор в камере не оптический, а электронный, то есть, программный (однако, похоже, тут он усилен еще и датчиками наклона, гироскопами). Программные стабилизаторы, в отличие от оптических, компенсируют тряску за счет свободной площади сенсора, что отнимает значительную часть разрешающей способности. Но так устроено в обычных камерах, а ведь эта камера — GoPro. Здесь стабилизатору изначально отведена достаточная для его работы площадь сенсора, которая не задействуется в обычной, нестабилизированной съемке.

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

Наглядно представить разницу в детализации и характере картинки, которые дают некоторые режимы записи, можно с помощью следующих стоп-кадров. Сцена эта в основном статичная, но динамику мы еще обязательно снимем. Заранее просим прощения за свинцовое небо, но такая уж здесь широта.

Ну что, есть еще желающие снимать с узким углом обзора? Нет? Отлично, пиксельно-табличная повестка исчерпана, расходимся!

Итак, мы получили три технических правила-рекомендации по съемке этой камерой в обычном, «плоском» режиме (разработчик называет его режимом Hero, то есть съемка выполняется как на камеры GoPro Hero):

  • Предпочтительный кодек: H. 265 (HEVC)
  • Предпочтительный режим: 1920×1440 60p с максимальным углом обзора
  • Стабилизация: может быть всегда включена, но при использовании штатива ее лучше отключить

Кстати, о стабилизаторе. Этому чуду следует посвятить отдельную статью. Как разработчики добились подобной эффективности — решительно непонятно! Даже оптический стабилизатор, будь он самый лучший и точный, не в состоянии так блестяще удерживать картинку. Похожий уровень стабилизации могут дать разве что ручные электронно-механические стабилизаторы, гимбалы. Но здесь камера просто удерживается руками, оператор перемещается спокойным шагом, никаких волшебных рукояток не применяется. И результат: камера плывет.

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

Может быть, мелкая-мелкая вибрация, дрожь, заставят стабилизатор дать осечку? Свежий лед на реке, с виду ровный, на самом деле испещрен неглубокими канавками и ямками. Штатив с резиновыми опорами по нему хоть и скользит, но каждая выбоинка четко передается камере. Тем не менее, результат съемки со стабилизатором идеален. Ни единого вздрагивания и изменения направления!

Тут бы перевести дух, но нет, рано. В дополнение к стабилизатору в камере имеется еще одна функция — выравнивание горизонта. Работает эта компенсация чертовски эффектно. Как ты камеру ни наклоняй — горизонт не завалится. Камера может даже переворачиваться вверх тормашками непосредственно в момент съемки, но линия горизонта будет удерживаться как приклеенная.

Это результат работы датчиков положения и наклона. Они вовремя передают информацию процессору, который компенсирует наклон, изменяя положение сканируемой зоны на сенсоре камеры. Дико сложная технология, которая несколько лет назад могла считаться чудом, а теперь — пожалуйста, у нас в руках.

Роллинг-шаттер в съемке камерой полностью отсутствует (подробнее см. в материале Роллинг-шаттер в видеосъемке — описание дефекта, примеры, пояснения). Тому есть две причины:

  • высокая скорость сканирования сенсора
  • широкий угол обзора

Современные камеры, почти без исключения, оснащены умной автоматикой, которая самостоятельно изменяет экспозицию, настраивает баланс белого и другие параметры. Экшн-камеры по определению должны иметь самую продвинутую автоматику, чтобы пользователю не нужно было отвлекаться на настройку съемки даже в сложных условиях освещенности.

Рассматриваемый аппарат полностью отвечает этим требованиям. За время тестирования автоматический баланс белого ни разу не соврал, а экспозиция выстраивалась так, чтобы в кадре не было слишком пересвеченных или затемненных областей.

Несмотря на наличие умной автоматики, камера все же дает возможность ручной регулировки характера картинки. К таким параметрам относятся компенсация экспозиции, выдержка и усиление. Все эти и другие настройки собраны в служебном меню камеры в разделе Protune. Здесь можно найти также пункт Цвет, в котором имеются две настройки: цвет GoPro и Плоский цвет.

Цвет GoPro Плоский цвет

Как видим, вариант с плоским цветом дает умеренную контрастность, темные области в нем выглядят чуть светлее, а цвета выражены несильно. Такая картинка лучше подходит для последующей цветокоррекции в видеоредакторах.

Еще один параметр настройки изображения в камере касается резкости объектов. Имеется три градации: Высокая, Средняя и Низкая резкость.

Высокая резкость Низкая резкость Средняя резкость

Признаться, не совсем понятно назначение этого параметра. Неужели кто-то хочет видеть в своих записях «мыло» вместо детализированной звенящей картинки?

Изучим качество кодирования динамичных сцен. Очень сложной для кодирования сценой считается водная рябь или бурлящий поток. Съемка такого объекта показывает все невидимые прежде особенности кодирования. Как положительные, так и отрицательные. Кстати, как и в прежних примерах, полные стоп-кадры можно увидеть по ссылкам.

Не нужно обладать исключительным зрением, чтобы увидеть явную разницу в качестве: в видео с высоким уровнем битрейта присутствует гораздо больше деталей, чем при низком битрейте, где эти детали замазываются кодеком. А отсюда выводится уже четвертое правило в дополнение к полученным трем: выставить в настройках камеры высокий уровень битрейта, раз и навсегда.

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

Полноразмерный оригинальный видеоролик, взятый с карты памяти, можно скачать по этой ссылке (212 МБ).

Как уже говорилось, настройки камеры позволяют отрегулировать такой параметр, как усиление (в нашей камере используется фотоаппаратный термин ISO). Это крайне важно, поскольку все мини-камеры страдают слепотой по естественной причине — из-за миниатюрной оптики. Чтобы компенсировать незрячесть, камера включает адское усиление. Что приводит к появлению большого количества цифрового шума в картинке. Который к тому же не статичен, он пляшет и здорово раздражает.

Помимо шума, при недостатке освещенности серьезно падает детализация. В общем и целом, такое видео непригодно для использования. Разве что для просмотра на маленьких экранчиках смартфонов подойдет.

Задача: выяснить, на каких значениях ISO и при съемке с какой частотой кадров цифровой шум в кадре становится неназойливым. Для этого тайно, под вечерней тьмой, мы вернулись на место дневного преступления, где уже проводили съемку. И повторили ее, но уже с двумя разными частотами кадров, 60 и 24, причем с разными уровнями чувствительности, от ISO 6400 до ISO 800.

Видно, что в съемке с частотой 60 к/с уровень шума становится терпимым при ISO 3200, а с частотой 24 к/с — при ISO 1600. Так мы получили еще одно правило, уже пятое: вечером и ночью не снимать в съемке при недостатке света переключаться в режим низкой частоты кадров, ограничив ISO уровнем 1600.

Разобравшись с основными возможностями камеры, перейдем к специфическим режимам съемки. Речь в первую очередь, конечно же, о панорамном видео. Иначе для чего еще второй объектив.

Все панорамные камеры сталкиваются с одной и той же проблемой: склейка кадров, полученных разными объективами. Одни камеры делают сшивку самостоятельно, встроенным софтом. Другие камеры не умеют склеивать сами, и материал, снятый ими, требует обработки в специализированном программном обеспечении, что обычно дает лучший результат. Рассматриваемая камера непосредственно во время съемки склеивает видео с обеих камер в один видеофайл, его размеры составляют 4096×1344 пикселей.

Правда, результат склейки получается, мягко говоря, неаккуратный. Однако если загрузить видео в сервис GoPro Plus, это видео проходит некую загадочную обработку, в результате которой все резкие границы чудесным образом исчезают. На следующем рисунке представлены скриншоты видеоредактора Premiere Pro в VR-режиме. Слева — оригинальный видеофайл-панорама, скопированный с карты памяти. Справа — тот же самый файл, но обработанный особым фирменным образом и скачанный из GoPro Plus.

И этот же самый ролик, загруженный в YouTube с параметром VR (слева), он же в окне воспроизведения сервиса GoPro Plus (справа).

Как же это получается? Почему «сырые» ролики имеют эти границы, а обработанные — нет? Быть может, дело в размере кадра? Мы помним, что оригинальная панорамная съемка записывается в файл с размерами 4096×1344. В то время как обработанный сервисом и скачанный файл имеет размер 3840×1920. Хорошо, если мы изменим размер кадра, то получим отсутствие видимых границ склейки?

Ничего подобного. Не получим. Ибо обработка заключается не только в изменении размера кадра. Получить такую обработку можно только одним способом: загрузив видео в сервис GoPro Plus и опубликовав его. Скачать обработанное видео получится только после публикации.

Локально же, без участия облачного сервиса, разрешается только осуществить подрезку видеофайлов, не более. Делается это с помощью смартфона. Но и здесь все оказалось завязано на сервис GoPro Plus. Поскольку подрезанный файл нельзя получить никаким иным способом, кроме автоматической выгрузки в GoPro Plus с последующей загрузкой оттуда. А если учесть, что использование сервиса GoPro Plus не является бесплатным…

Подрезка производится в фирменном мобильном приложении GoPro App. Процесс этот крайне долгий. И нежный. Для успешного окончания обработки файла следует деактивировать в настройках камеры автовыключение, дать ей USB-питание и следить, чтобы связь между смартфоном и камерой не разрывалась. Трогать смартфон во время работы категорически воспрещается. Пусть на дисплее крутится индикатор прогресса рендеринга.

Если во время работы смартфона и камеры вам вдруг позвонят или вы переключитесь в другое приложение — связь камеры со смартфоном разорвется, вся недоделанная работа может исчезнуть и длительный процесс придется начинать заново. Чтобы это понять и как-то систематизировать, мы потеряли несколько часов. Попутно выяснили, что работу выполняет не смартфон, а камера. Смартфон же в это время занят обменом данными с камерой, а по окончании обработки смартфон примется отправлять подрезанное видео с камеры в сервис GoPro Plus. Откуда его можно будет впоследствии скачать. Другими способами получить обработанное видео нельзя, или мы не нашли такой возможности.

Что касается «сырого» видео, снятого камерой и находящегося на карте памяти — для его получения не требуются никакие программы. Достаточно скопировать файлы с карты на HDD через обычный картовод, чтобы заняться монтажом в любом стороннем программном обеспечении.

О мобильном софте будет рассказано в следующей главе, а пока взглянем на результат работы. Этот полученный после обработки видеофайл, загруженный на YouTube, по умолчанию воспроизводится в режиме VR. Кстати, эти ролики можно смотреть на мобильном устройстве или в VR-очках, меняя ракурс поворотом и наклоном телефона.

В дальнейшем мы будем приводить панорамные ролики, загруженные на YouTube. Он, как и GoPro Plus, умеет воспроизводить VR-видео. Но, в отличие от GoPro Plus, YouTube не требует денег за ежемесячную подписку (по крайней мере, пока). Для написания обзора мы, конечно, открыли подписку в GoPro Plus (первый месяц — бесплатно), чтобы получить хотя бы скриншоты, но на момент публикации статьи эта подписка и аккаунт будут, скорее всего, удалены. А YouTube — останется. И, кстати, просмотр панорамного видео на GoPro Plus пока еще сильно некомфортен, видео долго подгружается и воспроизводится рывками.

Оценивая детализацию панорамных роликов, нельзя забывать о том, что вы видите лишь малую часть исходной картинки. Соответственно, и детализация падает в разы. Но, учитывая, что подавляющее большинство зрителей нынче смотрят видео на смартфонах с их малюсенькими экранчиками, детализация не играет серьезной роли. Тем более, если видео снято в движении.

Хороший любительский аппарат должен иметь возможность интервальной съемки, ее иногда называют Time Lapse. Разумеется, в рассматриваемой камере такой режим имеется. Во время интервальной записи видео составляется из отдельных кадров, снятых с определенными интервалами. Интервалы выбираются в настройках, наша камера дает возможность выбрать ускорение от 2× до 30×.

В камере имеется еще одна эффектная и оригинально реализованная функция с названием Max TimeWarp. Она работает только в обычном, «плоском» режиме (в панорамном доступен лишь обычный интервальный режим). Судя по описанию, которое разработчик приводит на своем сайте, Max TimeWarp — это обычный Time Lapse, но с изюминкой. Она заключается в том, что камера, создавая стоп-кадры и склеивая их в видеоролик, одновременно анализирует картинку на предмет изменения (движение, свет). Обнаружив движение, камера автоматически переходит в режим видеосъемки с обычной скоростью, а как только движение закончится, аппарат вернется к интервальному режиму. А скорость съемки можно регулировать вручную, нажатием специальной иконки на дисплее камеры. Что характерно, эти изменения скорости съемки не приводят к паузам и остановкам записи. Видео, имеющее стандартную скорость, записанное в момент обнаружения движения, просто вклеивается в общий интервальный видеоряд. К сожалению, скудное описание, несущее сугубо рекламную нагрузку, не дает представления о том, какой интенсивности должно быть движение в кадре, чтобы камера автоматически изменила скорость записи. Да и вообще, чтобы показать весь потенциал Max TimeWarp, скучная съемка на автостоянке не подходит. Тут нужны особые условия, красивое окружение: какой-нибудь спортзал, стадион, гоночный трек и т. д. А это — время и средства, которых у нас, увы, нет.

Рассматриваемую экшн-камеру можно использовать как продвинутый фотоаппарат, для этого в ней имеется несколько фоторежимов. Максимальный размер обычного фотоснимка составляет 2704×2028 пикселей, а панорамное фото достигает 5760×2880 пикселей. Есть также режим PowerPano, в котором для создания фотопанорамы не нужно плавно вести камеру по линии горизонта.

Программное обеспечение

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

Современные гаджеты обязательно имеют интеграцию со смартфоном. Это стало до такой степени модным, что иногда интеграция превращается в самоцель, что делает неудобным и даже бессмысленным использование мобильного устройства.

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

Как нам видится, главное назначение смартфона должно заключаться вовсе не в обработке тяжелого видео и не для публикации файлов весом в сотни мегабайт (хотя, нынче далеко не у каждого найдется дома компьютер). Смартфон все же более пригоден для непосредственного управления камерой, для удаленной связи с ней. Вот уж эту роль смартфон выполняет просто блестяще!

Для связи с камерой используется фирменное приложение GoPro App. Оно универсально и подходит для любой модели камеры GoPro, снабженной Wi-Fi-адаптером и функцией беспроводного управления. первичное соединение камеры со смартфоном производится через Bluetooth, после чего смартфон подключается к Wi-Fi-точке камеры.

Приложение работает плавно, без задержек и зависаний. В окне трансляции отображаемое видео имеет небольшую задержку, около секунды. Но это в обычном режиме съемки. При переключении в панорамный режим задержка увеличивается примерно до трех секунд.

Добавим положительных эмоций: встроенный в камеру адаптер беспроводной сети настолько мощный, что бесперебойная трансляция видеопотока (даже в режиме панорамы) возможна на расстоянии 70 метров (!) от смартфона в условиях прямой видимости. Редчайшая камера способна на такое.

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

Удаленный просмотр и управление — это хорошо, даже бесподобно. Но как насчет возможности редактирования? Приложение умеет и это. Частичному редактированию поддаются ролики, снятые в «плоском» режиме. Панорамный же контент пока не поддерживается. Его можно подвергнуть лишь простейшей резке.

А что же софт для мощного персонального компьютера? Он необходим для тщательной обработки, к примеру, панорам. Обрабатывать видео на телефоне — это, конечно, стильно-модно-молодежно, однако больше подходит для создания коротких клипов типа Coub-заставок.

Да, такой ПК-софт у GoPro имеется. Вот только завязан он на Магазин Microsoft (есть версия, что кто-то мечтает о будущем доминировании Metro-приложений. Ну-ну). Эта программа называется GoPro Max Exporter. Насколько можно понять из описания, с ее помощью подготавливаются и перекодируются панорамные ролики, снятые нашей камерой. Но, повторяем, скачать ее можно только из указанного магазина, а с этим делом у нас что-то не заладилось по (не)определенным причинам.

Причем не заладилось сразу на нескольких компьютерах. А причины отказа всякий раз отличались. Например, на втором ПК нас попросили немножко подождать. Сколько — не сказали.

А третий ПК, по мнению Microsoft Store — это вообще не компьютер. А значит, на него нельзя ничего скачать и установить.

Спустя сутки второй компьютер — тот самый, который находится в ожидании — сообщил об успехе. Программа наконец-то загрузилась и установилась. Но увы, попытки импортировать в нее 360-градусное видео приводят к немедленному схлопыванию программы. Следующий скриншот сделан за полсекунды до очередного вылета.

Нет, мы понимаем, что ошибка, скорее всего, присутствует на нашей стороне. Как та прокладка между сиденьем и рулевым колесом. Но ошибка три раза подряд на разных компьютерах? Не верится.

Чтобы рассеять сомнения, мы обратились за помощью к коллеге. У него и компьютер помощнее. Результат получился немногим лучше: программа вылетела на 70% прогресса импорта.

Жаль, что нам так и не удалось ответить на вопрос: можно ли устранить недостатки панорамной съемки локально? Придется оставить этот вопрос открытым.

Существует еще одна фирменная программа, называется она GoPro Quik. Она выполнена в «натуральном» виде, а не в выхолощенном Metro-издании. Однако и с ней работа застопорилась. Ничего далее приветственной странички увидеть не получается. После ввода логина и пароля проводится аутентификация (кстати, зачем она нужна, если ты работаешь локально, на ноутбуке, где-нибудь в поле?), открывается рабочее пространство, но при первой же попытке произвести какое-нибудь действие, да просто импортировать материал, программа выбрасывает пользователя опять на эту приветственную страничку.

В списке приложений GoPro также присутствует плеер для воспроизведения панорамных материалов на ПК: GoPro VR Player.

Он умеет лишь воспроизводить панорамное видео, во время просмотра которого пользователь может менять ракурс, передвигая виртуальную камеру мышкой. К слову, это умеет делать любой сторонний плеер, например PotPlayer.

А вот с версией программы для другой операционной системы (GoPro Player для Mac) все сложилось более чем успешно. Это приложение позволяет создать из панорамного видео обычное, «плоское». Но с применением полезного эффекта: виртуальную камеру можно развернуть или наклонить в любую сторону, изменить фокусное расстояние. Положение камеры фиксируется в ключевых точках, которые расставляются на таймлинии по ходу воспроизведения ролика.

Способ перемещения виртуальной камеры между ключевыми точками выбирается из специальной панели движений.

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

Программа умеет экспортировать получившийся ролик в три формата: HEVC, AVC и ProRes. С двумя первыми все понятно, это форматы для конечного хранения и прямого просмотра. А вот третий формат пригодится, если ролик планируется вставить в другой фильм либо подвергнуть дополнительной обработке — цветокоррекции, стабилизации и т.  д.

Выше уже упоминался сервис GoPro Plus. Зарегистрироваться в нем можно на смартфоне, прямо из приложения GoPro App. В процессе регистрации пользователю рассказывается о преимуществах участия в программе. А заодно выясняется наличие одной интересной функции — автовыгрузки.

Работает автовыгрузка так: камера самостоятельно, без участия смартфона, подключается к роутеру (конечно, вход должен быть заранее настроен) и выгружает весь новый материал, находящийся на карте памяти.

Однако преимущество этой функции довольно спорное. Дело в том, что в камере нельзя отметить файлы, которые следует выгружать и которые не следует выгружать. А ведь во время съемки на карту памяти записываются не только удачные дубли, но и брак. На следующем скриншоте показана сетевая активность камеры, которая, вернувшись с очередных съемок, была поставлена на зарядку. Выяснилось, что она самостоятельно выгрузила в облако более двух с половиной гигабайт информации.

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

Было бы странным не использовать умение камеры самостоятельно подключаться к Wi-Fi-сетям как-то еще, кроме выгрузки материалов в «родное» облако. Разработчики выгодно обыграли эту возможность, снабдив аппарат еще одной функцией: прямой трансляцией. Она настраивается в мобильном приложении, где предлагается выбрать интересующую платформу либо создать трансляцию по протоколу RTMP. Буквально несколько щелчков по экрану — и трансляция запущена. Кстати, трансляция может идти как через роутер, так и через Wi-Fi-точку, которая включена в мобильном телефоне.

Наконец, последний писк моды. Голосовое управление. Оно может оказаться незаменимым помощником в ситуациях, когда заняты руки или до камеры нельзя дотянуться, а управление с помощью смартфона исключено. Камера обучена командам на десяти языках, в числе которых присутствует и русский язык. Список голосовых команд можно найти на страничке поддержки GoPro.

Выводы

Недостатки GoPro Max, которые были отмечены во время плотного изучения аппарата, умещаются в коротком списке из двух пунктов. Причем первый недостаток не имеет к камере никакого отношения. А второй является следствием самой конструкции всех экшн-камер или регистраторов.

  • непонятная ситуация с программным обеспечением для Windows (непосредственно к камере это не относится)
  • невысокая чувствительность (а это болезнь всех камер с микрооптикой)

Прочие особенности камеры, какую ни назови — сплошь преимущества.

  • отсутствие перегрева во время длительной работы
  • сенсорный дисплей
  • шесть микрофонов для реалистичного объемного звучания и стереозвука
  • прочный водонепроницаемый корпус
  • голосовое управление
  • датчик GPS, определяющий высоту над уровнем моря и скорость
  • автовыгрузка материалов в облако GoPro Plus
  • отсутствие роллинг-шаттера
  • наличие сверхэффективного аппаратно-программного стабилизатора с полным выравниванием горизонта
  • мощный Wi-Fi-адаптер, обеспечивающий большую дальность связи со смартфоном
  • режим самостоятельной трансляции в интернет без ПК
  • высокая автономность — почти два часа беспрерывной видеозаписи

Из этого списка можно выделить три момента, которые поражают до глубины души: невероятно эффективная стабилизация, мощный Wi-Fi-адаптер и долгое время автономной работы. Эти достоинства, помноженные на полную защиту корпуса, дают камере право называться беспрецедентным примером современного гаджетостроения.

Матильда Танто Слитые Видео – Telegraph



➡➡➡ ПОДРОБНЕЕ ЖМИТЕ ЗДЕСЬ!

Матильда Танто Слитые Видео


Сливы Со Вписок Телеграмм


Gtfobae Слив Фото


Слив Девушек В Телеграмме Вк


Алина Лисичка Слив Вк


Irina Meier Слив Фото


Свежие Слитые Фото
Ника Тик Ток Слив Фото
Лада Мирна Спб Слитое Видео
Слив Малолеток Вписка
Голые Звезды Кино Слиты
Dolphin Слитые Фото
Lilith Слив Привата
Слив Карины Стримерши 2020
Слитое Порно Вписки
Viktoriyaliskova Слив Телеграм
Гей Порно Подборка Сливов Большой Член
Слив Несовершеннолетних Телеграм
Карина Сычева Слитые
Стримерши Сливы 18 Телеграм
Марго Робби Слив Фоток
Слив Интимных Фото Школьниц
Слив Частных Видео Телеграмм
Видео Секс Вписок Школьников Слив
Голая Хейли Этвелл Слив
Слив Михалина Интимки
Lilia Lilith Сливы 18
Жену Трахают При Муже Слитое В Инет
Angelsetfree Слив Onlyfans
Слив Дилана Спроуса Телеграмм
Слив Тони Из Тик Тока
Поклонская Слив Видео
Слив Голых Фото Ютуберш
Слив Популярных Телеграм
Алина Остапович Инстаграм Слитые Фото
Порно Слил Очень Быстро В Вк
Слитые Видео Пейдж Из Wwe
Мадина Басаева Слитые Фотки
Сливают В Рот Чужим Женам
Наташа Королева Слив Фоток
Стримерша Юлечка Слив Телеграмм
Rootyasha Слив Двач
Диана Лукманова Слив
Слив Тендерлибае 2020 Голая
Кищук Слитые Фотки Видео
Реакция Tenderlybae На Слив
Аманда Черни Слив
Знаменитости Слитое В Сеть
Слив Фото Из Тик Тока
Слитые Фото Кристины Финк Патрон Вк
Кристина Fox Слив
Слив Стримерши Секс
Вк Слили 16 Лет
Оксана Федорова Слитые Фото
Riley Reid Onlyfans Слив
Алина Кравец Череповец Слив Фото


Мужская тема Наши движухи! Екатеринбург События Екатеринбурга Спецухи для Екабу Красивые девочки Видео Трэш Обзоры Игры Автомобили  Красивые девушки Близняшки . Сестры-близняшки из Франции, Паулина и Матильда Танто, знают, как привлечь аудиторию . 

Французская модель Матильда Танто опубликовала снимки, на которых она полностью обнажена .
Mathilde Tantot — пост пикабушника elestragod . Комментариев — 17, сохранений — 170 . Присоединяйтесь к обсуждению или опубликуйте свой пост!
После того, как в сеть попали откровенные фотографии Дженнифер Лоуренс с ее взломанного аккаунта, те же хакеры начали публиковать снимки голых знаменитостей буквально один за другим .
7 .4 млн подписчиков, 343 подписок, 137 публикаций — посмотрите в Instagram фото и видео Mathilde (@mathildtantot) . 

26-летняя модель Матильда Танто (Mathilde Tantot) не устаёт радовать своих подписчиков откровенными фотографиями .  На самом желе модели типа Матильды зарабатывают на жизнь, рекламируя товары в Instagram . Для этого им нужно иметь много подписчиков, а как их . . 

Картинки . Coub Видео .  Запостил: Viking,15-06-2020, 05:30вМного девушек (+18) / Золото . 24-летняя французская модель и бизнес-леди Матильда Танто (Mathilde Tantot) на фото в Instagram . 

Паулина и Матильда Танто, они родные сестры-близняшки из Франции . Одинаково шикарные девушки, обе ведут по Инстаграму и частенько устраивают коллаборации, когда делают совместные снимки . 

Матильда Танто регулярно публикует откровенные снимки в своем инстаграме . У нее есть сестра-близнец Паулин, которая тоже является моделью и регулярно позирует практически без одежды . 

Содержание: Откровенное видео , из-за которого Amouranth забанили на Twitch . Косплей . Слитые фото . Полотенце, одинаковое лицо и киска с собачкой . Настоящее имя стримершы Amouranth – Кэтлин Сирагуза .
Матильда Танто (Mathilde Tantot) . Фильмография, фото, интересные факты из жизни и многое другое на КиноПоиске . Полный список фильмов и совместных работы с другими актерами и режиссерами . 

Модель популярного бренда Fashion Nova Матильда Танто попозировала рядом с бассейном во дворе дома в костюме бренда Dyspnea, состоящем из кроп-топа и короткой юбки . Прозрачная ткань наряда, который расшит пайетками, просвечивает обнаженное тело манекенщицы . . 

Темы . Ещё . Matilda Tantot / Матильда Танто — MK18+ . 

Матильда Танто решила поиграть в теннис под палящим солнцем . Немудрено, что девушка вспотела от физических нагрузок . А еще это стало отличным поводом выложить несколько горячих фотографий . 

Посмотреть видео можно на основной версии сайта .  25-летние француженки Матильда и Паулин Танто — популярные инста-близняшки, которые в совокупности имеют более 10 млн подписчиков в «Инстаграме» . 

Лента Темы 93 985 Фото 61 507 Видео 19 Участники 292 821 . 

25-летняя модель Матильда Танто, работающая на бренд Fashion Nova, сделала селфи топлес в машине .  Матильда Танто часто публикует откровенные снимки в своем инстаграме, в том числе в белье, через которое просвечивает обнаженное тело . 

Сёстры-близняшки из Франции Матильда и Паулин Танто регулярно постят пикантные фотографии у себя в соцсетях, почти не используя одежду . Их аккаунт в Instagram пользуется бешеной популярностью – сейчас он насчитывает уже 4 млн подписчиков . 

25-летние модели-близнецы Матильда и Паулин Танто (Mathilde и Pauline Tantot) снялись в провокационной фотосессии . Сестры позировали в прозрачных бюстгальтерах . Француженки предстали перед камерой в нижнем белье популярного бренда Fashion Nova . 

Мужская тема Наши движухи! Екатеринбург События Екатеринбурга Спецухи для Екабу Красивые девочки Видео Трэш Обзоры Игры Автомобили  Красивые девушки Близняшки . Сестры-близняшки из Франции, Паулина и Матильда Танто, знают, как привлечь аудиторию . 

Французская модель Матильда Танто опубликовала снимки, на которых она полностью обнажена .
Mathilde Tantot — пост пикабушника elestragod . Комментариев — 17, сохранений — 170 . Присоединяйтесь к обсуждению или опубликуйте свой пост!
После того, как в сеть попали откровенные фотографии Дженнифер Лоуренс с ее взломанного аккаунта, те же хакеры начали публиковать снимки голых знаменитостей буквально один за другим .
7 .4 млн подписчиков, 343 подписок, 137 публикаций — посмотрите в Instagram фото и видео Mathilde (@mathildtantot) . 

26-летняя модель Матильда Танто (Mathilde Tantot) не устаёт радовать своих подписчиков откровенными фотографиями .  На самом желе модели типа Матильды зарабатывают на жизнь, рекламируя товары в Instagram . Для этого им нужно иметь много подписчиков, а как их . . 

Картинки . Coub Видео .  Запостил: Viking,15-06-2020, 05:30вМного девушек (+18) / Золото . 24-летняя французская модель и бизнес-леди Матильда Танто (Mathilde Tantot) на фото в Instagram . 

Паулина и Матильда Танто, они родные сестры-близняшки из Франции . Одинаково шикарные девушки, обе ведут по Инстаграму и частенько устраивают коллаборации, когда делают совместные снимки . 

Матильда Танто регулярно публикует откровенные снимки в своем инстаграме . У нее есть сестра-близнец Паулин, которая тоже является моделью и регулярно позирует практически без одежды . 

Содержание: Откровенное видео , из-за которого Amouranth забанили на Twitch . Косплей . Слитые фото . Полотенце, одинаковое лицо и киска с собачкой . Настоящее имя стримершы Amouranth – Кэтлин Сирагуза .
Матильда Танто (Mathilde Tantot) . Фильмография, фото, интересные факты из жизни и многое другое на КиноПоиске . Полный список фильмов и совместных работы с другими актерами и режиссерами . 

Модель популярного бренда Fashion Nova Матильда Танто попозировала рядом с бассейном во дворе дома в костюме бренда Dyspnea, состоящем из кроп-топа и короткой юбки . Прозрачная ткань наряда, который расшит пайетками, просвечивает обнаженное тело манекенщицы . . 

Темы . Ещё . Matilda Tantot / Матильда Танто — MK18+ . 

Матильда Танто решила поиграть в теннис под палящим солнцем . Немудрено, что девушка вспотела от физических нагрузок . А еще это стало отличным поводом выложить несколько горячих фотографий . 

Посмотреть видео можно на основной версии сайта .  25-летние француженки Матильда и Паулин Танто — популярные инста-близняшки, которые в совокупности имеют более 10 млн подписчиков в «Инстаграме» .  

Лента Темы 93 985 Фото 61 507 Видео 19 Участники 292 821 . 

25-летняя модель Матильда Танто, работающая на бренд Fashion Nova, сделала селфи топлес в машине .  Матильда Танто часто публикует откровенные снимки в своем инстаграме, в том числе в белье, через которое просвечивает обнаженное тело . 

Сёстры-близняшки из Франции Матильда и Паулин Танто регулярно постят пикантные фотографии у себя в соцсетях, почти не используя одежду . Их аккаунт в Instagram пользуется бешеной популярностью – сейчас он насчитывает уже 4 млн подписчиков . 

25-летние модели-близнецы Матильда и Паулин Танто (Mathilde и Pauline Tantot) снялись в провокационной фотосессии . Сестры позировали в прозрачных бюстгальтерах . Француженки предстали перед камерой в нижнем белье популярного бренда Fashion Nova . 






















autocrop

autocrop — инструмент для извлечения и управления границами файла MINC

autocrop options in_volume out_volume или autocrop options in_volume

(Первая форма применяется по умолчанию, или если опции включают явный 05-90resample или -reshape . Вторая форма применяется, только если опции включают -noresample или -noreshape .)

ОПИСАНИЕ

autocrop — это инструмент для указания и управления границами файла MINC, где границы определяются как начало и экстент объема в каждом измерении. Начало и протяженность всегда определяются в мировых координатах и ​​задаются в миллиметрах. Границы объема можно извлечь из любого файла MINC, или из специально отформатированного файла тегов, или из уже известного объема, охваченного мозгом в пространстве Талаираха. Операции, которые можно выполнять на этих границах, включают пространственные преобразования и различные способы увеличения/уменьшения объема выборки в трех пространственных измерениях.

autocrop использует mincresample или mincreshape для фактической обработки данных. Вы можете заставить его использовать тот или иной вариант или позволить ему выбрать подходящий. (Он всегда будет выбирать mincreshape, если вы не запросите другой размер шага в выходном томе. Кроме того, если вы попытаетесь принудительно использовать mincreshape и запросите другие шаги, автокроп будет жаловаться и умрет.) Кроме того, вы можете сделать autocrop просто распечатайте параметры командной строки для одной из двух утилит и примените их позже на досуге.

ОПЦИИ

Этот раздел предназначен для быстрого ознакомления после того, как вы ознакомитесь с остальной частью этой справочной страницы. Вероятно, вы захотите пропустить его при первом чтении. (Кроме того, вы всегда можете получить актуальную версию сводки этой опции с помощью команды autocrop -help .)

Основные параметры поведения

-verbose печатать информацию о состоянии и командные строки подпрограмм [по умолчанию; напротив -quiet ]

-execute фактически выполнять запланированные команды [по умолчанию]

-clobber беспечно перезаписывать файлы (а также make подпрограммы) [по умолчанию: -noclobber ]

-debug извергать много информации об отладке (и make подпрограммы тоже) [по умолчанию: - nodebug ]

-tmpdir установить временный рабочий каталог

-keeptmp не удалять временные файлы после завершения [по умолчанию: -nokeeptmp ]

Опции -remple

заставить autocrop использовать mincresample, а также гарантировать, что ресэмплинг действительно выполняется noreshape на самом деле ничего не делает, но вычисляет параметры для mincreshape -params распечатывает параметры для запуска mincresample/mincreshape [по умолчанию: включено, если они не запущены, -noparams в противном случае]

Параметры спецификации границ

-from взять границы из (либо тег, либо файл MINC) [по умолчанию: input volume]

-bbox вычислить ограничивающую рамку данных в и используйте это значение для границ -bbox_threshold threshold значение для использования при запуске mincbbox [по умолчанию: 0]

-talairach взять границы из (приблизительного) размера мозга в пространстве Талаираха Варианты преобразования SubsectionBounds

-transform применить к границам, чтобы поместить их в пространство входного объема options

-expand установить расширение (x,y,z) (увеличить размер объема симметрично на каждом конце оси) параметры -isoexpand установить одинаковый параметр расширения для всех трех осей -extend установить (x,y, z) параметры расширения (увеличение размера объема независимо на каждом конце оси) -isoextend установить один и тот же параметр расширения для всех трех осей SubsectionResampling options

-step установить шаг x, y и z (размер вокселя) для выходной выборки -isostep установить шаг (одинаковый во всех трех измерениях) для выходной выборки НЕТ Действие TAKEN Без опций autocrop — это просто интерфейс для mincreshape; две команды

autocrop foo. mnc bar.mnc и mincreshape foo.mnc bar.mnc эквивалентны. Однако вы можете заставить autocrop использовать mincresample с -resample option:

autocrop -resample foo.mnc bar.mnc Или вы можете сказать ему просто подумать об использовании mincreshape или mincresample с параметрами -noreshape и -noresample . У каждого из них есть несколько побочных эффектов: они говорят autocrop не выполнять желаемую обрезку на самом деле, а просто распечатать аргументы для любой программы, подразумеваемой параметром. Например,

autocrop -noresample foo.mnc напечатает часть командной строки mincresample, которая указывает ту же сетку выборки, что и в foo.mnc . (Конечно, весь смысл autocrop состоит в том, чтобы каким-то образом изменить эту сетку выборки. Этот бит будет позже.) Например, типичный объем ПЭТ в MNI имеет 128x128x15 (x, y, z) вокселей с шагами. 2 мм, 2 мм и 6,5 мм. Для конкретности предположим, что начальные координаты для данного объема равны (0,0,-7,9). Тогда размер этого объема равен (256 мм, 256 мм, 97,5 мм), а команда

Autocrop -noresample foo.mnc выпечатает

-Start 0 0 -7,9 -Step 2 2 6,5 -NELENTEMENTIONS 128 128 15 , в то время как -STOROP -NoreShape Foo.MNC даст вам

-Startart. 0,0,0 -count 15,128,128 Обратите внимание, что параметры указаны для mincresample в каноническом порядке x,y,z; однако для mincreshape параметры переупорядочены в соответствии с имеющимся объемом. В данном случае объем поперечный, поэтому размеры равны z,y,x.

Еще один небольшой момент, касающийся параметров -noresample и -noreshape : если вы хотите использовать их вывод в другой программе, вы, скорее всего, либо перенаправите вывод autocrop в файл, либо откроете канал. чтобы прочитать его вывод. В любом случае autocrop не печатает новую строку в конце аргументов mincresample/mincreshape, как это происходит при выводе на терминал. Часто это удобно.

Один важный параметр, заслуживающий упоминания здесь (потому что я не мог придумать, куда еще его поместить) — -шаг . Хотя размер шага не является строго частью границ объема, он, безусловно, имеет значение при повторной выборке данных и может иметь значение при изменении формы данных. (Например, если какой-либо шаг изменяется более чем на знак, вы не можете использовать mincreshape!)

В качестве простого примера предположим, что вы хотите изменить направление выборки по оси z . В этом случае вы просто предоставляете -шаг желаемые новые шаги:

autocrop foo.mnc foo_negative_z.mnc -шаг 2 2 -6.5 (Да, вы должны знать старые шаги, чтобы указать новые в этом случае.) В этом случае autocrop достаточно умен, чтобы использовать mincreshape для изменения порядка.

Другая возможность заключается в том, что вы можете захотеть передискретизировать объем, чтобы иметь изотропные размеры вокселей, скажем, 2x2x2 мм. Это можно сделать следующим образом:

autocrop foo.mnc foo_cubic.mnc -step 2 2 2 В этом случае, конечно, autocrop должен использовать mincresample. Для случая изотропной выборки существует удобная опция быстрого доступа: -isostep . Вы можете сэкономить несколько нажатий клавиш в приведенной выше команде следующим образом:

autocrop foo.mnc foo_cubic.mnc -isostep 2

СПЕЦИФИКАЦИЯ ГРАНИЦ

Шесть чисел необходимы для указания границ трехмерного объема (к сожалению, autocrop довольно предвзято относится к работе с трехмерными данными ): начало и экстент в каждом из размеров x , y и z . Начальные параметры — это то, что вы думаете из предыдущего опыта MINC: (start_x, start_y, start_z) — это реальные координаты для первого вокселя в объеме. Протяженность измерения — это просто шаг (размер вокселя), умноженный на длину или количество (количество вокселей).

Обратите внимание, что и начало, и экстент чувствительны к знаку шага: например, если данные отбираются слева направо, то шаг и экстент x будут положительными, а началом будет наименьший х -координата. Однако, если данные отбираются справа налево, шаг и экстент x будут отрицательными, а началом будет наибольшая координата x . Аналогичным образом, заднее-переднее (заднее-переднее, для латыни) выборка подразумевает положительный результат 9Шаг и протяженность 0025 y , а выборка снизу вверх (снизу вверх) подразумевает положительный шаг z . Это на самом деле не касается вас при указании границ тома, но об этом удобно помнить.

Очевидно, что легко извлечь границы тома прямо из файла MINC. Фактически, режим autocrop по умолчанию заключается в том, чтобы брать начало и экстент прямо из входного объема, что в большинстве случаев имеет смысл. Однако вы также можете взять границы из другого файла MINC, из данных в другом файле MINC или из файла тегов, который следует соглашению, описанному ниже.

Сначала рассмотрим возможный сценарий, в котором вы хотите, чтобы границы одного тома применялись к другому. Одним из примеров является объем с метками, покрывающий только часть мозга, из которого вы хотите извлечь только данные МРТ-изображения, соответствующие меткам. Допустим, данные изображения находятся в smith_john_mri.mnc , а структура foobar была нарисована метками, сохраненными в smith_john_foobar.mnc . (Этот том этикетки должен быть сильно обрезан, чтобы охватить только интересующую структуру. Последние версии Показать сделать это автоматически.) Затем вы можете обрезать данные изображения до размера структуры следующим образом:

autocrop smith_john_mri.mnc smith_john_crop.mnc -from smith_john_foobar.mnc Слишком просто, а? Если этого недостаточно, вы даже можете сказать autocrop , чтобы он делал такие вещи, как добавление пяти вокселей на одном конце размера x или увеличение громкости на 5% по всему периметру. (Но об этом позже, когда мы перейдем к модификаторам границ.)

Теперь, что, если объем метки , а не сильно обрезан до интересующей структуры? В этом случае вы не хотите, чтобы autocrop брал пределы выборки всего тома; скорее, вас интересуют пределы данных. Это можно сделать с помощью опции -bbox ; например:

autocrop smith_john_mri.mnc smith_john_crop.mnc -bbox smith_john_foobar.mnc будет вычислять ограничивающую рамку данных в smith_john_foobar.mnc и используйте его, чтобы обрезать входной файл МРТ. Если вы хотите вычислить ограничивающую рамку объема без метки (т. е. что-то с минимальным шумом), вы можете использовать -bbox_threshold , чтобы указать абсолютное (реальное) значение вокселя, которое будет использоваться в качестве отсечки для рассмотрения воксел как интересные данные.

Другая возможность заключается в том, что у вас нет границ, которые вы хотите закодировать в удобном файле MINC; вы хотите явно установить начало и экстент для каждого измерения. Это можно сделать, указав файл тега для опции -from, например.

autocrop smith_john_mri.mnc smith_john_crop.mnc -from mybounds.tag (Обратите внимание, что autocrop различает файлы MINC и файлы тегов исключительно по имени файла, поэтому рекомендуется придерживаться стандартных соглашений об именах файлов!) Файл тега должно иметь восемь точек, каждая из которых является одним углом ограничивающей рамки объема. Вы можете подумать, что было бы проще и разумнее указать всего шесть точек, таких как экстремумы каждой оси внутри объема. Однако это приводит к проблемам, когда границы преобразуются при больших поворотах — углы объема имеют тенденцию к обрезанию.

Например, типичный файл PET из MNI имеет такие пространственные параметры (любезно предоставлено mincinfo):

 имя измерения длина шаг начало
zпробел 15 6,5 -7,9
yspace 128 2 0
128 2 0
 

Границы этого объема можно описать как три упорядоченные пары (начало и протяженность в порядке x, y, z): (0,256) (0,256) (-7,9,97,5). Файл тега, описывающий эти границы, будет выглядеть следующим образом:

 Файл точки тега MNI.
Тома = 1;
Очки = 0 0 -7,9 ""
0 256 -7,9 ""
0 0 89.6 ""
0 256 89,6 ""
256 0 -7,9 ""
256 256 -7,9 ""
256 0 89,6 ""
256 256 89,6 "";
 

Должно быть совершенно ясно, что эти восемь точек описывают прямоугольный объем, взятый из файла MINC. (Если нет, нарисуйте его!)

Есть еще один способ указать границы тома: -talairach . Как следует из названия, в этом варианте используется набор жестко запрограммированных точек в пространстве Талайраха, которые определяют объем, охватывающий мозг и кожу головы. Этот объем от х =-80..+80, y =-120..+90, и z =-80..+95, и был выбран кем-то (вашим скромным рассказчиком), у которого нет никаких формальных знаний о нейроанатомии. (Просто чтобы вы знали.) Этот параметр часто бывает полезен в сочетании с преобразованиями границ, которые освещены ниже.

ПРЕОБРАЗОВАНИЕ ГРАНИЦ

Теперь, когда у вас есть ограничивающая рамка для ваших данных, вероятно, вы хотите каким-то образом изменить ее. Первый — с пространственным преобразованием — например, ваши границы могут быть в пространстве Талайраха, но вы хотите применить их к данным в исходном пространстве. (Для тех, кто мыслит исторически, это и было первоначальным толчком к autocrop , до того, как он стал полнофункциональным бегемотом, которого вы сейчас видите перед собой.)

В качестве конкретного примера, скажем, у нас есть том МРТ в smith_john_mri.mnc , преобразование, чтобы получить его в пространстве Талайраха в smith_john_mrital.xfm и плотно обрезанная маска мозга в пространстве Талайраха в medium305_t1_tal_lin_mask.mnc . Мы хотим обрезать собственный объем МРТ, используя объем мозга, но сначала нам нужно преобразовать информацию об этом объеме обратно в исходное пространство. Это можно сделать с помощью autocrop с опцией -transform вместе с флагом -invert (поскольку мы предоставляем преобразование родного в Талайрах, а не Талайраха в родной):

 autocrop smith_john_mri. mnc smith_john_crop.mnc -из
среднее305_t1_tal_lin_mask.mnc -transform smith_john_mrital.xfm -invert
 

(Если у вас под рукой есть преобразование Talairach в исходное, вы можете снять флаг -invert .)

Кроме того, это отличное место для использования -talairach флаг вместо предоставления явного объема метки, из которого извлекается ограничивающая рамка. Преимущества -talairach заключаются в том, что вы каждый раз получаете одни и те же границы, эти границы симметричны относительно x и легко воспроизводимы, вам не нужен сильно обрезанный объем этикетки, и вам не нужно вводить как много. Недостатком является то, что вы безоговорочно доверяете одному конкретному предположению (моему) о пространственной протяженности мозга и скальпа в пространстве Талайраха.

МОДИФИКАЦИЯ ГРАНИЦ

После того, как вы установили границы в нужном пространстве (путем пространственного преобразования или вообще ничего не делая), вы, вероятно, захотите их немного изменить. Вернемся к примеру обрезки тома МРТ в соответствии с границами помеченной структуры. Если вы просто сделаете это:

autocrop smith_john_mri.mnc smith_john_crop.mnc -from smith_john_foobar.mnc, то вы выбросите все данные МРТ за пределы ограничивающей рамки помеченной структуры. Если это небольшой объем, то вы, вероятно, слишком много обрезали и потеряли любой полезный анатомический контекст. В этом случае вы, вероятно, захотите немного расширить границы, скажем, на 10%. Это легко сделать с помощью -expand вариант (точнее его ярлык -isoexpand ):

 autocrop smith_john_mri.mnc smith_john_crop.mnc -from smith_john_foobar.mnc -isoexpand 10%
 

(Неудивительно, что -isoexpand 10% является сокращением для -expand 10% 10% 10% .) Расширение измерения увеличивает объем пространства, покрываемого равной величиной на обоих концах измерения. Например, если размер x покрывает 200 мм от x =0. .+200, то его увеличение на 10% уменьшит начало на 20 мм (10% от 200 мм) и увеличит экстент на 40 мм (от 20 мм до фактически увеличить размер и 20 мм, чтобы компенсировать уменьшение начальной координаты.)

Обратите внимание, что запрос на расширение на 10 % приводит к тому, что экстент измерения фактически увеличивается на 20 %. Это функция, потому что расширение на x означает расширение на x на каждом конце измерения.

Коэффициенты расширения также могут быть указаны в миллиметрах или вокселях; просто добавьте mm или v вместо %. Если единица измерения не указана, используются миллиметры. Обратите внимание, что процент всегда представляет собой процент от экстента измерения в мировых координатах , а не от количества выборок в этом измерении. Кроме того, коэффициенты расширения могут быть отрицательными; это приведет к уменьшению размера на заданную величину на обоих концах.

Теперь предположим, что вы хотите изменить объем пространства, покрываемого измерением, по-разному на двух концах. Это называется, за неимением лучшего слова, расширением измерения. Коэффициенты расширения очень похожи на коэффициенты расширения, за исключением того, что их должно быть два для каждого измерения: первый охватывает нижний конец оси, а второй охватывает верхний конец. Низкий и высокий здесь находятся в мировом координатном смысле, поэтому низкий x — это левый пациент, низкий y — задний пациент, а низкий z — верхний пациент, независимо от направления выборки.

Примером из реальной жизни является необходимость отрезать нижнюю часть тома перед регистрацией. Это характерно для данных МРТ, полученных коронарно или сагиттально; обычно размер z в этих случаях составляет 256 мм, что хорошо заходит в шею. Если эти данные не удалить, автоматическая регистрация в модельном мозге может быть действительно очень хитрой. Кроме того, удаление фрагмента ненужных данных — это большой выигрыш для времени и пространства обработки. Например, чтобы удалить 25% данных в нижней части z axis:

autocrop smith_john_mri. mnc smith_john_crop.mnc -extend 0,0 0,0 -25%,0 Обратите внимание, что мы предоставили отдельные пары расширений для каждого измерения, но расширения до x и и ничего не делать. Для z отрицательный коэффициент расширения означает удаление данных на 25%, если быть точным. На верхнем конце оси z мы ничего не делаем. (Если ваши данные МРТ постоянно имеют> 5 мм пустого пространства, вы можете сэкономить немного больше времени и места, сократив это с помощью -удлинить 0,0 0,0 -25%,-5мм . Обратите внимание на изящное смешивание модулей в одной паре расширений; это совершенно законно и предположительно полезно.)

СМ. ТАКЖЕ

mincresample, mincreshape

АВТОР

Грег Уорд вдохновлен потребностями полностью автоматизированной регистрации МРТ-ПЭТ и МРТ-Талаираха. (Следовательно, см. также mritotal и mritopet (у которого пока нет справочной страницы).) Университет. Настоящим предоставляется разрешение на использование, копирование, изменение и распространение этого программного обеспечения и его документации для любых целей и без оплаты при условии, что указанное выше уведомление об авторских правах присутствует во всех копиях. Автор и Университет Макгилла не делают никаких заявлений о пригодности этого программного обеспечения для каких-либо целей. Он предоставляется как есть без явных или подразумеваемых гарантий.

Обратите внимание, что программы mincreshape и mincresample написаны и защищены авторскими правами Питера Нилина, Центра визуализации мозга Макконнелла, с теми же условиями, что и выше.

Advanced Smart Crop — интеллектуальное автоматическое кадрирование изображения

Содержание

Мы внесли значительные улучшения в наш алгоритм Smart Crop, сделав автоматическую обрезку изображений еще лучше. Благодаря улучшенному распознаванию лиц, обнаружению признаков и различным режимам кадрирования новый алгоритм обеспечивает более высокую точность кадрирования как лицевых, так и нелицевых изображений. Мы обновили текст и примеры, чтобы продемонстрировать это улучшение.

Каждое изображение отличается. Каждое устройство отличается. Таким образом, каждое изображение необходимо обрабатывать по-разному, чтобы обеспечить идеальную отзывчивость на разных устройствах. Smart Crop — это функция, которая интеллектуально просматривает содержимое изображения и автоматически фокусируется на наиболее важной части изображения для кадрирования.

Что такое Smart Crop?

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

Это можно увидеть на графике ниже, где мы запрашиваем выходное соотношение сторон 1:1 из исходного изображения с соотношением сторон 4:3 —

Теперь, поскольку кадрирование неизбежно в этих обстоятельствах, если объект изображение не в центре, тогда оно будет обрезано.

Например, если я попытаюсь изменить размер изображения ниже, чтобы получить квадратную миниатюру, стороны изображения (здания) будут обрезаны.

Исходное изображениеИзображение размером 200 x 200, здания обрезаются по бокам при обычной обрезке

Smart Crop — это способ интеллектуального определения наиболее важной части изображения и удержания ее в фокусе при обрезке изображения. Используя эту функцию, вы сможете создавать идеальные миниатюры, центрированные по теме изображения или наиболее важной функции с высокой вероятностью.

Например, для изображения выше функция Smart Crop создает следующую миниатюру:

Исходное изображение Изображение размером 200 x 200, здания сбоку находятся в фокусе благодаря интеллектуальной обрезке важные и сохранили их в финальном эскизе.

Как определить самую важную часть изображения?

Мы учитываем множество факторов при расчете наиболее важной области изображения. Наиболее очевидным из них является обнаружение лица (или нескольких лиц) на изображении. Если мы находим лицо на изображении, мы пытаемся сфокусировать обрезку на этом лице как можно ближе. Однако, если мы не можем найти лицо на изображении, мы пытаемся выполнить обнаружение признаков на изображении. Затем центр таких нелицевых элементов используется для расчета размеров обрезки исходного изображения.

Можем ли мы контролировать обрезку?

ImageKit предлагает два режима обрезки для интеллектуальной обрезки. Один из них — режим автоматической обрезки, а другой — режим обрезки лица.

В режиме автоматической обрезки мы пытаемся сохранить как можно большую часть изображения, сосредоточив внимание на самой важной части изображения. Это полезно, когда вы пытаетесь создать галерею изображений. Каждая миниатюра в этой галерее будет содержать самую важную часть изображения. Вам нужно использовать преобразование «fo-auto» для этого режима обрезки.

Исходное изображениеРежим обрезки лицаАвтоматический режим обрезки ‌‌

В режиме обрезки лица мы пытаемся извлечь самое большое лицо из изображения, а остальная часть изображения отбрасывается. Это полезно, когда вы пытаетесь создать изображения профиля из большего изображения. Вам нужно использовать преобразование «fo-face» для этого режима обрезки.

Как начать использовать Smart Crop для изображений?

Как и все другие преобразования изображений и оптимизации в ImageKit, эта функция также работает в режиме реального времени, просто добавляя параметр к URL-адресу. В этом случае нам нужно установить значение « focus » в строке преобразования на « auto » (для автоматического режима кадрирования) или « face » (для режима кадрирования лица). Это означает, что вам нужно добавить fo-auto или fo-face в строку преобразования URL-адресов эскизов.

Для работы Smart Crop необходимо указать как высоту, так и ширину выходного изображения. Если указать только высоту или ширину, ImageKit сохранит соотношение сторон без обрезки Подробнее о различных режимах фокусировки вы можете прочитать в нашей подробной документации здесь.0003

Если ваш обычный URL-адрес миниатюры

 https://ik.imagekit.io/demo/img/tr:h-200,w-200/default-image.jpg 

Чтобы включить Smart Crop с режимом автоматической обрезки, этот URL-адрес изменится на

 https://ik. imagekit.io/demo/img/tr:h-200,w-200,fo-auto/default-image.jpg 

Чтобы включить интеллектуальную обрезку с режимом обрезки лица , этот URL изменится на

 https://ik.imagekit.io/demo/img/tr:h-200,w-200,fo-face/default-image.jpg 

Примеры Smart Crop в действии ( автоматический режим)

Пример 1

Оригинальная воображаемая культура, 200x200PX ThumbnailSmart Cropped 200x200px Thumbnail

Пример 2

Оригинальный ImageNormal Crop, 200x200px Thumbnailsmart Cropped 200x200px Thumbnail

Пример 3

Orignailsmart Cropped 200x200px Thumbnail

Пример 3

Orignailsmart Cropped 200x200px Thumbnail

Пример 3

. 200x200px thumbnailSmart Cropped 200x200px thumbnail

Пример 5

Пример изображения — ObjectNormal Crop, 200x200px thumbnailSmart Cropped 200x200px thumbnail

Пример 6

Исходное изображениеОбычная обрезка, миниатюра 300x100pxSmart Cropped 300x100px миниатюра

Примеры Smart Crop в действии (режим лица)

Пример 1 200x200px thumbnailFace Crop Mode 200x200px thumbnail

Пример 3

Исходное изображениеАвторежим кадрирования, 200x200px thumbnailFace Crop Mode 200x200px thumbnail

Пример 4

Исходное изображениеAuto Crop Mode, 200x200px thumbnailFace Crop Mode 200x200px thumbnail

Лучшие приложения для этой функции

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

Могу ли я использовать функцию Smart Crop с другими преобразованиями

Конечно, можно. Вы можете комбинировать интеллектуальную обрезку с любым другим преобразованием, предлагаемым ImageKit.

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

https://ik.imagekit.io/demo/img/tr:w-200,h-200,fo -face:r-max/https://images.pexels.com/photos/874158/pexels-photo-874158.jpeg

Несмотря на то, что мы протестировали производительность и результаты для большого количества изображений, интеллектуальная обрезка может дать неточные результаты. результаты для небольшого процента изображений. Интеллектуальное кадрирование — это сложная проблема, которую нужно решить, сохраняя при этом все близко к реальному времени. Мы открыты для ваших отзывов, которые помогут нам еще больше повысить точность алгоритма кадрирования. Пожалуйста, попробуйте и поделитесь своими отзывами в комментариях ниже. Или напишите нам на [email protected].

Нравится идея? Хотите попробовать это на себе? Вы можете попробовать это бесплатно!

Advanced Smart Crop — интеллектуальное автоматическое кадрирование изображений с помощью ImageKit | Рахул Нанвани | Блог

Каждое изображение отличается. Каждое устройство отличается. Таким образом, каждое изображение необходимо обрабатывать по-разному, чтобы обеспечить идеальную отзывчивость на разных устройствах. Smart Crop — это функция, которая интеллектуально просматривает содержимое изображения и автоматически фокусируется на наиболее важной части изображения для кадрирования.

Когда мы изменяем размер изображения для разных устройств или заполнителей, а соотношение сторон запрошенного размера не совпадает с соотношением сторон исходного изображения, по бокам изображения обязательно происходит некоторая обрезка. Это когда мы не хотим сильно растягивать или искажать изображение. Это видно из рисунка ниже, где мы запрашиваем выходное соотношение сторон 1: 1 из входного изображения с соотношением сторон 4: 3 —

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

Теперь, поскольку обрезка в этих обстоятельствах неизбежна, если объект изображения не находится в центре, он будет обрезан из изображения. Например, если я попытаюсь изменить размер изображения ниже, чтобы получить квадратную миниатюру, стороны изображения (часть со зданиями) будут обрезаны.

Результаты с центральной обрезкой по умолчанию. Более важной частью изображения являются здания либо с левой, либо с правой стороны изображения, которые обрезаются с помощью обрезки по центру.

Smart Crop — это способ интеллектуального определения наиболее важной части изображения и удержания ее в фокусе при обрезке изображения. Используя эту функцию, вы сможете с высокой вероятностью создавать идеальные миниатюры, центрированные по объекту изображения или наиболее важной функции

Например, для приведенного выше изображения Smart Crop создает следующую миниатюру

Обрезка изображения с обрезкой по центру . Здания слева теперь находятся в фокусе на выходном изображении.

Как видите, функция Smart Crop в ImageKit могла разумно определить, что здания на изображении важны, и сохранить их на финальном эскизе.

Мы учитываем множество факторов при расчете наиболее важной области изображения. Наиболее очевидным является обнаружение лица (или нескольких лиц) на изображении. Если мы находим лицо на изображении, мы пытаемся сфокусировать обрезку на этом лице как можно ближе. Однако, если мы не можем найти лицо на изображении, мы пытаемся выполнить обнаружение признаков на изображении. Затем центр таких нелицевых элементов используется для расчета размеров обрезки исходного изображения.

ImageKit предлагает два режима кадрирования для интеллектуального кадрирования. Один из них — режим автоматической обрезки, а другой — режим обрезки лица.

В режиме автоматической обрезки мы пытаемся сохранить как можно большую часть изображения, сосредоточив внимание на самой важной части изображения. Это полезно, когда вы пытаетесь создать галерею изображений. Каждая миниатюра в этой галерее будет содержать самую важную часть изображения. Вам нужно использовать преобразование «fo-auto» для этого режима кадрирования.

Исходное изображение (уменьшенное) Режим кадрирования лица, при котором выделяется только лицо и создается его миниатюра. Режим автоматического кадрирования, фокусирующийся на наиболее важной части изображения. В этом случае, несмотря на то, что девушка находится в левой половине исходного изображения, с умной обрезкой мы можем создать миниатюру с девушкой в ​​центре.

В режиме обрезки лица мы пытаемся извлечь самое большое лицо из изображения, а остальная часть изображения отбрасывается. Это полезно, когда вы пытаетесь создать изображения профиля из большего изображения. Вам нужно использовать преобразование «fo-face» для этого режима обрезки.

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

Как и все другие преобразования изображений и оптимизации в ImageKit, эта функция также работает в режиме реального времени, просто добавляя параметр к URL-адресу. В этом случае нам нужно установить значение « focus » в строке трансформации на « auto » (для режима авто кадрирования) или « face » (для режима кадрирования лица). Это означает, что вам нужно добавить fo-auto или fo-face в строку преобразования ваших URL-адресов эскизов.

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

Если ваш обычный URL-адрес эскиза —

 https://ik.imagekit.io/demo/img/tr:h-200,w-200/default-image.jpg 

Чтобы включить интеллектуальное кадрирование в режиме автоматического кадрирования, этот URL-адрес изменится на

 https://ik. imagekit.io/demo/img/tr:h-200,w-200,fo-auto/default-image.jpg 

Чтобы включить интеллектуальную обрезку в режиме обрезки лица , этот URL изменится на

 https://ik.imagekit.io/demo/img/tr:h-200,w-200,fo-face/default-image.jpg 
кадрированиеУмное кадрированиеИсходное изображениеЦентральное кадрированиеУмное кадрированиеИсходное изображениеЦентральное кадрированиеУмное кадрированиеИсходное изображениеЦентральное кадрированиеУмное кадрированиеИсходное изображениеИнтеллектуальное кадрирование (автоматический режим)Умное кадрирование (режим лица)Исходное изображениеИнтеллектуальное кадрирование (автоматический режим)Умное кадрирование (режим лица)Исходное изображениеИнтеллектуальное кадрирование (автоматический режим)Умное кадрирование (режим лица)Исходное изображение ImageИнтеллектуальное кадрирование (автоматический режим)Интеллектуальное кадрирование (режим лица)

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

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

 https://ik.imagekit.io/demo/img/tr:w-200,h-200,fo-face:r-max/https://images.pexels.com/photos/874158/pexels- photo-874158.jpeg 
Интеллектуальная обрезка (режим лица) со скругленными углами

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

Что такое авто кроп в coub: Туториал по Coub API / Хабр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх