|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Про SVG я сразу поверил. Только не могу понять, как это связано с Ф. Или речь идёт о восстановлении средствами обработчика изображений? Тогда ой! Ну хорошо, пятна-кластеры,полученныеобратным Ф, заменить эллипсами. Мелкие почикать. Эллипсы -->SVG. Ф - обратимое преобразование. При любых искажениях в спектре обратное Ф всегда что-то да выдаст. Если мало исказить, то и результат мало исказится. Мало по амплитуде, но конечно может по всему пространству рябь пойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 15:15 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Смотри. 1) Дана двумерная картинка. 2) Фильтруем ФНЧ по горизонтали с нулевой частотой. Получаем рябь в виде коротких градиентов или полосок как в ссылочном топике. 3) Далее - оптимизируем по размеру (нам ведь не нужно каждый пиксел делать градиентом). Из 200 градиентов делаем 10 (ну в комбинации 3х каналов можем получить 30 штук). 4) Отрисовываем с помощью SVG или javaScrip/Canvas. 5) Получаем визуальный объект который достоверно отражает эту смазанную картинку вектором. А где здесь мне полезно Фурье? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 15:50 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Вот еще интересный кейс. Здесь горизонт не завален. Но есть ярко выраженный наклон низких частот на фоне. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 16:39 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton А где здесь мне полезно Фурье? И всё равно, фильтрация через Ф. гораздо гибче. А с сохранением градиентов ещё прощебез "регрессий". Наложить 2Д-сетку и для каждой клетки подсчитать разницу суммы или среднего с 8-ю соседками. Дублирование встречным направлением исключить. И сетку можно ИТшную: 8х8 16х16 ... Для просто узнаваемости даже достаточно из соседок выбрать максимальную. Цвета не сохранятся, но перпады контрастов отрисуют узнаваемый образ. Правда, я думаю, на тех снимках, где есть полутени от освещения, с мультиками может не прокатить. Да у меня и узнаваемый пример есть для 8х8. Если мня не погонят с форума, могу приложить, я заранее все персональные данные на рисунке отсёк. Ну что? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 17:19 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Наверное твой сеточный метод - это моя "мутация" в ГА ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 18:13 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Он не мой, он очевидный из простых. Вот сделал для снежного бугра, что был выше. 8х8, для монохрома. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2021, 18:23 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Значит так. Где я застрял. Есть 2 библиотеки. Jenetic и JGAP. Они - в состоянии решить мою задачу. Проблема - как всегда в мелочах. А именно в следующем. 1) Мой искомый график == полилиния. С координатами вида (x1,y1),....(xn,yn). 2) Полилиния == Хромосома в терминилогии ГА. Ген - координата или цвет. 3) Фитнесс - функция == близость полилинии к исходному графику. А именно standard deviation. 4) Мутация. Здесь я завис. Мутацией может быть случайное смещение любой из координат в любую сторону. А также случайное изменение цвета (яркость-насыщщеность-тон) в цветовой модели YUV. Почему YUV лучше чем RGB в данной задаче - он лучше поддается человеческому визуальному восприятию изменений. И я могу задать скажем мутацию в цветовом тоне в 10% а в яркости в 5%. За 1 шаг. В модели RGB это было-бы невозможно. Этим тоже можно воспользоватся в мутациях чтобы не было мертвых зон или таких областей в измерениях где есть искажение распределения. 5) Крооссовером - или смешиванием хромосом-полилиний может быть просто заимстввание координат (или цветов). Что именно или как - обобщенные библиотеки на которые я ссылаюсь просто умалчивают. В их учебных tutorials они оперируют либо списком double / int / boolean а мне нужно более сложные и более комплексные типы. Это самый сложный пункт по которому я ищу совета. 6) Поврежденные или запрещенные комбинации - это например когда x(n) > x(n + 1). На графике это перекрученные 2 точки. Такого не бывает и я пока не знаю что с тамими делать? Делать их фитнесс равным нулю ? Может быть. Подтвердите кто знает ГА. 7) Прочие вопросы. Как быстро сходится? Сколько ждать эпох? Итераций? Какой размер популяции? Где можно срезать поворот? Подкинуть хромосому близкую к изначальному графику? Как близко? 8) Технические вопросы. Jenetic - полее новый и более продвинутый. Набит генериками. Но не прост в осознании. JGAP - более старый. Но я пока не осилил реализовать мою полилинию ни там не там. Линки на ресурсы: Jenetic - https://jenetics.io/manual/manual-6.2.0.pdf JGAP - https://sourceforge.net/projects/jgap/ Не будучи специалистом в ГА я просто надеюсь что эти библиотеки помогут решить задачу элегантно. С "налёта и с нахрапа" не получилось. Буду рад вашим советам. Линки на документы я чуть позже приаттачу если интересно. Хотя докумнетация по Jenetic достаточно хороша и как теория. 2 Модераторы - прошу всё таки перенести этот топик в Java, поскольку я буду ссылаться на Java-specific библиотечки. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 22:35 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton Форк от другого топика Определить основной цвет фона. Даны 3 серии чисел. По сути это цвета (RGB) одномерной картинки. Необходимо найти точки кусочно-линейной интерполяции при условии что самих точек будет не много. Например не более 10 штук. Критерий - ... ну минимизация среднего кв. отклонения. Для сегментации обычно другие алгоритмы используются - кластеризация, анализ гистограмм... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 22:56 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
То всё - узкие задачи. Не особо интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 23:03 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton .... Критерий - ... ну минимизация среднего кв. отклонения.... Ну так и берем метод наименьших квадратов =) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 23:11 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Он не описывает получение поли-линии. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 23:18 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton Он не описывает получение поли-линии. Может в вики это размыто написано ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 23:27 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton Необходимо найти точки кусочно-линейной интерполяции при условии что самих точек будет не много. Например не более 10 штук. -- количество этих "точек перелома" -- это внешний параметр, или его тоже нужно найти? Полюбасу нужно явно выписать вид целевой (минимизируемой) функции через значения этих точек. И реализовать -- в смысле довести до конца -- на нем МНК. И будет вам щастье. Модератор: Тема перенесена из форума "Программирование". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 08:23 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Это внешний параметр (N). Я его задаю. Если задам 2 точки - будет регрессия всей функции как предложил один господин выше. Если точек больше - то алгоритм поиска приближения становится неоднозначным. Будет много способов как расставить промежуточные точки. Линейная регрессия-же однозначна. Я допускаю что мой метод не имеет единого решения. Решений может быть бесконечное множество. Или решений не будет, если допуск отклонения слишком мал и 10 точек недостаточно. Итого. Input: Код: java 1. 2. 3.
Output: Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 11:13 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
mayton, мне кажется я уже писал об этом, но повторюсь - по-моему это неправильно называть интерполяцией. В моем понимании интерполяция находит точки между двумя известными точками. А ты же хочешь и известные точки заменить на что-то другое. В моем словаре это называется сглаживанием. Возможно если погуглить это как сглаживание, то и вариантов больше найдется. И судя по твоем рисунку задача сводится к нахождению пиков: 1. Рисуем отрезок от начала пика до вершины 2. Рисует отрезок от вершины к окончанию пика 3. Рисуем отрезок до начала след пика И если это так, то всю задачу можно переформулировать как: 1. Сгладить сигнал (чем больше сгладили - тем меньше пиков найдем) 2. Построить отрезки между вершинами и границами пиков Не уверен правда что это облегчает тебе задачу, потому как нахождение пиков - это тоже не просто и опять же есть много вариантов :) Но если этот вариант подходит, то могу подсказать парочку алгоритмов которые использую в своей сфере. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 14:20 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Да. Я думал про ФНЧ как про способ генерации первого приближения для этих точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 16:59 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 17:48 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Квадратные и кубические кривые тоже не решаеют моей проблемы. Т.к. рендеринг изображения я буду делать все равно через градиенты. А это - линейные зависимости. Тоесть любого вида кривые могут помочь мне сделать первые шаги алгоритма. А потом все равно надо на этих кривых указать мои искомые 10 точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2021, 10:42 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Вот удачный вариант. Кот сидит на фоне имеющем вид горизона. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:11 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Справа - оригинальное изображение. Слева я сделал последовательность 10 Rectangles и залил их градиентом с фиксированным шагом. Здесь не было никаких аппроксимаций и не было претензий на численные методы или генетический поиск удачной комбинации прямоугольников. Но даже здесь видно насколько близко к оригиналу 10 плиток транслируют образ исходной фотографии. Вот эти градиенты в текстовом представлении. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:14 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
По традиции. Сорц. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:18 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Пипеткой были взяты цвета с левого бордюра фотографии с котом. Это - не совсем правильно. Но в обобщённом варианте у меня будет взвешенное произведение поверхности имеющей вид горки (Гаусс) на исходно изображение. Это даст больше весов границам и подавит центр. На второй итерации я попробую поискать аппроксимацию картинки центра набором полу-прозрачных цветных эллипсов. С учотом того что фон уже существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:21 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
хм.. Прикольно. Походит на фильтр Размытие примененное к фото. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:22 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Из проблем. Для ГА алгоритма над которым я пока еще думаю будет большая проблема. Это фитнес-функция для "эллипсов". Если с градиентами я еще "пропетлял" свернув размерность от декартовой плоскости к вектору то с эллипсами такой вариант - вообще не прокатит. Мне придется умножать картинку на картинку. Это и будет фитнесс-величина. Есть варианты - просто уменьшить разрешение картинки например в 4х или 8х раз для самых ранних популяций хромосом но в самых последних решающих итерациях мне все равно придется умножать FULL-HD (в пикселах) на такой-же эталон. Я вот думаю что если я развалю картинку на 3 вектора типа Код: java 1. 2. 3.
или даже проще на один вектор вещественных значений и попробую воспользоваться модной векторизацией JVM то тогда есть шанс перенести тяжелые расчеты из JVM-кода в нативный который будет более приспособлен для этого. Василий анонсировал нам векторизацию в последних релизах JDK но как ее активировать и как ей воспользоваться - ХЗ. PetroNotC Sharp - ты слышал что нибудь про реализацию векторизации в JVM ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:39 |
|
Кусочно линейная интерполяция с ограничениями
|
|||
---|---|---|---|
#18+
Я пробовал векторное API на своем проекте, очень надеялся что будет летать, но.. никакого прироста не было :) Видать автовекторизация в моем случае и так хорошо срабатывала. Как вариант еще переход на float вместо double (если это допустимо) может ускорить работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 20:08 |
|
|
start [/forum/topic.php?fid=59&msg=40090642&tid=2120376]: |
0ms |
get settings: |
22ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
512ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 626ms |
0 / 0 |