У меня есть два изображения тот же размер. Что лучший способ состоит в том, чтобы найти прямоугольником, по которому они отличаются. Очевидно, я мог пройти изображение 4 раза в различных направлениях, но я задаюсь вопросом, существует ли более легкий путь.
Пример:
Я не думаю, что есть более простой способ.
На самом деле для этого нужно всего лишь (очень) несколько строк кода, так что если вы не найдете библиотеку, которая сделает это за вас напрямую, вы не найдете более короткого способа.
Наивный подход заключался бы в том, чтобы начать с начала координат и работать построчно, столбец за столбцом. Сравните каждый пиксель, отмечая крайний верхний, крайний левый, крайний правый и крайний нижний, по которым вы можете вычислить свой прямоугольник. Будут случаи, когда этот однопроходный подход будет быстрее (то есть там, где есть очень небольшая различающаяся область)
Подобная обработка изображений стоит дорого, есть на что посмотреть. В реальных приложениях вам почти всегда нужно фильтровать изображение, чтобы избавиться от артефактов, вызванных несовершенным захватом изображения.
Распространенной библиотекой, используемой для такого рода перебора битов, является OpenCV, в ней используются специальные инструкции ЦП, позволяющие сделать это быстро. Для него доступно несколько .NET-оболочек, Emgu - одна из них .
Я не думаю, что может быть что-нибудь лучше, чем исчерпывающий поиск с каждой стороны по очереди первую точку различия в этом направлении. Если, конечно, вы не знаете факт, который каким-то образом ограничивает набор точек различия.