что такое карта глубины

Карты глубины в Фотошоп. Реалистичная глубина резкости.

Я предлагаю вам сначала прочитать этот урок, и как только вы его поймете, еще раз прочитать его и попробовать этот способ на практике, используя свои изображения.
Использование Размытия по Гауссу является не самым лучшим способом для создания глубины резкости, позволяющей ясно увидеть края объектов и мелкие детали изображения. Взгляните на пример ниже. Как видите, применение фильтра Lens blur (Размытие при малой глубине резкости) гораздо эффективнее в этом случае.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Что такое Карты глубины (depth maps).

Наверху, где присутствует светло-серый оттенок, использовано сильное размытие, в то время как внизу, где преобладает темный оттенок серого, размытия почти нет.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Имитация глубины резкости на различных расстояниях.

Для создания реалистичного эффекта глубины резкости в фотошоп необходимо применять различное количество размытия для объектов в зависимости от их расстояния до камеры, как при работе на настоящей камере. Мы собираемся достичь такого эффекта, используя Карту глубины. Мы создадим карту глубины вручную, с применением различных оттенков серого в зависимости от расстояния объектов относительно камеры. На нашей Карте глубины ближние объекты будут темнее (в фокусе), а дальние – светло-серые, т.е более размытые (согласно логике).

Практический пример.

Я взял фотографию из Интернета и поместил на ней несколько шаров на различном расстоянии.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Создание Карты глубины.

Далее, начинаем создавать карту глубины. Как я уже говорил, это возможно сделать только вручную, потому что нам нужны оттенки серого. Простой перевод изображения в черно-белое в этом случае не работает.

Выбор нужного оттенка серого для каждого объекта зависит от того, какой объект будет в центре внимания (в фокусе), а какой в отдалении (размытый). Тот, что в центре внимания будет закрашен черным цветом на карте.

Например, если вы хотите расположить в фокусе желтый шар, то раскрасьте его в черный, а остальные шары в различные оттенки серого в зависимости от их расстояния до желтого шара. Все вышесказанное может ввести вас в заблуждение, пока вы не увидите этого сами. Лишь увидев пример, это легко понять.

Сначала, создаем новый слой (Ctrl+Shift+N) над слоем с изображением и используем на нем черно-белый градиент (Gradient) в зависимости от вашего выбора распределения глубины резкости для объектов изображения.

На моем фото окна находятся далеко от камеры, а пол и потолок коридора постепенно приближены к ней. Следуя этой логике, я создал соответствующего цвета градиент.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

В следующем шаге мы изолируем каждый объект и присваиваем ему определенный оттенок серого. Вы можете выделить объекты вручную, используя инструменты Перо (Pen Tool) или Полигональное Лассо (Polygonal Lasso Tool). В моем случае у меня уже есть копии шаров на отдельных слоях, так что мне не составит труда выделить их.

Очень важно, чтобы детали Карты глубины для каждого объекта были точными, иначе вы не получите ожидаемого результата. Убедитесь, что вы создаете детали Карты глубины на отдельных слоях, потому что в последнем шаге вы объедините их.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Я закрасил синий шар в черный цвет, так как хочу, чтобы он был в фокусе. Для остальных шаров я использовал различные оттенки серого. Зеленый шар (который находится дальше всех от синего шара) я закрасил очень светло-серым цветом, почти белым, так как он лежит далеко, и значит, будет более размытым. Синий шар не будет размыт совсем, поэтому он закрашен черным.

Таким образом, Карта глубины действует подобно маске слоя (Layer Mask), только вместо контроля прозрачности она контролируем количество добавляемого эффекта размытия.

После того, как вы выполнили детализацию карты глубины объектов, объедините градиентный слой со слоями деталей глубины объектов (Ctrl+клик по миниатюрам слоев, затем Ctrl+E).

Копируем слой с картой (Ctrl+C), переходим в панель «Каналы» (Channels), создаем альфа-канал (клик по иконке нового канала внизу панели) и вставляем на него карту (Ctrl+V), снимаем выделение (Ctrl+D). Активируем канал RGB и возвращаемся в панель слоев (Layers). Выключаем видимость слоя с картой (клик по глазику миниатюры) и встаем на исходный слой изображения.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Следующим шагом будет применение фильтра Размытие при малой глубине резкости (Filter>Blur>Lens Blur). Используем альфа-карту в качестве источника для добавления нужного количества размытия.

