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 МБ

Без компиляции
Нужно войти, чтобы отправить решение.Войти