У меня нет ничего полезного, чтобы сделать, и играл с мозаикой как это:
сопроводительный текст http://manual.gimp.org/nl/images/filters/examples/render-taj-jigsaw.jpg
и я задавался вопросом, будет ли возможно сделать программу, которая помогает мне в соединении его.
Предположите, что у меня есть маленькая загадка, как 4x3 части, но небольшие вкладки и пробелы неоднородны - различные части имеют эти вкладки в другой высоте, другой формы, другого размера. То, что я сделал бы, должно снять все эти части, позволить программе проанализировать их и сохранить их атрибуты где-нибудь. Затем когда я беру часть, я мог попросить, чтобы программа сказала мне, какие части должны быть ее 'соседями' - или если бы я должен заполнить пробел, она сказала бы мне, как требуемый озадачивает вид части (частей).
К сожалению, я, никогда не имею ничего не делал с обработкой изображений и распознаванием образов, таким образом, я хотел бы попросить у Вас некоторых указателей - как я распознаю часть мозаики (в основном квадрат с вкладками и дыры) в изображении?
Затем я должен был бы, вероятно, повернуть его так, это находится в правильном положении, масштабе к некоторой пропорции, и затем измерьте вкладку/пробел на каждой стороне и также наклоне каждой стороны, если существующий.
Я знаю, что это было бы слишком трудоемким, чтобы сканировать/фотографировать 1 000 частей загадки и использовать его, это будет просто любимым проектом, где я изучил бы что-то новое.
Сбор данных
(Это известно как метод Chroma Key, Blue Screen или Background Color)
Обработка данных съемки
Шаг назад к самой проблеме. Задача построения головоломки может быть простой (P) или сложной (NP), в зависимости от того, подходят ли части только одному соседу или многим. Если для каждого края есть только одна подходящая кромка, тогда вы просто находите для каждой части / стороны своего соседа, и все готово (O (# штук * # сторон)). Если некоторые части допускают многократное попадание в разных соседей, то для завершения всей головоломки вам может потребоваться возврат (потому что вы сделали неправильный выбор и застряли).
Однако первая проблема, которую необходимо решить, - это как изображать части. Если вы хотите изобразить произвольные формы, вы, вероятно, можете использовать прозрачность или маски, чтобы показать, какие области плитки на самом деле являются частью куска. Если вы используете квадратные формы, проблема может быть проще. В последнем случае вы можете рассмотреть последнюю строку пикселей на каждой стороне квадрата и сопоставить ее с наиболее похожей строкой пикселей, которую вы найдете во всех других частях.
Вы можете использовать второй подход, чтобы помочь вам решить настоящую головоломку, несмотря на то, что вы используете квадратные плитки. Настоящие головоломки обычно строятся на сетке элементов NxM. При сканировании изображения из коробки вы разбиваете его на ту же сетку квадратных плиток NxM и заставляете систему решать эту проблему. Тогда проблема состоит в том, чтобы визуально сопоставить фактический волнистый кусок, который вы держите в руке, с плиткой внутри системы (когда они маленькие и однородно окрашенные). Но вы получите ту же проблему, если внутренне представляете произвольные формы.