- Описание
- Отправленные решения
12. Три богатыря
В тридевятом царстве, в тридесятом государстве…
Перед тремя богатырями стояло сложное решение, им пришлось отправиться в далекое путешествие, чтобы защитить свою родную землю от басурманов.
Вернувшись в родные края и немного переведя дух, над ними навсила новая угроза, еще опаснее.
Теперь, богатыри вынуждены отправить в новое путешествие на поиски волшебного эликсира, путь к которому сокрыт в древних картах.
Вам известно, что древние карты за столько лет, утратили часть своего изображения. В найденных фрагментах древних карт может содержаться не более 15% информации.
Пока что, старцам и мудрецам, не удалось расшифровать фрагменты карты, а у вас есть плохое предчувствие о качестве грядущих изображений.
Чтобы отладить алгоритм восстановления утраченной информации, через защищённый канал вам передадут пакет из семи любимых изображений одного из старцев. Значения пикселей в изображениях будут утеряны на 85%, а на их местах будут установлены нули.
Ваша задача - восстановить по оставшимся пикселям исходное изображение так, чтобы богатыри смогли легко расшифровать его. Изображение считается распознаваемым, если значение метрики peak signal-to-noise ratio между восстановленным и оригинальным изображениями будет не меньше некоторого порога (20db).
Три богатыря рассчитываютна вас! Не подведите их…
И да пребудут с вами матричные факторизации!
Впрочем, никто не запрещает заглянуть на Тёмную сторону и попробовать использовать глубокие нейросети. Помните, что даже богатырь обратился во тьму, чтобы уберечь мир от большего зла.
Формат ввода
Вам будет предложен файл data.npy. Доступ к нему можно получить по этой ссылке.
В Царстве для обработки информации часто используют numpy, так что для загрузки последовательности вам предстоит воспользоваться кодом:
with open('data.npy', 'rb') as file:
images = np.load(file)
Матрица содержит семь различных изображений в формате (h, w, channels), где h и w - это высота и ширина изображения, а channels - число каналов. Итоговая матрица имеет размерность (7, h, w, channels).
Все нулевые значения в матрице можно (и нужно) считать утерянной информацией.
Формат вывода
В качестве ответа Вам предстоит вернуть многомерную астро-матрицу той же размерности, что и в data.npy.
Восстановленные изображения должны быть в таком же порядке, как и исходные. Матрица должна содержать только целые числа от 0 до 255 и иметь тип np.uint8.
Чтобы сохранить изображения в правильном формате воспользуйтесь следующим кодом:
with open('answers.npy', 'wb') as file:
np.save(file, restored.astype(np.uint8), allow_pickle=False, fix_imports=False)
Примечание
Чтобы успешно пройти испытание, вам нужно восстановить хотя бы четыре звёздные карты.
Помните: даже одна обнаруженная и дешифрованная звёздная карта - это ключ к победе. Попробуйте сосредоточиться хотя бы на одном изображении, а уже после работайте над тонкой настройкой алгоритма.
Ограничения
Ограничение времени
10 с
Ограничение памяти
64 МБ