Сделать изображение из изображения плитки - PullRequest
0 голосов
/ 16 февраля 2009

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

Например, скажем, они размещают 100 изображений в сетке 10х10, и каким-то образом они меняют оттенок / сат / кол меньших изображений, так что когда вы видите Большое изображение , вы видите другое изображение. *

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

1 Ответ

3 голосов
/ 16 февраля 2009
  1. Рассчитайте оттенок / насыщенность / значение для каждой плитки (используйте HSV, потому что меньшие различия здесь кажутся человеческому глазу более "естественными", чем в пространстве RGB)
  2. Теперь вычислите одинаковые значения для каждой n * n плитки вашей большой картинки
  3. Найдите плитки с ближайшими значениями ВПГ (минимум sqrt((h1-h2)^2 - (s1-s2)^2 - (v1-v2)^)) и отметьте, что плитка уменьшена до n * n в результате.

Чтобы найти HSV для плитки, должно быть достаточно сложить все значения RGB, а затем разделить их на количество пикселей и преобразовать эту последнюю тройку RGB в HSV. Но для экономии предлагаю попробовать обе версии.

См. , какую статью в Википедии о преобразованиях RGB <-> HSV.

Чтобы усовершенствовать алгоритм, вы можете разбить каждый фрагмент на m m и рассчитать среднее значение HSV для каждого элемента сетки. Затем, когда вы ищете совпадение, разделите большое изображение на обычное, но также рассчитайте значения m m HSV. Выберите, какой тайл соответствует большинству этих m * m лучше всего. Это позволяет алгоритму выбирать плитки, которые имеют ту же структуру, что и большая картинка.

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

...