2009-08-28 2 views
3

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

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

Благодаря

+2

ли «картина нагромождение» такой же, как головоломки? – user49117

+1

головоломки или скользящей плитки головоломки? –

+0

это одна головоломка – Lazer

ответ

6

Что вам нужно сделать, так это определить индексный словарный запас для каждой грани головоломки, чтобы индекс правого края мог рассказать вам, что индекс соответствующего левого края (например, , простой словарный запас: «выпуклый» и «вогнутый», «выпуклый» на лице, подразумевающий «вогнутый» на соответствующей противоположной грани), а затем классифицировать каждую фигуру в соответствии с индексирующим лексиконом. Чем точнее словарный запас, тем более дискриминационным будет сопоставление лиц и тем быстрее ваш альгонтм пойдет, но вы его реализуете. (Например, у вас может быть «плоский край, прямолинейный-левый-левый, прямой-левый-правый, вогнутый, выпуклый, ручка, ручка, ...). Мы предполагаем, что схема индексирования фактическая форма края и что существует предикат «точно соответствует (кусок1, край 1, кусок2, край 2)», что верно, только если ребра точно совпадают. Мы также предполагаем, что существует не более одного точного совпадения куска с конкретным краем.

Целью является создание набора областей, например набора связных элементов, до тех пор, пока уже невозможно будет вырастить области. Сначала отметим все части уникальными именами областей, 1 за штуку , и все ребра не имеют себе равных. Затем мы перечисляем кусочки в любом порядке. Для каждой перечислимой части P с краем E используйте схему индексирования для выбора потенциально подходящих пар пар/ребер. Проверьте точно подходящий предикат: не более одной части Q, с ребром F, точно совпадает. Co mbine области для P и Q вместе, чтобы сделать большую область. Повторение. Я думаю, что это решает загадку.

+0

эта хороший начало. благодаря! – Lazer

0

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

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

0

Чтобы подробнее рассказать об ответе Иры Бакстер, другой способ концептуализации проблемы состоит в том, чтобы подумать о головоломке как графике, где каждая часть является узлом, а каждая итерация - другой.

Например, если вы разрабатывали игру-головоломку, сохранение «ответа» таким образом сделало бы «проверять, подходит ли этот код» намного быстрее, так как это может быть сведено к какому-либо хеш-поиску.

0

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

 
    P1 <--> P2 
^ ^
    |  | 
    v  v 
    P3 <--> P4 

.2 Tag ориентация (вручную или эвристический), но только использовать их в качестве эвристики оценки (ранжировании), а не в качестве критериев окончательного поиска.

0,3 Форма Контекст

Смежные вопросы