Если исходное изображение состоит из элементов, выполненных на разных слоях, вы обязательно должны объединить их для применения размытия на всех объектах изображения.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Обратите внимание, что размытие объектов постепенное на изображении выше. Имейте ввиду, что не всегда карты глубины также легко создавать, как в нашем примере.
На фото ниже показан более сложный пример создания Карты. Все выполняется вручную с использованием Пера (Pen Tool) около 25 минут. Количество объектов изоляции зависит от того, насколько подробно вы хотите распределить количество размытия для каждого из них.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Результат: (обратите внимание, что люди позади двух мужчин должны быть темнее на карте. Здесь слишком много размытия добавлено к ним).

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Используемые материалы:

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Категория: Уроки Фотошопа

Источник: Ссылка на источник скачиваний/переходов: 58

Рейтинг популярности: 3.2/5 (Всего оценок: 119)

Источник

Карта глубины

Карта глубины (англ. depth map) — это изображение, где для каждого пикселя вместо цвета хранится его расстояние до камеры. [1]

В компьютерной 3D-графике и компьютерном зрении карта глубины представляет собой изображение или канал изображения, содержащий информацию о расстоянии поверхностей объектов сцены от точки обзора.

Содержание

Мотивация [ править ]

Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов, представленных на данном изображении. Эта информация может быть полезна во многих областях.

Методы построения карты глубины [ править ]

Карта глубины может быть получена с помощью специальной камеры глубины, по стереопаре изображений, а также с помощью нейронных сетей.

Построение с помощью специальных камер глубин [ править ]

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Построения карты глубины по стереопаре [ править ]

Идея, лежащая в основе построения карты глубины по стереопаре, проста. Для каждой точки на одном изображении выполняется поиск парной ей точки [на 21.01.21 не создан] на другом изображении. А по паре соответствующих точек можно выполнить триангуляцию и определить координаты их прообраза в трехмерном пространстве. Зная трехмерные координаты прообраза, глубина вычисляется как расстояние до плоскости камеры.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Собственно значения глубины обратно пропорциональны величине смещения пикселей.

Использование нейронных сетей [ править ]

Существует множество методов, использующих нейронные сети. Приведём пару примеров таких решений.

Построение с помощью свёрточных нейронных сетей [ править ]

Используем сверточные нейронные сети для построения карты глубины следующим образом [6] :

В итоге, по обученной нейронной сети мы можем создавать карту глубины, не проводя расчётов для поиска карт смещения и имея только изображение объекта или пространства. [8]

Также возможно использование усложнённых архитектур свёрточных нейронных сетей типа DenseNet.

DenseNet [9] — это свёрточная нейронные сеть, в которой выход каждого из слоев подаётся на вход всем слоям, лежащих ниже.

Построение с помощью капсульных нейронных сетей [ править ]

Свёрточные нейронные сети способны регистрировать только наличие какого-либо объекта на картинке, не кодируя его ориентацию и положение. Но капсульные нейронные сети (англ. Capsule Neural Network) [10] лишены этого недостатка.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

«Капсульная нейронная сеть» состоит из капсул или групп нейронов, чтобы идентифицировать закономерности в изображении. Эта информация поступает в виде векторов, содержащих ориентацию и положение узоров на изображении, которое затем принимается капсулами более высокого уровня. Капсулы более высокого уровня обрабатывают эту информацию из нескольких капсул более низкого уровня и впоследствии выдают прогноз. Капсулы одного уровня не имеют связей друг с другом и вычисляют информацию независимо друг от друга. Капсулы образуются путем разделения выходных данных из свёрточного слоя. Мы делим наш трехмерный вектор на капсулы методом «нарезания» таким образом, чтобы в каждой капсуле была информация о каждом пикселе, т.е. по трехмерной координате.

Состояние нейронов капсульной нейронной сети внутри изображения фиксирует свойство области или объекта внутри изображения: его положение и ориентацию.

Использование капсульной нейронной сети аналогично использованию обычных свёрточных сетей, описанному выше. В целом, данная сеть показывает более точные результаты предсказания глубины.

Построение с помощью PlanetNet (2018) [ править ]

Так же есть архитектуры, решающие данную задачу и без обучения на карте смещений, построенной с помощью двух изображений. Одной из таких является PlaneNet.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Обучение без учителя поиска карты глубины из видео (2017) [ править ]

