соответствие частям мозаики

У меня нет ничего полезного, чтобы сделать, и играл с мозаикой как это:

сопроводительный текст http://manual.gimp.org/nl/images/filters/examples/render-taj-jigsaw.jpg

и я задавался вопросом, будет ли возможно сделать программу, которая помогает мне в соединении его.

Предположите, что у меня есть маленькая загадка, как 4x3 части, но небольшие вкладки и пробелы неоднородны - различные части имеют эти вкладки в другой высоте, другой формы, другого размера. То, что я сделал бы, должно снять все эти части, позволить программе проанализировать их и сохранить их атрибуты где-нибудь. Затем когда я беру часть, я мог попросить, чтобы программа сказала мне, какие части должны быть ее 'соседями' - или если бы я должен заполнить пробел, она сказала бы мне, как требуемый озадачивает вид части (частей).

К сожалению, я, никогда не имею ничего не делал с обработкой изображений и распознаванием образов, таким образом, я хотел бы попросить у Вас некоторых указателей - как я распознаю часть мозаики (в основном квадрат с вкладками и дыры) в изображении?

Затем я должен был бы, вероятно, повернуть его так, это находится в правильном положении, масштабе к некоторой пропорции, и затем измерьте вкладку/пробел на каждой стороне и также наклоне каждой стороны, если существующий.

Я знаю, что это было бы слишком трудоемким, чтобы сканировать/фотографировать 1 000 частей загадки и использовать его, это будет просто любимым проектом, где я изучил бы что-то новое.

7
задан mkobit 28 January 2015 в 20:10
поделиться

2 ответа

Сбор данных

(Это известно как метод Chroma Key, Blue Screen или Background Color)

  1. Найдите хорошо освещенную комнату, с наименьшим изменением освещения по всей комнате.
  2. Найдите цвет (оттенок), который редко используется во всей головоломке/картине.
  3. Возьмите цветную бумагу, которая имеет точно такой же цвет.
  4. Поместите на цветную бумагу столько кусочков пазла, сколько поместится.
    • Вы можете разделить пазлы на партии и использовать это в качестве компьютерной подсказки позже.
    • Следите за тем, чтобы кусочки не перекрывали друг друга и не касались друг друга.
    • Пока не беспокойтесь об ориентации.
  5. Сделайте снимок и загрузите его на компьютер.
    • Может потребоваться калибровка цвета, так как фон Chroma Key мог нарушить встроенный цветовой баланс цифровой камеры.

Обработка данных съемки

  1. Приобретите программное обеспечение для компьютерного зрения.
    • OpenCV, MATLAB, C++, Java, Python Imaging Library и т.д.
  2. Выполните связную компоненту на цвете хрома-ключа на изображении.
    • Найдите контуры отверстий связанной компоненты, которые являются кусочками головоломки.
  3. Исправьте ошибки в обнаруженном списке.
  4. Выберите индексирующий словарь (см. пост Айры Бакстера) и измерьте кусочки.
    • Если фигуры прямоугольные, сначала найдите углы.
    • Если фигуры имеют форму четырехугольника, длина стороны (измеренная от угла до угла) также является ценным признаком.
    • Найдите "Shape Context" на SO или Google или здесь.
    • Наконец, получите цветовую гистограмму фрагмента, чтобы впоследствии можно было запрашивать фрагменты по цвету.
  5. Чтобы сделать их доступными для поиска, поместите их в базу данных, чтобы вы могли запрашивать фрагменты с помощью любых комбинаций индексирующей лексики.
4
ответ дан 7 December 2019 в 09:56
поделиться

Шаг назад к самой проблеме. Задача построения головоломки может быть простой (P) или сложной (NP), в зависимости от того, подходят ли части только одному соседу или многим. Если для каждого края есть только одна подходящая кромка, тогда вы просто находите для каждой части / стороны своего соседа, и все готово (O (# штук * # сторон)). Если некоторые части допускают многократное попадание в разных соседей, то для завершения всей головоломки вам может потребоваться возврат (потому что вы сделали неправильный выбор и застряли).

Однако первая проблема, которую необходимо решить, - это как изображать части. Если вы хотите изобразить произвольные формы, вы, вероятно, можете использовать прозрачность или маски, чтобы показать, какие области плитки на самом деле являются частью куска. Если вы используете квадратные формы, проблема может быть проще. В последнем случае вы можете рассмотреть последнюю строку пикселей на каждой стороне квадрата и сопоставить ее с наиболее похожей строкой пикселей, которую вы найдете во всех других частях.

Вы можете использовать второй подход, чтобы помочь вам решить настоящую головоломку, несмотря на то, что вы используете квадратные плитки. Настоящие головоломки обычно строятся на сетке элементов NxM. При сканировании изображения из коробки вы разбиваете его на ту же сетку квадратных плиток NxM и заставляете систему решать эту проблему. Тогда проблема состоит в том, чтобы визуально сопоставить фактический волнистый кусок, который вы держите в руке, с плиткой внутри системы (когда они маленькие и однородно окрашенные). Но вы получите ту же проблему, если внутренне представляете произвольные формы.

2
ответ дан 7 December 2019 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: