Для заказчика из США мы разработали скрипт, который собирает единое изображение микроскопического образца из видеопотока.
Система:
- определяет положение кадров,
- отслеживает траекторию движения,
- уменьшает видимость швов,
- выравнивает цвет
- и сохраняет результат в форматах GeoTIFF и DICOM.
Проект показывает типичную для прикладного компьютерного зрения ситуацию: входные данные неидеальны, движение камеры нестабильно, изображение большое и результат должен быть пригоден для дальнейшей работы, а не только для демонстрации.
Задача
Заказчику нужно было восстановить функциональность приложения, которое раньше позволяло сканировать микроскопический слайд и получать изображение всей исследуемой области. Приложение было удалено из App Store, поэтому заказчик решил реализовать похожий алгоритм заново.
Целевой сценарий выглядел так:
- пользователь подключает камеру микроскопа или использует мобильное устройство,
- перемещает образец под камерой, видит, какие участки уже отсканированы,
- а после завершения сохраняет изображение всего слайда в нужном формате.
Почему это было не похоже на обычную склейку изображений
На первый взгляд задача напоминает сборку панорамы: есть несколько кадров, нужно найти общие области и склеить их в одно изображение. Но в микроскопии условия заметно сложнее.
Камера видит только небольшой участок образца. Во время движения кадры могут смазываться, освещение меняется, фрагменты изображения похожи друг на друга, а отдельные области почти не содержат выраженных деталей. Кроме того, итоговое изображение получается очень большим, поэтому важно учитывать память, формат хранения и стабильность обработки.
В этом проекте нужно было работать не с идеальными фотографиями, а с реальным видеопотоком, где качество кадров, скорость движения и освещение могут меняться прямо во время съёмки.
Что мы сделали
Мы разработали пайплайн, который превращает поток кадров с микроскопа в единую карту просканированной области.
Система:
- анализирует кадры из видеопотока;
- оценивает смещение между ними;
- строит траекторию движения камеры относительно образца;
- размещает кадры на общей плоскости;
- уменьшает видимость швов между фрагментами;
- корректирует различия в яркости и цветопередаче;
- сохраняет результат в GeoTIFF и DICOM.
Такой подход позволяет не просто склеить несколько изображений, а восстановить общую структуру просканированной области даже при неравномерном движении камеры.
Почему стандартный подход не подошёл
Во многих задачах компьютерного зрения изображения совмещают через ключевые точки. Алгоритм ищет характерные детали на соседних кадрах, сопоставляет их и вычисляет смещение.
Для микроскопических изображений этот подход оказался недостаточно надёжным. В кадре может быть мало устойчивых ориентиров, а разные участки образца могут выглядеть слишком похожими. Если алгоритм ошибается в сопоставлении, кадры начинают смещаться неправильно, а итоговое изображение собирается с искажениями.
Поэтому мы не стали ограничиваться стандартным сопоставлением ключевых точек и проверили альтернативные подходы к оценке движения между соседними кадрами. Мы сравнили несколько подходов к оценке движения.
- Оптический поток лучше подходит для более сложного движения, но на наших данных был чувствителен к размытию. Позволял работать примерно на 40 FPS и потенциально учитывать более сложное движение, включая вращение образца.
- Фазовая корреляция быстрее оценивала сдвиг кадра, позволяла дополнительно отфильтровывать сильно размытые фрагменты по силе корреляционного отклика, могла работать до 200 FPS, но была применима только для поступательных перемещений кадра. Для выбранного сценария это оказалось более практичным решением.
На данном этапе это ограничение было приемлемым, потому что приоритетом была быстрая и устойчивая оценка смещения. Дополнительно величина корреляционного отклика помогала выявлять сильно размытые кадры и не использовать их для построения траектории.
Как решали проблему швов
После размещения кадров на общей плоскости появляется следующая проблема: соседние фрагменты должны выглядеть как единое изображение. Если просто наложить их друг на друга, будут заметны границы, перепады яркости и участки с разной резкостью.
Стандартное смешивание изображений сглаживало границы, но в этом проекте давал нежелательный эффект: изображение становилось более смазанным. Для микроскопии это критично, потому что вместе со швами можно потерять полезные детали.
Мы выбрали другой подход: брать пиксели преимущественно из центральных областей кадров. Центральная часть кадра обычно меньше страдает от оптических искажений, потемнения по краям и падения резкости. Это помогло уменьшить видимость швов без лишнего размытия итогового изображения.
В проекте также учитывались накопление ошибок и согласование положения кадров. Если каждый следующий кадр размещать только относительно предыдущего, небольшие ошибки постепенно накапливаются и становятся заметны на большой карте. Поэтому в пайплайне использовалась глобальная оптимизация положения кадров. Отдельно экспериментировали с дефокусом и деблюром, но эти решения не вошли в финальный релиз.
Как выравнивали цвет
Во время съёмки яркость и цветопередача могли меняться. Из-за этого соседние участки итогового изображения выглядели неодинаково: где-то область светлее, где-то темнее, где-то меняется оттенок. Мы добавили цветокоррекцию, чтобы сделать итоговую карту визуально более ровной. Алгоритм анализировал различия между соседними областями и корректировал цветовые сдвиги. Это помогало уменьшить перепады на границах и получить более цельное изображение. Для исследовательского сценария это важно: итоговый файл должен быть удобен не только для хранения, но и для дальнейшего просмотра и анализа.
Результат
В результате заказчик получил скрипт для сборки цельного изображения микроскопического образца из видеопотока. Решение позволяет:
- работать с кадрами с камеры микроскопа;
- отслеживать движение и прерывания;
- локализовать кадры на общей плоскости;
- сохранять траекторию движения;
- собирать большое изображение из отдельных фрагментов;
- снижать видимость швов;
- выравнивать цвет между участками;
- сохранять результат в GeoTIFF и DICOM. Для заказчика это стало инструментом, который помогает получать изображения образцов и использовать их в дальнейшей исследовательской работе.
Выводы?
Этот кейс хорошо показывает, как устроена прикладная разработка в компьютерном зрении
В реальной задаче недостаточно взять готовый алгоритм и применить его к данным. Нужно учитывать качество входного видеопотока, особенности движения камеры, похожесть фрагментов, слабую контрастность, оптические искажения, ограничения по памяти и требования к формату результата.
Для нас это был проект на стыке компьютерного зрения, обработки изображений и исследовательского инструментария.
Главная ценность проекта — не в одном конкретном алгоритме, а в устойчивом пайплайне, который адаптирован под реальные данные и рабочий процесс заказчика.



