Декодирование сигнала с видеофона 1988 года выпуска

от автора

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

Однажды я увидел на YouTube обзор Sony PCT-15 — это устройство, сделанное в Японии, подключалось к обычной телефонной линии и позволяло не только разговаривать с собеседником, но также отправлять и получать изображения во время разговора. В то время высокоскоростная связь была доступна только для учреждений, военных и правительства, поэтому телефонная линия была единственным возможным способом связи с миром:

Источник ​ Popular Photography 1988
Источник ​ Popular Photography 1988

Как это работает? Давайте разберемся.

Декодирование

Видеообзор был опубликован на YouTube-канале Techmoan, который специализируется на ретро-устройствах. Но примечательным для меня был тот факт, что передача данных была слышна на видео. Я просто сохранил сигнал в WAV и решил проанализировать его с помощью Python.

Давайте сначала проверим форму сигнала:

import scipy.io.wavfile as wav import scipy.signal as signal import matplotlib.pyplot as plt import numpy as np  fs, data = wav.read('videophone.wav')  plt.rcParams["figure.figsize"] = (20,6)  time = np.linspace(0, len(data) / fs, num=len(data)) plt.plot(time, data) plt.xlabel("Time, sec") plt.ylabel("Amplitude") plt.title("Signal") plt.show()

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

Проверим сигнал в частотной области:

plt.specgram(data, NFFT=1024, Fs=fs) plt.title("Spectrum") plt.xlabel("Time, sec") plt.ylabel("Frequency") plt.show()

Примечательно, что все данные передаются в полосе частот 1-3 КГц, которая была оптимальной для аналоговой телефонной линии:

Теперь вернемся к осциллограмме сигнала. Я могу предположить, что каждый «пик» представляет одну строку изображения, а данные передаются в аналоговой форме:

Это был стандартный подход для аналогового телевидения в 80-х годах. Давайте увеличим один «пик». Очевидно, что это амплитудная модуляция. Я предполагаю, что она кодирует яркость, и это легко проверить. Сначала применим к данным преобразование Гильберта:

def hilbert(data):     analytical_signal = signal.hilbert(data)     amplitude_envelope = np.abs(analytical_signal)     return amplitude_envelope data_am = hilbert(data) plt.plot(time, data_am)

После преобразования мы получаем огибающую сигнала (желтая линия):

Как я уже писал, сигнал, вероятно, кодируется яркостью — из спецификации устройства мы знаем, что Sony PCT-15 имеет монохромный экран, и одного канала яркости должно быть достаточно. Легко поместить одномерные данные на двухмерное изображение и посмотреть результат.

frame_width = 1211 w, h = frame_width, data_am.shape[0]//frame_width image = Image.new('RGB', (w, h)) px, py = 0, 0 for p in range(data_am.shape[0] - 1):     lum = int(data_am[p]//128)     if lum < 0: lum = 0     if lum > 255: lum = 255     image.putpixel((px, py), (lum, lum, lum))     px += 1     if px >= w:         px = 0         py += 1         if py >= h:             break  image = image.resize((w//2, 4*h)) plt.imshow(image)  plt.show()

После выполнения кода мы можем увидеть закономерность:

Мне неясно, как работает синхронизация строк в реальном устройстве, я могу предположить, что PCT-15 использует заголовок данных для начала приема изображения. Формат заголовка мне неизвестен, поэтому я просто подправил параметр frame_width вручную в исходном коде.

И наконец, мы можем получить изображение:

Цифры 0…250 на изображении являются «виртуальными», они зависят только от частоты дискретизации записанного аудиофайла. Как мы знаем из спецификации, реальное разрешение изображения составляет всего 96×100, но устройство также может передавать изображения в режиме «высокого разрешения» 160×100. Я просил Techmoan в комментариях к видео поделиться образцом WAV «высокого разрешения», но владелец канала с количеством зрителей >1М не считает нужным отвечать на вопросы подписчиков, поэтому это единственный образец, который у меня есть. В любом случае, этого достаточно, чтобы оценить качество изображения.

Заключение

Было интересно проанализировать данные и посмотреть, что было «передовой» технологией в конце 80-х годов. Тогда не было ни Skype, ни WhatsApp, а скорость модемной линии составляла около 2400-14400 бит (не мегабит:) в секунду, что было явно недостаточно для «нормального» видеозвонка. А таких устройств, как «веб-камеры», вообще не было, их просто еще не изобрели. Поэтому инженеры Sony решили использовать для передачи и приема изображения аналоговую телевизионную передачу с низкой скоростью. Как мы видим, время передачи составляет около 6-10 секунд на изображение, что, очевидно, достаточно только для неподвижных изображений, но это было лучше, чем ничего — особенно для людей, живущих в разных странах или городах, это могло быть единственным способом видеть друг друга в «почти» реальном времени.

Я не знаю, были ли продажи Sony PCT-15 успешными в 80-х годах. Первая веб-камера была представлена позже, в 1994 году, так что вполне возможно, существовал маркетинговый спрос со стороны людей, которые хотели видеть друг друга в то время, когда цифровые и веб-камеры еще не были доступны. С другой стороны, черно-белое изображение с разрешением 160х100, которое передается примерно за 10 с, звучит не очень здорово даже для 80-х годов. В любом случае, совершая видеозвонок со смартфона на отдыхе, приятно вспомнить, как зарождалась эта технология, и проникнуться уважением к инженерам и ученым, которые сделали ее простой и возможной.


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

https://otus.pw/3tkp/
https://otus.pw/3tkp/

ПОСМОТРЕТЬ СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ

ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/564076/


Комментарии

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

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