Авторы данной статьи [17] предлагают методику оценки глубины одной картинки без учителя и движения камеры из беспорядочной видео нарезки.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Неконтролируемая оценка глубины монокуляра с консистенцией слева направо (2017) [ править ]

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

В данной работе [22] предлагается сверточная нейронная сеть, обученная выполнять оценку глубины одного изображения без реальных данных. Авторы предлагают сетевую архитектуру, которая выполняет сквозную оценку глубины изображения, полученного с 1 камеры, без учителя, что обеспечивает согласованность глубины слева направо внутри сети. Сеть оценивает глубину, выводя смещения, которые искажают левое изображение, чтобы соответствовать правому. Левое входное изображение используется для вывода смещений слева направо и справа налево. Сеть генерирует предсказанное изображение с обратным отображением с помощью билинейного сэмплера. Это приводит к полностью дифференциальной модели формирования изображения. Сверточная архитектура вдохновлена так же DispNet’ом. Она состоит из двух частей—кодера и декодера. Декодер использует пропуск соединений из блоков активации кодера, чтобы распознавать детали с высоким разрешением. Сеть предсказывает две карты смещений — слева направо и справа налево. В процессе обучения сеть генерирует изображение путем выборки пикселей из противоположного стереоизображения. Модель формирования изображения использует сэмплер изображений из пространственной трансформаторной сети (STN) для выборки входного изображения с помощью карты смещений. Авторы обучали и тестировали данные на KITTY.

Прогнозирование глубины без датчиков: использование структуры для обучения без учителя по монокулярным видео (2019) [ править ]

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Визуальная одометрия [24] — метод оценки положения и ориентации робота или иного устройства в пространстве с помощью анализа последовательности изображений, снятых установленной на нем камерой.

Данная статья [25] посвящена задаче обучения без учителя глубины сцены и визуальной одометрии робота, где наблюдение обеспечивается видеозаписями с одной камеры. Это делается путем введения геометрической структуры в процесс обучения. Он включает в себя моделирование сцены и отдельных объектов, одометрии камеры и движения объектов, изучаемых с помощью монокулярных видеовходов. Авторы вводят модель движения объекта, которая имеет ту же архитектуру, что и сеть определения визуальной одометрии. Она принимает последовательность изображений RGB в качестве входных данных и дополняется предварительно вычисленными масками сегментации экземпляров. Работа модели движения заключается в том, чтобы научиться предсказывать векторы трансформации каждого объекта в трехмерном пространстве. Это создает видимость наблюдаемого объекта в соответствующем целевом кадре. Авторы проверяли прогнозирование глубины на KITTY.

Источник

Зрение для робота на Raspberry Pi: карта глубин

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Нынче все технологии «дроностроительства» активно дешевеют. Кроме одной: получение карты окружающего пространства. Тут есть две крайности: либо дорогие лидары (тысячи долларов) и оптические решения для построения карты глубин (много сотен долларов), либо совсем копеечные решения типа ультразвуковых дальномеров.
Поэтому возникла идея на базе недорогой Raspberry Pi с одной камерой сделать решение, которое окажется в пустующей нише и позволит получать карту глубин «за недорого». Причем сделать это на простом языке программирования типа Python, чтобы это было доступно новичкам для экспериментов. Собственно, о своих результатах я и хотел рассказать. Получившиеся скрипты с примерами фоток можно запускать и на десктопе.

Карта глубин с одной камеры.

Сначала пару слов об оптической части. Для построения карты глубин всегда используются две картинки – с левой и правой камер. А у нас в наличии малина с одной камерой. Поэтому был разработан оптический разделитель, который в результате отдает на камеру уже стереопару.
Простым языком – если глянуть на фото, то из чёрной коробочки на вас смотрят два глазка камеры. А на самом деле камера одна. Просто немного оптической магии.

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

На фото представлена уже двенадцатая итерация устройства. Потребовалось немало времени, чтобы получить надежную стабильную конструкцию, которая при этом еще и обходилась бы недорого. Самой непростой частью являются внутренние зеркала, которые делались под заказ вакуумным напылением алюминия. Если использовать типовые зеркала, у которых отражающий слой находится под стеклом, а не над ним, то в месте их стыка образуется зазор, который радикально портит всю картину.

На чем будем работать

За базу был взят малиновый образ Raspbian Wheezy, поставлен Python 2.7 и OpenCV 2.4, ну и требуемые пакеты по мелочи — matplotlib, numpy и прочие. Все сорсы и ссылка на готовый образ карточки выложены в конце статьи. Описание скриптов в виде уроков можно посмотреть на сайте проекта

