28.07.2022, 09:46 | #1 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 3,913
|
задачка
с яндексового контеста, матрицей *.npy дана картинка
три канала rgb, целые циферки от 0 до 255 85% пикселей рандомно похерено во тьму восстановить качество до psnr > 20 (желающие сами можуть взять картинку побить на ргб матрицы и рандомно дропнуть 85% пикселей) как бы стал решать? лимит времени 1-2 часа (в контесте 6 задач на 6 часов)
__________________
The past is never dead. It’s not even past. William Faulkner |
28.07.2022, 11:15 | #2 |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,767
|
Я на работе вообще-то... Поэтому крайне схематично:
0. Насколько я понял чёрные точки (0,0,0) подлежат восстановлению по данным цветных точек. 1. Для каждой восстанавливаемой точки строим "функцию распределения" в малой окрестности точки: цвет -> количество точек с таким цветом 2. Если функция распределения имеет 1 пик вокруг какого-то конкретного значения цвета - предполагаем, что точка находится в области равномерного цветового градиента и восстанавливаем этим цветом (хотя лучше не константой а какой-нибудь линейной регрессией по положению токи) 3. Если функция распределения имеет 2 пика вокруг двух конкретных значений цвета - предполагаем, что через окрестность точки проходит линейный контур с разными цветами по разные стороны. Определяем наклон контура и по какую сторону контура находится восстанавливаемая точка и восстанавливаем цветом той части, в которой оказалась точка. 4. Три и более пиков - игнорируем, такие зоны скорее всего малы по площади, а за два часа все варианты перебрать всё равно не успеем. 5. Скорее всего можно ускорить процесс пересчёта статистики по цвету, если мы при смещении малой области будем выкидывать статистику цвета по точкам, которые вышли из зоны захвата и добавлять статистику по тем, которые вошли. 6. Скорее всего полезно будет подвигать зоны захвата вдоль линий смены цвета - так можно обнаружить и точнее обсчитать точки схождения трёх и более контуров по типу "стена, над ней- небо, а на переднем плане - дерево"
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! Последний раз редактировалось SerejaKu; 28.07.2022 в 11:22. |
28.07.2022, 11:21 | #3 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,441
|
самое простое наверное линейная интерполяция в треугольниках.... концептуально. или не в треугольниках. Допустим для каждой точки плоскости есть 4-5 ближайших узлов и допустим вес обратно пропорционален линейке или квадрату линейки от узла. получается что в узлах узлы, между что то между. а может не линейка и не кваждат, а как то степень поподбирать.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
28.07.2022, 11:23 | #4 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 3,913
|
так это не кспеху, я то уже отмахался, другие мысли интересно послушать
__________________
The past is never dead. It’s not even past. William Faulkner |
28.07.2022, 11:33 | #5 |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,767
|
Расскажи хоть как сам делал.
И как там со сборщиком мусора? Я когда пробовал с Яндекс-контестом играться обнаружил, что для java он не учитывает память, освобождённую сборщиком мусора, поэтому для прохождения лимита по памяти все алгоритмы приходится переписывать для работы на однократно выделенном массиве байтов.
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! |
28.07.2022, 13:08 | #6 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 3,913
|
Попожже. Может Afa, Zab тоже выскажутся.
Afa, Zab как бы решали задачку?
__________________
The past is never dead. It’s not even past. William Faulkner |
28.07.2022, 13:33 | #7 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,265
|
мне в лом
скорей - матрицу усреднения наложил б. эдак 7х7 для начала. с учетом двух третей - ну вон вова сказал за треугольники. я б билинейку предпочел. но этому методу мало доверия. большой процент выбитых точек а вообще - разодрать на каналы ycbcr и сначала гонять по яркости усредняя выпавшие точки. матрицей прям. будет уже достаточно. дальше по разностным каналам, можно тупо уменьшить вдвое разрешение по ним, при интерполяции точек учитывать только не ч0рные
__________________
... Survivors will be shot again. |
28.07.2022, 15:08 | #8 |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,767
|
А контура объектов при этом не расплывутся?
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! |
28.07.2022, 15:17 | #9 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,265
|
а наплевать
пять шестых картинки похерены. я ж не зря с матрицы 7х7 начал. и то мало будет наверн и эт. если ты про уменьшение вдвое - так стандартно жипеги так и пакуют. и яркостный канал даёт контура и резкость
__________________
... Survivors will be shot again. |
28.07.2022, 15:22 | #10 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,265
|
псы
Сереж, ты аббревиатуру видел? psnr которая.размазывание уменьшит ошибку для средней картинки можно читить - посчитать среднюю по каналам без учета чорных точек и залить всё черное средним.
__________________
... Survivors will be shot again. |