Fyi:
С пятой минуты
Mikle
> Как ты 3D цветовое пространство переведёшь в 1D? Точнее, как восстановишь
> потом?
Сделать изображение черно-белым - не проблема.
Если изображение примерно одного оттенка с небольшим разбросом, то есть алгоритм, основанный на достаточном тупом отображении, правила которого можно усложнять. Сейчас описывать не буду, ибо достаточно муторно. Могу написать dll и если будет GUI-приложение, то можно будет проверить так:
цветное_исходник -> черно-белое -> цветное_результат
и сравнить.
Сложнее с Фурье. Я занимался раньше аппроксимацией, но то было несколько лет назад и там проблема - решить систему линейных уравнений, что обычно требует SVD-разложения матриц, а вот с его пониманием у меня туго. Я работал с готовой библиотекой и даже сам писал, но я до конца не понимал суть.
0xBADCODE
> Если изображение примерно одного оттенка с небольшим разбросом
Это очень сильное допущение, далёкое от практики. Да и разброс, хоть и небольшой, будет всё равно 3D.
То есть да, для чистой штукатурки или асфальта это сработает, но это моя программа и сейчас затайлит практически идеально. Имеет смысл рассматривать те случаи, в которых можно получить улучшение результата.
0xBADCODE
> там проблема - решить систему линейных уравнений
Только посчитать свертки
FFT очень простое
Aslan
> Только посчитать свертки
> FFT очень простое
Ссылки есть на теорию и библиотеки?
0xBADCODE
> и библиотеки?
https://sourceforge.net/p/kissfft/code/ci/default/tree/
Mikle
> но это моя программа и сейчас затайлит практически идеально
Если размер исходника-паттерна не меньше 320, ...
я ни в коей мере не умаляю ценность твоей программы.
Мне просто интересно было бы взять кусок в 64 х 64 и сгенерировать то, чего еще не было, потому что однородных участков такого малого размера на фотографиях встречается на несколько порядков больше.
Вот, например, если нужна базовая текстура желтой краски трактора, то на следующей фотографии невозможно найти участок в 320 х 320 (да и 64 х 64) с равномерной однородной тонировкой:
А хотелось бы из куска 32 х 32 получить кусок в 1024 х 1024, причем один от кабины, другой от бока моторного отсека. И на них уже наносить нагар, грязь, потертости.
Есть мысля как вообще без FFT обойтись. Будет время, реализую.
0xBADCODE
См численные методы
0xBADCODE
> А хотелось бы из куска 32 х 32 получить кусок в 1024 х 1024, причем один от
> кабины, другой от бока моторного отсека. И на них уже наносить нагар, грязь,
> потертости.
Но ведь сдесь можно считерить. Один UV, размеры текстур разные. Учитывая кучу линейных элементов- где-то растянуть до безобразия по одной оси (карту нормалей), использовать вообще 1х1 пиксель дифузную текстуру, а вот декали использовать по полному разрешению. (ну, это если прям какие-то сотонинские пожелания к экономии текстурной памяти). Где-то тройная экономия получится, типтого.
Тема в архиве.