Готовим картинку к построению карты глубин

Так как решение у нас не из металла и без сверхточной оптики, то в результате сборки возможны небольшие отклонения от идеальной геометрии. Плюс еще камера у нас к устройству крепится винтиками, поэтому её положение может быть не идеальным. Вопрос с расположением камеры решается вручную, а компенсация «кривизны» сборки конструкции у нас будет делаться программно.

Скрипт первый – выравнивание камеры

Стык зеркал на картинке в идеале должен быть вертикальным и находиться по центру. «На глазок» это сделать тяжеловато, поэтому был сделан первый скрипт. Он просто захватывает картинку с камеры в режиме live preview, выводит её на экран, а по центру в overlay рисует белую полоску, по которой и идет выравнивание. После того как камера правильно сориентирована – затягиваем винтики посильнее, и сборка закончена.

Скрипт второй – получаем «чистую» стереопару

Наша левая и правая картинки стыкуются в центре изображения. Стык на фото имеет ненулевую ширину – от нее можно избавиться только удаляя зеркала от устройства, что увеличивает размер конструкции. Камера малины имеет настроенный на бесконечность фокус, и близко расположенные объекты (в нашем случае это стык) просто «размываются». Поэтому нужно просто указать скрипту, что по нашему мнению является «плохой» зоной, чтобы стереопара резалась чистые на картинки. Был сделан второй скрипт, который выводит картинку и позволяет клавишами указать ту зону, которая будет вырезана.
Вот как выглядит процесс:

Скрипт третий — серия фото для калибровки

Фундаментальная наука говорит, что для успешного построения карты глубин стереопара должна быть откалибрована. А именно, все ключевые точки с левой картинки должны находиться на той-же высоте и на правой картинке. При таком раскладе функция StereoBM, которая у нас единственная real-time, может успешно делать свое дело.
Для калибровки нам нужно напечатать эталонную картинку, сделать серию фотографий и отдать её алгоритму калибровки, который высчитает все искажения и сохранит параметры для приведения картинок в норму.
Итак, печатаем «шахматную доску» и приклеиваем на твердую плоскую поверхность. Для простоты серийного фото был сделан скрипт с таймером обратного отсчета, который выводится поверх видео.
Вот как выглядит скрипт серийного фотографирования в работе:

Надо особо отметить, что «правильность» сделанной серии критична для результатов калибровки. Чуть позже мы посмотрим на результат, который получается при неверно сделанных фотографиях.

Скрипт 4 — резка фото на стереопары

Самое интересное — калибровка, скрипт пятый

«Что-то пошло не так»

Бывают случаи, когда результаты калибровки оказываются неожиданными.
Вот парочка ярких примеров:

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Вот как выглядит «исправленная» стереопара при хороших результатах калибровки:

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Скрипт 6 — первая попытка построить карту глубин

Типа все готово – можно уже и карту глубин построить. Загружаем результаты калибровки, делаем фото и смело строим карту глубин с помощью cv2.StereoBM
Получаем примерно следующее:

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Результат не очень впечатляет, явно надо что-то подкручивать. Ну что-же, приступим к более тонкой настройке в следующем, 7-м скрипте. Там мы будем использовать для построения не 2 параметра, как в StereoBM(), а почти 10, что гораздо интереснее.

Скрипт 7 — карта глубин с расширенными настройками

Когда параметров не 2 а 10, то перебирать их варианты с постоянным перезапуском скриптов занятие неправильное. Поэтому был сделан скрипт для удобной интерактивной настройки карты глубин. Задача стояла не усложнять код работой с интерфейсом, поэтому все было сделано на matplotlib. Прорисовка интерфейса в matplotlib на малине происходит достаточно медленно, поэтому я обычно переношу рабочую папку с малины на ноутбук и подбираю параметры там. Вот как выглядит работа скрипта:

После того, как вы подобрали параметры, скрипт по кнопке Save сохраняет результат в файлик 3dmap_set.txt в формате JSON.

Практическая работа с картой глубин показала, что в первую очередь нужно подбирать параметр minDisparity, и в связке с ним numOfDisparities. Ну и помним, что numOfDisparities меняется на самом деле дискретно, с шагом 16.
После настройки этой пары можно поиграться с другими параметрами.

