Однако это явный false alarm, а для статического анализатора нет ничего хуже ложных срабатываний — если его не отключат после первого крика «волки», то после десятого точно.
Порой это лучше, чем ничего, особенно если есть возможность поставить исключения после первого просмотра.
При этом на других языках можно хотя бы юнит-тесты писать, а тут — никак.
В своём небольшом проекте мы директивой #include включали код шейдеров в код на c++, и с помощью нескольких дефайнов и обёрток превращали шейдеры в обычные функции, которые возможно вызвать.
Если пользователям интерфейса пришлось узнавать о реализации, то что-то пошло не так…
А константность, на мой взгляд, нужна для облегчения использования интерфейса, а не наоборот. Она только подчёркивает свойства метода, позволяет избежать ошибок ещё во время компиляции.
Злоупотреблять, расставляя const где попало, конечно не стоит.
Делаем небольшой шаг в направлении сосуда и попадаем в новый воксель
Если пользователь отмечает две точки сосуда, то вы можете методом поиска кратчайшего пути найти весь сосуд между ними. Это ещё решит проблему с "разрывами" сосудов. Мы подобное делали на сходных объёмах данных, правда в 2D изображениях.
Может быть будет возможно отказаться от сглаживания гауссианами, я так понимаю, что сосудистость резко возрастает к центру, а алгоритму поиска пути только и нужно, чтобы сосуд резко выделялся на фоне. Тогда линия пойдёт ровно по центру.
На эту тему есть отличный рассказ А.Азимова "Все грехи мира". И про доступ к информации о человеке и про предсказание преступлений, и про то, чем это может обернуться.
Здесь источником информации является обучающая выборка. Для улучшения фильмов этого вполне достаточно. А для «уникальных» данных сеть додумает «как в кино». Для некоторых областей результат будет неприменим.
В коде ничего необычного нет. Он не сильно отличается от того, что содержится в примерах по OpenCV. Непосредственно по вычитанию фона можно посмотреть здесь, а по фильтрации здесь и здесь.
Ярко, потому что съёмка проведена камерой с очень высокой чувствительностью. Авторы статьи про Персеиды немного рассказывали про неё habr.com/post/374163.
Совпадение треков метеоров по длине скорее обусловлено длиной выдержки при съёмке. Ещё нужно учитывать, что съёмка произведена с объективом «рыбий глаз», и треки метеоров идут к своему центру вдоль некоторых кривых, особенно на краях изображения. Также мной выбран самый тривиальный алгоритм выделения треков, и он выделил ложный объекты. Особенно в правом верхнем и нижнем углах. Там, судя по видео, линия горизонта.
Метеоры пролетают на видео очень быстро. След в виде черты остаётся буквально на двух-трёх кадрах. Видеопоток пришлось ужать в два раза для борьбы с артефактами сжатия исходных файлов (самый простой способ, который пришёл в голову). Интересно попробовать обработать неускоренный и несжатый видеопоток.
Я смотрел видео после вычитания фона. Движущиеся объекты видны намного лучше. Видны даже метеоры, скорость которых намного выше. Просто они очень быстро мелькают т.к. видео ускоренно. И без вычитания фона глаз за них не цепляется.
Очень интересная подборка данных.
Удивило, что в ведущих IT компаниях такая низкая продолжительность работы сотрудников.
Уходят по завершению проекта, не справляются или не приживаются?
То, что разреженные матрицы не очень хорошо ложатся на современные архитектуры, никоим образом не умаляет их достоинств. Некоторые задачи и вовсе нельзя решить за разумное время, используя плотные матрицы, и задачи, аналогичные вашей, хорошее этому подтверждение.
Для ленточных матриц, безусловно доступ к памяти более оптимален, чем для разреженных матриц в более общих форматах CSR и COO.
Ленточные матрицы для себя я всегда выделял в некий отдельный класс в силу высокой плотности хранения.
Порой это лучше, чем ничего, особенно если есть возможность поставить исключения после первого просмотра.
В своём небольшом проекте мы директивой #include включали код шейдеров в код на c++, и с помощью нескольких дефайнов и обёрток превращали шейдеры в обычные функции, которые возможно вызвать.
А константность, на мой взгляд, нужна для облегчения использования интерфейса, а не наоборот. Она только подчёркивает свойства метода, позволяет избежать ошибок ещё во время компиляции.
Злоупотреблять, расставляя const где попало, конечно не стоит.
Отличная подборка материала про интерфейсы, и подводные камни в реализации и использовании.
Вы могли бы раскрыть здесь подробнее, какие сложности нас могут ожидать на этом пути.
Мы по изображению считали индекс похожести на дорогу, а затем искали путь минимальной стоимости между двумя точками.
Если пользователь отмечает две точки сосуда, то вы можете методом поиска кратчайшего пути найти весь сосуд между ними. Это ещё решит проблему с "разрывами" сосудов. Мы подобное делали на сходных объёмах данных, правда в 2D изображениях.
Может быть будет возможно отказаться от сглаживания гауссианами, я так понимаю, что сосудистость резко возрастает к центру, а алгоритму поиска пути только и нужно, чтобы сосуд резко выделялся на фоне. Тогда линия пойдёт ровно по центру.
На эту тему есть отличный рассказ А.Азимова "Все грехи мира". И про доступ к информации о человеке и про предсказание преступлений, и про то, чем это может обернуться.
В OpenCV есть реализация: https://docs.opencv.org/3.4/d7/d0a/group__superres.html
Дело скорее в отсутствии качественного исходника.
Очень похоже, что летят из правой нижней четверти кадра.
Привязал ваши кадры по звездам к «опорному небу», шарпиками помечены опорные звёзды.
Удивило, что в ведущих IT компаниях такая низкая продолжительность работы сотрудников.
Уходят по завершению проекта, не справляются или не приживаются?
Для ленточных матриц, безусловно доступ к памяти более оптимален, чем для разреженных матриц в более общих форматах CSR и COO.
Ленточные матрицы для себя я всегда выделял в некий отдельный класс в силу высокой плотности хранения.