28.07.2022, 09:46 | #1 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
задачка
с яндексового контеста, матрицей *.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,779
|
Я на работе вообще-то... Поэтому крайне схематично:
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,710
|
самое простое наверное линейная интерполяция в треугольниках.... концептуально. или не в треугольниках. Допустим для каждой точки плоскости есть 4-5 ближайших узлов и допустим вес обратно пропорционален линейке или квадрату линейки от узла. получается что в узлах узлы, между что то между. а может не линейка и не кваждат, а как то степень поподбирать.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
28.07.2022, 11:23 | #4 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
так это не кспеху, я то уже отмахался, другие мысли интересно послушать
__________________
The past is never dead. It’s not even past. William Faulkner |
28.07.2022, 11:33 | #5 |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,779
|
Расскажи хоть как сам делал.
И как там со сборщиком мусора? Я когда пробовал с Яндекс-контестом играться обнаружил, что для java он не учитывает память, освобождённую сборщиком мусора, поэтому для прохождения лимита по памяти все алгоритмы приходится переписывать для работы на однократно выделенном массиве байтов.
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! |
28.07.2022, 13:08 | #6 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
Попожже. Может 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,361
|
мне в лом
скорей - матрицу усреднения наложил б. эдак 7х7 для начала. с учетом двух третей - ну вон вова сказал за треугольники. я б билинейку предпочел. но этому методу мало доверия. большой процент выбитых точек а вообще - разодрать на каналы ycbcr и сначала гонять по яркости усредняя выпавшие точки. матрицей прям. будет уже достаточно. дальше по разностным каналам, можно тупо уменьшить вдвое разрешение по ним, при интерполяции точек учитывать только не ч0рные
__________________
... Survivors will be shot again. |
28.07.2022, 15:08 | #8 |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,779
|
А контура объектов при этом не расплывутся?
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! |
28.07.2022, 15:17 | #9 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,361
|
а наплевать
пять шестых картинки похерены. я ж не зря с матрицы 7х7 начал. и то мало будет наверн и эт. если ты про уменьшение вдвое - так стандартно жипеги так и пакуют. и яркостный канал даёт контура и резкость
__________________
... Survivors will be shot again. |
28.07.2022, 15:22 | #10 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,361
|
псы
Сереж, ты аббревиатуру видел? psnr которая.размазывание уменьшит ошибку для средней картинки можно читить - посчитать среднюю по каналам без учета чорных точек и залить всё черное средним.
__________________
... Survivors will be shot again. |
28.07.2022, 15:41 | #11 | |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
Цитата:
будет ацкий блюр p.s. и psnr просядет
__________________
The past is never dead. It’s not even past. William Faulkner Последний раз редактировалось Фавн2; 28.07.2022 в 15:46. |
|
29.07.2022, 13:38 | #12 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
может кто поупражняется
↓↓ original ↓↓ скрин в дропнутом состоянии psnr такой жути 5.57 ↓↓ чит Афы psnr "чита" 14.64 ↓↓ мой результат psnr 28.41
__________________
The past is never dead. It’s not even past. William Faulkner |
31.07.2022, 22:03 | #13 | |
Старожил
Регистрация: 15.02.2007
Адрес: Екатеринбург
Сообщений: 5,779
|
Цитата:
__________________
Пока живут растаманы из глубинки - Вавилону не устоять! |
|
01.08.2022, 08:27 | #14 |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
Автоматически, минуя человеческое сознание.
Этот с позволения сказать "алгоритм": брать ближайший цвет влево-вправо-вверх-вниз, ежели так цепанулось 2-3-4 цвета - усреднить, если в ближайшем кресту нет, шагаем на пиксель дальше. Что любопытно, добавка диагоналей уже портит результат. Матрица афы еще больше мути добавляет с падением psnr после квадрата 7на7 (этот 21пснр вроде дает), ну а до него там черные области остаются.
__________________
The past is never dead. It’s not even past. William Faulkner |
01.08.2022, 11:13 | #15 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,361
|
матрицы устреднения разные. как по кругу так и вертикальные/горизонтальные кресты
кста. чисто по диагоналям не гонял? да, 7х7 я и говорил исходя из процента выбитых точек. меньше - явно часто будет не ловить точки
__________________
... Survivors will be shot again. |
01.08.2022, 13:35 | #16 | |
ушел в библиотеку
Регистрация: 07.02.2019
Сообщений: 4,001
|
Цитата:
P.S. кстати ↓↓ матрицей 7на7
__________________
The past is never dead. It’s not even past. William Faulkner Последний раз редактировалось Фавн2; 01.08.2022 в 13:44. |
|
01.08.2022, 14:22 | #17 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,361
|
прикольно
ну да, матрицы мажут. это массовая обработка с максимально простым заданием коэффициентов.
__________________
... Survivors will be shot again. |