Особенности настройки карты – это уже дело вкуса пользователя, и зависит от решаемой задачи. Можно привести карту к большому количеству мелких деталей либо выводить укрупненные зоны. Для простого обхода препятствия роботами второе подходит больше. Для облака точек первое, но тут всплывают вопросы производительности (мы к ним еще вернемся).

Что хотим увидеть?

Работаем с видео на лету — скрипт 8-й, заключительный

Ну что, теперь у нас имеется готовая настроенная система, и надо бы получить практический результат. Пробуем строить карту глубин в реальном времени по видео с нашей камеры, и показывать её в реальном времени по мере обновления.

Первый вопрос – куда рисовать карту. Самый быстрый вариант, который пришел мне в голову, это отображение карты поверх видео в слое overlay. Для этого пришлось решить несколько проблем, а именно:

В гонке за скоростью

Итак, первый замер делался на первой Raspberry с одноядерным процессором.
4 секунды — построение карты по изображению 1280х720 Это много.
2,5 секунды — на Raspberry Pi 2, уже лучше.
Анализ показал, что при этом на второй малине используется всего одно ядро. Непорядок! Я пересобрал OpenCV с использованием библиотеки распараллеливания TBB.
1,5 секунды – запуск на второй малине с использованием многоядерности. По факту оказалось, что используются всего 2 ядра – с этим предстоит еще повозиться. Оказалось, что на эту проблему наткнулся не только я, значит еще есть куда двигаться.
Судя по алгоритму, скорость работы должна линейно зависеть от размера обрабатываемых данных. Поэтому, если снизить разрешение в 2 раза, то теоретически все должно работать в 4 раза быстрее.
0,3 секунды, или примерно 3-4 FPS – при сниженном вдвое разрешении 640х360. Теория подтвердилась.

Дальнейшие планы

В первую очередь я хотел выжать максимум из многоядерности второй малины. Посмотрю подробнее исходники функции StereoBM и попробую понять, почему работа идет не на всю катушку.

Следующий этап обещает гораздо больше приключений — это использование GPU малины для ускорения расчетов.
Тут рисуются три возможных пути:

Если у вас был опыт по работе с TBB под малиновое OpenCV, или вы имели дело с кодингом под GPU малинки — буду благодарен за дополнительные подсказки-наводки. Готовых наработок мне удалось найти достаточно мало по одной простой причине — малина с двумя камерами явление редкое. Если цеплять две вебки по USB то наступают большие тормоза, а с двумя родными камерами умеет работать только Raspberry Pi Compute, к которой нужна еще здоровенная devboard со шнурками и переходниками.

Источник

Новости

Карты для картплоттера. Для чего они нужны. 29.01.2020 01:22

что такое карта глубины. Смотреть фото что такое карта глубины. Смотреть картинку что такое карта глубины. Картинка про что такое карта глубины. Фото что такое карта глубины

Эхолот или картплоттер?

При покупке помощника на воде вы уже, наверно, сталкивались с тем, что рынок морской электроники предлагает не просто эхолоты, а эхолоты с функцией картплоттера. Что дает эта приставка «картплоттер», давайте разберемся.

Картплоттер это дополнительная функция вашего эхолота, которая, благодаря втроенному GPS-приемнику, способна показать ваше текущее местоположение на воде (координаты в формате широта/долгота). Благодаря этой функции в картплоттерах Lowrance вы сможете отмечать путевые точки и, спустя какое-то время, возвращаться к ним. Это основное отличие обычного эхолота от эхолота-картплоттера, которое дает вам неоспоримое преимущество на воде.

Что такое картплоттер без карт.

Вы купили эхолот-картплоттер, но при переходе в режим картплоттера вы увидите белое полотно, на котором будет обозначена точка с вашими текущими координатами (как говорилось раньше – широта/долгота). Скучно.

Некоторые модели картплоттеров Lowrance (серии HDS Live и Ti2) поставляются с базовыми картами мира. Что это значит? Это значит, что на экране будет не белое полотно, а будет картинка, где суша обозначена желтым цветом, а вода синим. Иногда, будут обозначения крупных рек и городов. Ну и точка с вашими координатами. И снова скучно.

И тут вам на помощь придут два гиганта в мире создания морской картографии – Navionics и C-MAP, которые преумножат достоинства вашего картплоттера и сделают хождение по водоёмам осознанным.

Какую информацию дают карты.

Как правильно выбрать карту.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *