Общие сведения: Я надеюсь, что сценарий использования, который я собираюсь описать, является простым случаем проблемы оптического потока, и, поскольку у меня мало знаний по этому вопросу, я былинтересно, есть ли у кого-нибудь какие-либо предложения о том, как я могу подойти к решению моей проблемы.
Исследования, которые я уже сделал: Я начал читать Оценка оптического потока с высокой точностью на основеТеория деформирования бумаги, и я планирую просмотреть Particle Video .Я нашел реализацию оптического потока MATLAB High Accuracy Optical Flow .Тем не менее, статьи (и код), кажется, описывают концепции, которые являются очень сложными и могут потребовать много времени для меня, чтобы разобраться и понять.Я надеюсь, что решение моей проблемы может быть более простым.
Проблема: У меня есть последовательность изображений.Изображения изображают процесс разрушения материала, когда материал и фон черные, а трещины - белые.Я заинтересован в том, чтобы пересмотреть последовательность изображений в обратном порядке, пытаясь отобразить все трещины, которые образовались в процессе разрушения, на первое черное изображение.Вы можете думать о материале как о большой загадке, и я пытаюсь собрать кусочки в обратном порядке, в котором они разбились.
На каждом изображении могут быть только возникающие трещины и / или трещины, которые полностью сформировались (и таким образом создали фрагмент).В течение всего процесса разрушения некоторые фрагменты могут отделяться и разрушаться дальше.Фрагменты также могут перемещаться дальше друг от друга (небольшое изменение между последующими кадрами).
Требуемый выход: Все трещины / линии в последовательности, сопоставленные с первым изображением в последовательности.
Дополнительные примечания: Изображениядоступны в формате градаций серого (т.е. в оригинале), а также в двоичном формате, где трещины выделены белым цветом, а фон полностью черным.Ниже приведены некоторые примеры изображений.
В верхней строке показаны исходные изображенияи нижний ряд показывает двоичные изображения.Как вы можете видеть, трещина, которая идет по середине, становится все шире и шире по мере развития последовательности изображений.Таким образом, нижняя трещина движется вместе с нижним фрагментом.Обходя последовательность в обратном порядке, я надеюсь алгоритмически понять, что средняя трещина объединяется в единое целое (и правильно сопоставить ее с первым изображением), а также правильно отобразить нижнюю трещину, сохраняя ее правильное соответствие (размер и положение) снижний фрагмент.
Последовательность обычно содержит около 30 ~ 40 изображений, поэтому я только что показал начальное подмножество.Кроме того, хотя эти изображения не показывают его, возможно, что конкретное изображение содержит только начало трещины (то есть его первоначальный вид), а на последующих изображениях оно становится все длиннее и длиннее и может соединяться с другими трещинами.
Язык: Хотя это и не обязательно, я хотел бы реализовать решение с использованием MATLAB (просто потому, что большая часть другого кода, относящегося к проекту, была сделана в MATLAB).Однако, если OpenCV может быть проще, я гибко использую свой язык / библиотеку.
Любые идеи очень ценятся.