[Python, Программирование, Гаджеты, История IT] Декодирование сигнала с видеофона 1988 года выпуска (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В наши дни можно легко связаться по видеосвязи практически с любой точкой мира. Но потребовалось много времени, чтобы технология достигла такого уровня. Я покажу, какие решения использовали инженеры в 1988 году, чтобы вы могли не только говорить, но и видеть своего друга или партнера во время разговора.Однажды я увидел на YouTube обзор Sony PCT-15 — это устройство, сделанное в Японии, подключалось к обычной телефонной линии и позволяло не только разговаривать с собеседником, но также отправлять и получать изображения во время разговора. В то время высокоскоростная связь была доступна только для учреждений, военных и правительства, поэтому телефонная линия была единственным возможным способом связи с миром:
Источник 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 на изображении являются "виртуальными", они зависят только от частоты дискретизации записанного аудиофайла. Как мы знаем из спецификации, реальное разрешение изображения составляет всего 96x100, но устройство также может передавать изображения в режиме "высокого разрешения" 160x100. Я просил 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/ПОСМОТРЕТЬ СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ
===========
Источник:
habr.com
===========
===========
Автор оригинала: Dmitrii Eliuseev
===========Похожие новости:
- [Python, Django, Big Data, Конференции] PyCon Russia 2021 пройдет 5-6 сентября. Принимаем заявки на доклады
- [Беспроводные технологии, Компьютерное железо, Накопители, Сотовая связь] Разработка магнитного порошка для жёстких дисков огромной плотности и технологий 6G
- [Python, Программирование, Математика] Наглядно о том, как работает NumPy (перевод)
- [Сетевые технологии, Сетевое оборудование, Интернет вещей] Там, где Wi-Fi не справляется. Применение проприетарных беспроводных технологий в промышленности и не только
- [Open source, Python, Программирование, Учебный процесс в IT, Криптовалюты] Андрей Карпати: Bitcoin на Python (часть 1) (перевод)
- [IT-инфраструктура, Сетевые технологии, Разработка систем связи, Инженерные системы] Как Почта России управляет самой большой частной телеком-сетью в стране
- [Управление e-commerce, Законодательство в IT, Патентование, Копирайт] Блокировка «Яндекс.Такси» в Казахстане – как избежать подобных рисков?
- [Python, Администрирование баз данных, Хранение данных, Хранилища данных] Разработка платформы управления данными. Доклад Яндекса
- [Программирование, C++, Разработка под Linux] Интеграция пресетов CMake в Visual Studio и Visual Studio Code (перевод)
- [Python, Программирование, Алгоритмы] Новый выпуск «Скринкастов» вместе с MADE: много Python'а
Теги для поиска: #_python, #_programmirovanie (Программирование), #_gadzhety (Гаджеты), #_istorija_it (История IT), #_tehnologii (технологии), #_computer_science, #_programming, #_smartphones, #_videofon (видеофон), #_blog_kompanii_otus (
Блог компании OTUS
), #_python, #_programmirovanie (
Программирование
), #_gadzhety (
Гаджеты
), #_istorija_it (
История IT
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В наши дни можно легко связаться по видеосвязи практически с любой точкой мира. Но потребовалось много времени, чтобы технология достигла такого уровня. Я покажу, какие решения использовали инженеры в 1988 году, чтобы вы могли не только говорить, но и видеть своего друга или партнера во время разговора.Однажды я увидел на YouTube обзор Sony PCT-15 — это устройство, сделанное в Японии, подключалось к обычной телефонной линии и позволяло не только разговаривать с собеседником, но также отправлять и получать изображения во время разговора. В то время высокоскоростная связь была доступна только для учреждений, военных и правительства, поэтому телефонная линия была единственным возможным способом связи с миром: Источник 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() Теперь вернемся к осциллограмме сигнала. Я могу предположить, что каждый "пик" представляет одну строку изображения, а данные передаются в аналоговой форме: Это был стандартный подход для аналогового телевидения в 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 на изображении являются "виртуальными", они зависят только от частоты дискретизации записанного аудиофайла. Как мы знаем из спецификации, реальное разрешение изображения составляет всего 96x100, но устройство также может передавать изображения в режиме "высокого разрешения" 160x100. Я просил 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/ПОСМОТРЕТЬ СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ =========== Источник: habr.com =========== =========== Автор оригинала: Dmitrii Eliuseev ===========Похожие новости:
Блог компании OTUS ), #_python, #_programmirovanie ( Программирование ), #_gadzhety ( Гаджеты ), #_istorija_it ( История IT ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:59
Часовой пояс: UTC + 5