Создание изображения из фрагментов изображений

StackOverflow https://stackoverflow.com/questions/553118

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Видеть какая статья в Википедии для преобразований RGB <-> HSV.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top