Компоновка изображений из двух изображений - PullRequest
0 голосов
/ 11 декабря 2011

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


Мои задачи:

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

ПРИМЕЧАНИЕ: Возвращенное изображение не должно быть соединенным изображением, а даетчасти двух изображений были использованы.

Пиксели линии границы могут быть отмечены константой (SEAM).Пиксели первого изображения могут быть помечены целым числом 0, пиксели второго изображения - целым числом 1. После выбора линии границы алгоритм floodfill может использоваться для заполнения дополнительных пикселей 0 или 1.

ПРИМЕЧАНИЕ: Изображение может быть представлено в виде графика, в котором каждый пиксель связан со своим левым, правым, верхним и нижним соседом.Таким образом, использование заливки будет похоже на поиск в глубину.

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

ПРИМЕЧАНИЕ: Я не могу использовать любую структуру данных Java, кроме массивов (недаже ArrayList)


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

1 Ответ

0 голосов
/ 08 февраля 2012

Я бы сделал это так:

Выберите ширину отмеченной границы.По вашему желанию1. найти максимально возможный сдвиг в пикселях.Это D. 2. Для всех возможных сдвигов в квадрате (+ -D, + - D) найдите k (коэффициент корреляции) для границы.Граница берется в середине смены.3. Сдвиг, который имеет наибольшее k, является лучшим.Пусть это будет само собой разумеющимся.4. Теперь начните перемещать границу, проверяя ее так же, как «k».Найдите место этого.Готово.

Если D большое, а процесс длинный, сделайте это в 2 (или более) этапа.На первых этапах шаг подсчета k велик, на последнем этапе - шаг 1. Вы также можете использовать предыдущую фильтрацию.

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

...