«Господь всемогущий! Кажется я только что убил мистера Мэя!… Но как бы то ни было, продолжим» (С) Дж. Кларксон
В этой статье я расскажу, как передать видео (ну, почти видео) при помощи звука через воду, используя обычный ноутбук, кусок провода, два джека 3.5 мм и две пьезо пищалки. А так же объясню почему и как это работает, расскажу забавную историю про то, как мы это придумали. А в качестве вишенки на торт, к статье прилагается проект на C# с исходниками, чтобы все, кому интересно, сами могли попробовать, ведь научное знание проверяемо, не так ли?
Если вдруг читатель хочет чуть глубже погрузиться в гидроакустическую тематику, предлагаю ознакомиться с нашими предыдущими публикациями, где мы рассказываем о наших проектах походя раскрывая сложности передачи информации через воду:
Подводный GPS с нуля за год
Подводный GPS: продолжение
Навигация под водой: пеленгуй — не пеленгуй, обречен ты на успех
К вопросу о влиянии цианобактерий на речевые функции президента
В общем, нужно усвоить одну простую истину: видео через воду на какие-либо значимые расстояния (ну хотя бы сотни метров) при помощи акустики передать нельзя. Дело в крайне узкой доступной полосе частот и сильной неравномерности затухания разных частот с расстоянием. Плюсом идет шум, многолучевое распространение, реверберация, изменение скорости звука в среде от плотности (то есть от давления, температуры и солености), эффект доплера, который кстати работает не совсем так, как в радиосвязи.
Предельные значения скоростей для самых современных гидроакустических модемов находятся очень далеко от того, чтобы ими можно было передавать видео. Насколько мне известно, рекорд принадлежит компании EvoLogics и составляет 62.5 kbps с заявленной максимальной дистанцией 300 метров. Более того, слова о невозможности передачи видео звуком через воду (на разумные дистанции) как раз и принадлежат Константину Георгиевичу, основателю и руководителю EvoLogics.
В бытность мою научным сотрудником НИИ Гидросвязи, тогда еще абсолютно несмышленым, мне хотелось великих свершений,
Погружение в те воспоминания вызывает во мне противоречивые чувства. Тогда казалось, ничто и никто не могло нас остановить: мы выбили у директора китайский фрезерный станок для макетирования изделий, собирали нормобарические корпуса из голландских водопроводных труб Van De Lande, производителю которых даже писали письмо на тему: “А не проверяли ли вы случайно, какое внешнее давление выдерживают ваши трубы?”. За собственные средства собирали макеты в контейнерах для завтраков и втайне от руководства самовольно выезжали на испытания, по коллегам и родственникам собирая ледобуры, санки, даже в складчину покупали китайскую ПВХ лодку в Ашане. Оглядываясь назад, я чувствую как сердце мое наполняется ужасом, ностальгией и трепетом.
Справедливости ради стоит отметить, что все это время мы получали огромную поддержку от некоторых наших руководителей – словом и делом, а в последствие все наши поделки легализовались в ОКР (имеется в виду Опытно-Конструкторская Работа а не Обсессивно-Компульсивное Расстройство), который даже был представлен на международном военно-морском салоне в 2013 году. Да-да, мы возили на салон наши водопроводные трубы, выкрашенные StDmitirev собственноручно в ярко-оранжевый! Вот они, в чемоданчиках:
Как-то раз мой друг и коллега StDmitirev в разгар беседы о спектрах и спекрограммах произнес сокраментальную фразу:
«А вот, было бы прикольно сделать такую систему: подводник сидит в подводной лодке и смотрит в монитор, на котором плавно движется спектрограмма, на которой как пальцемдругого подводникапо запотевшему окнудругой подводной лодкинаписаны буквы и цифры».
Все посмеялись, поразвивали эту тему, вроде бы даже в тот же день нарисовали смайлик на спектрограмме и послушали как он звучит. Мне же страшно захотелось это привести к практическому виду.
Сейчас уже сложно вспомнить (дело было в далеком 2012 году). В моем распоряжении был рабочий компьютер с веб-камерой, разные артефакты-антенны и специальное “ведро гидроакустическое повышающее” (ВГ-1-П) с водой. Повышающим его назвали из-за того, что я всякому начальству показывал в нем работу разных макетов оборудования, что привело к моему повышению до старшего научного сотрудника.
Я не стеснен никакими обязательствами, сам метод давно опубликован в открытом доступе, а результаты многократно докладывались на конференциях.
Итак, рассказываю, как на духу – как передать видео через воду:
Как сформировать сигнал?
Мы помним, что идея основывается на «рисовании на спектрограмме», то есть, передаваемая картинка – это есть спектрограмма сигнала. Для преобразования сигнала из временной области в частотную и обратно удобно применять (ну, например) преобразование Фурье, точнее быстрое преобразование Фурье, для краткости называемое БПФ или, что более привычно FFT (Fast Fourier Transform).
Так как нам надо превратить картинку (кадр видео) в звуковой сигнал, который можно было бы излучить звуковой картой любого компьютера, то для формирования мы очевидно воспользуемся обратным преобразованием – IFFT. Мы будем излучать картинку по столбцам, а сигнал для одного столбца будет формироваться как на следующей схеме:
=
Допустим, что размер окна FFT у нас равен N и есть массив размером N. Если считать его спектром сигнала, то его нулевой элемент соответствует нулевой частоте (постоянка), а отсчет с индексом N-1 соответствует частоте дискретизации Sample Rate. Нужно выбрать такие размеры кадра изображения и размер окна FFT, чтобы с одной стороны все это хоть как-то было похоже на видео (передача одного кадра занимала бы разумное время), а с другой — используемая полоса частот была адекватной в принципе и адекватной доступному оборудованию. Теперь, если с какого-нибудь понравившегося отсчета мы (снизу вверх на схеме) впишем значения яркостей столбца картинки (Frame coloumn), а потом выполним обратное FFT, то на выходе получим сигнал, кодирующий один столбец изображения. Теперь нам остается таким же образом сформировать сигналы для остальных столбцов изображения и поочередно излучить их при помощи звуковой карты.
Стоит отметить что FFT на выходе дает массив комплексных значений, так вот наш сигнал – это вещественная часть. Само собой, получившийся сигнал по столбцам приводится к 16-ти битным знаковым целым (в таком виде обычно хранят цифровой звуковой сигнал) и нормализуется.
На самом деле в начале картинки я еще вписываю несколько столбцов максимальной яркости, в последствии, на стороне приемника это позволит определить АЧХ приемопередающего тракта (и канала передачи), которая будучи инвертирована и немного сглажена поможет нам улучшить принимаемый кадр.
На мой взгляд проще всего продемонстрировать устройство передатчика куском кода, вот он (метод Encode класса Encoder):
public double[] Encode(Bitmap source)
{
Bitmap frame;
if (source.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed)
frame = Grayscale.CommonAlgorithms.RMY.Apply(source);
else
frame = source;
if (!frame.Size.Equals(frameSize))
frame = resizer.Apply(frame);
double[] samples = new double[fftSize * frameSize.Width];
alglib.complex[] slice = new alglib.complex[fftSize];
double maxSlice;
int sampleIndex = 0;
int colsCount = frameSize.Width;
int startRow = startLine;
int endRow = startRow + frameSize.Height;
for (int x = 0; x < colsCount; x++)
{
for (int y = startRow; y < endRow; y++)
slice[y].x = (frame.GetPixel(x, frameSize.Height - (y - startRow) - 1).R / 255.0) * short.MaxValue;
for (int y = 0; y < fftSize; y++)
slice[y].x *= randomizerMask[y];
alglib.fftc1dinv(ref slice);
maxSlice = double.MinValue;
for (int y = 0; y < slice.Length; y++)
if (Math.Abs(slice[y].x) > maxSlice)
maxSlice = Math.Abs(slice[y].x);
for (int i = 0; i < slice.Length; i++)
{
samples[sampleIndex] = (short)Math.Round(slice[i].x * short.MaxValue / maxSlice);
sampleIndex++;
}
}
return samples;
}
Код, естественно, ни на что не претендует и писался впопыхах чисто для демонстрации.
Так что на счет скорости передачи?
И как ее оценить? Нам удалось (
Например, если частота дискретизации 96 кГц, а размер окна FFT мы примем равным 512, на вход передатчику будем подавать картинки размером 120 х 120 пикселей (8 бит на пиксель), то время, которое потребуется для передачи одного кадра изображения составит:
120*512/96000 = 0.64 секунды
Битовая скорость вроде бы должна составить:
120х120*8 / 0.64 = 180 000 бит в секунду!
Как я покажу ниже, очень легко попасть в такое заблуждение. Что же тут не так? Ведь все так просто и изящно!
На самом же деле подобный расчет скорости неприменим к данному методу, так же, как например, он неприменим к аналоговому телевизионному сигналу, сколько там бит на пиксель? =) А как на счет простейшего детекторного приемника? =))
Описанный метод передачи по сути АНАЛОГОВЫЙ и понятия «бит» и «пиксель» к нему не применимы – можно в той же картинке, теоретически, взять не 8 бит на яркость пикселя а 16 и «скорость» автоматически возрастет двукратно.
Самое время показать самые первые результаты нашего «прорыва»:
Картинка выше была получена нами зимой 2012 года на реке Пичуга. Дистанция передачи составила 700 метров. Да, увы, мой дорогой читатель, это совсем не HD и даже не тянет на самый позорный CamRip. Не помню уже кто, но кто-то очень точно подметил, что все наши «видео» похожи на передачу сигналов о помощи с погибающей планеты.
Что примечательно, с натяжкой этот можно характеризовать как некое подобие OFDM – данные передаются на ортогональных поднесущих, что означает хорошую устойчивость к тональным и другим узкополосным помехам – в этом случае искажаются отдельные «строки» картинки. Импульсная же помеха – наоборот, искажает один или группу столбцов. Характерная «полосатость» картинок вызвана т.н. частотно-селективным замиранием вследствие многолучевого распространения, но об этом я расскажу как-нибудь в другой раз.
Как устроен приемник?
Сразу оговорюсь, что для того, чтобы попробовать этот метод в ведре или даже в небольшом бассейне, будет вполне достаточно двух часовых пьез (такие круглые) с припаянным к ним разъемом для звуковой карты. Для передатчика можно взять достаточно длинный (2-3-4-5 метров) и неэкранированный кабель, загерметизировав сам пьезоэлемент цапон-лаком или небольшим слоем герметика – на несколько раз точно хватит. Получившуюся гидроакустическую антенну (не, ну а что?) вставляем в разъем для наушников.
На фото внизу разные пьезы, оказавшиеся под рукой на момент написания статьи. Все показанные пьезоэлементы вполне годятся для «попробовать» и обычно есть в любом
Для приемника лучше взять экранированный микрофонный кабель с таким же разъемом и замазанной герметиком или лаком пьезой на конце. Эту антенну вставляем в разъем для микрофона.
Для экспериментов на водоеме в качестве передатчика лучше взять какое-нибудь пьезокольцо и подавать на него усиленный (усилителя на TDA2030 с правильно намотанным трансформатором хватит на несколько сотен метров в хорошем водоеме
Итак, вернемся к приемнику, точнее к его софтовой части
Самое главное в связи – это синхронизация и определение наличия полезного сигнала. В нашем примере детектирование производится по энергии в полосе: определяются места где она резко возрастает (начало кадра) и где резко спадает (конец кадра), с условием что от фронта до спада должно быть не меньше длительности кадра.
При всей своей простоте работает на удивление неплохо.
Данные со звуковой карты собираются по FFTSize отсчетов, над ними сразу выполняется FFT и в виде отдельных «слайсов» они хранятся, дожидаясь того момента, когда будут обработаны процедурой поиска, вот ее код (метод Search в классе Receiver):
private void Search()
{
int sliceIndex = 0;
int frameWidth = encoder.FrameSize.Width;
int minSlicesToSearch = Convert.ToInt32((frameWidth + 5) * 2);
int sliceSize = encoder.FFTSize;
double weight;
int lastRisePosition = 0;
int prevRisePosition = 0;
while ((slices.Count > minSlicesToSearch) && (sliceIndex < slices.Count))
{
weight = 0.0;
for (int i = 0; i < sliceSize; i++)
weight += Math.Abs(slices[sliceIndex][i]);
double ratio = weight / previousWeight;
if ((ratio >= risePeekRatio) && (sliceIndex - prevRisePosition > frameWidth))
{
prevRisePosition = lastRisePosition;
lastRisePosition = sliceIndex;
if (lastRisePosition + (frameWidth + 5) < slices.Count)
{
double[][] samples = new double[frameWidth + 5][];
for (int i = 0; i < frameWidth + 5; i++)
{
samples[i] = new double[sliceSize];
Array.Copy(slices[lastRisePosition + i], samples[i], sliceSize);
}
slices.RemoveRange(0, sliceIndex);
lastRisePosition = 0;
if (FrameReceived != null)
FrameReceived(this, new FrameReceivedEventArgs(encoder.DecodeEx(samples, 5)));
lastRisePosition = sliceIndex;
}
}
sliceIndex++;
previousWeight = weight;
}
Interlocked.Decrement(ref isSearching);
}
А вот кусок кода, который отвечает за декодирование картинки (Encoder.DecodeEx):
public Bitmap Decode(double[] samples, int measureCols)
{
int colCount = samples.Length / fftSize;
if (colCount == frameSize.Width + measureCols)
{
int rowCount = frameSize.Height;
Bitmap temp = new Bitmap(colCount, rowCount);
double[] slice = new double[fftSize];
alglib.complex[] sliceC = new alglib.complex[fftSize];
int samplesCount = 0;
byte component;
int decodeStart = startLine;
int decodeEnd = startLine + rowCount;
double maxSlice;
for (int x = 0; x < colCount; x++)
{
for (int y = 0; y < fftSize; y++)
{
slice[y] = samples[samplesCount];
samplesCount++;
}
alglib.fftr1d(slice, out sliceC);
maxSlice = double.MinValue;
for (int y = decodeStart; y < decodeEnd; y++)
if (alglib.math.abscomplex(sliceC[y].x) > maxSlice)
maxSlice = alglib.math.abscomplex(sliceC[y].x);
int offset = temp.Height + decodeStart - 1;
for (int y = decodeStart; y < decodeEnd; y++)
{
component = (byte)(255.0 * alglib.math.abscomplex(sliceC[y].x) / maxSlice);
temp.SetPixel(x, offset - y, Color.FromArgb(component, component, component));
}
}
return temp;
}
else
{
throw new ApplicationException("Specified array length error");
}
}
А сейчас предлагаю посмотреть на результаты экспериментов по передаче «видео», проводившихся в разное время в разных водоемах.
Обе картинки (ниже) были записаны на международном военно-морском салоне в СПб в 2013 году на нашем (тогда) стенде через два ноутбука и аквариум.
Разобрать, что написано на бейдже не представляется возможным
А вот два «видео» записанных нами в одном из заливов Ладожского Озера в Карелии, они являются своего рода рекордом для данного метода (просто дальше мы никогда не пробовали и вряд ли будем) – первое из них получено на дистанции 500 а второе аж 1000 метров:
Передача видео через воду, дистанция 500 м (файл 8.7 мБ)
Поскольку «видео» писалось в реальном времени при помощи веб-камеры, то в кадр попадали разные странные вещи. Будет очень интересно, если кто-нибудь угадает и напишет в комментарии, что находится на заднем плане в последнем «видео» ).
В подтверждение того, что метод давным-давно опубликован — наша статья аж за 2013 год
Для захвата изображения с веб-камеры я использовал замечательную библиотеку AForge.
Функции работы с комплексными числами и FFT используются из прекрасной библиотеки AlgLib.
И, как я и обещал, весь проект на C# (VS2012) прилагается к статье в качестве материала для «домашней» работы. Для удобства отдельно лежит проект и бинарные файлы.
В демке предусмотрена возможность изменения (перемещения) занимаемой полосы частот а также гамма-коррекция выходного кадра (все можно менять в реальном времени).
P.S.
Я давно не брал в руки C# и очень сложно найти время в рабочем графике, поэтому заранее извиняюсь за сумбурность и поспешность кода.
P.P.S.
Кусок провода, два джека и две пьезы к статье не прикладываю – на всех не хватит.
Errata и Appendix
— В некоторых звуковых картах на входе есть ФНЧ который трагически обрезает все выше ~15 кГц (зачем???).
— По умолчанию демо-проект работает с частотой дискретизации 96 кГц, но не все современные звуковые карты ее поддерживают (Почему???). Если оборудование не может 96 кГц то нужно установить в настройках 48 кГц, если нет, то 44100 уж точно поддерживается везде, однако, длительность передачи одного кадра будет соответственно больше.
Вот список ноутбуков и звуковых карт, которые можно считать оборудованием юного гидроакустика:
- Lenovo ideapad Y510P со звуком JBL
- Asus N55S
- Asus K501U
- внешняя звуковая карта Sound Blaster X-Fi Surround 5.1 (model no. SB 1095)
Комментарии (65)
Bookvarenko
06.12.2017 09:48Это шикарно! Теплота и ламповость идеи и реализации зашкаливают! Сразу вспомнился PixiScope Алексанра Золотова. www.warmplace.ru/soft/pixiscope/index_ru.php
StDmitirev
06.12.2017 18:37Была шальная мысль добавить к методу пару тёплых ламповых усилителей, но мы решили воспользоваться современными средствами)))
dimonoid
06.12.2017 10:51А если сжать и добавить коды восстановления? Использовать несколько микрофонов?
Alexeyslav
06.12.2017 11:51+1Это всё не спасёт от полного замирания сигнала на некоторых частотах.
Хотя это похоже на современный WiFi, 3G где вместо одного широкого канала по сути делают очень много параллельных узкополосных — такие неприятности как узкополосное замирание таким каналам не страшны — просто информация по некоторым каналам будет передана повторно по другим. И помехи как правило не перекрывают весь частотный диапазон — всегда остаются некоторое количество каналов помех в которых нет. В итоге от наличия помех и препятствий страдает только скорость передачи данных а не отваливается канал полностью.Bronto3
07.12.2017 00:20вы ещё забыли привести в пример ADSL — там и упреждающее кодирование есть (FEC).
JasterOne
06.12.2017 11:59Улучшите метод и можно запускать в производство камеры для рыболовов… :)
Сейчас используются проводные, что не удобно при ловле летом с берега.StDmitirev
06.12.2017 12:37+1Не совсем понимаю как это поможет. Камеру же всё равно надо как-то возвращать назад и, наверное, вы её будете привязывать.
amarao
06.12.2017 14:54Вопрос: а почему передача односторонняя? Почему бы не подстраиваться под специфику канала связи, передававая в обратную сторону коррекцию?
Например, раз в Н времени передавать две картинки (шахматку и инверсную шахматку). Получатель передаёт отправителю коррекцию (что надо поправить чтобы картинка была похожа на картинку). На выходе более точная картинка, компенсирующая искажения.
Далее: почему видео идёт несжатым потоком? Почему бы вместо видео не передавать цифровой сигнал? ADSL так делает же, и docsys.AlekDikarev Автор
06.12.2017 15:27Канал меняется очень быстро. Смысл есть отстраиваться от неравномерности АЧХ канала — что и сделано по пяти белым столбцам.
Видео несжатым потоком потому что это аналоговая передача. Декодер — глаза и человеческий мозг. Если что-то сжать и так передавать то ничего работать не будет.
На самом деле для передачи цифровой информации мы (и другие команды, которые этим занимаются) применяют другие методы.amarao
06.12.2017 16:49Я хочу сказать, что при том, что мозг умеет «восстанавливать» картинку по искажению, любой формат с допустимыми потерями позволит передавать больше, по-прежнему перекладывая на мозг человека задачу восстановления искажений.
Просто подумайте: если вы можете передавать сколько-то пикселов в секунду (утрируя, ч/б, т.е. один бит на пиксел) с 20% ошибками, то:
а) либо можно пытаться ошибки восстановить (-40% полосы, как минимум), либо
б) передавать повреждённые данные в таком виде, который допускает повреждения.
Интуитивно я могу сказать, что если вы передали несжатое фиговое видео, то через тот же канал можно передать сжатое видео в лучшем качестве. Пусть даже и с таким же числом огрехов.StDmitirev
06.12.2017 18:35+1Тут ситуация как с водолазной телефонией: или аналоговая передача со всеми плюсами и минусами (коих гораздо меньше чем при передаче видео), или цифровая передача, но на неё (в большинстве случаев) не хватит пропускной способности канала.
Также и с видео. Цифровые методы тут не подойдут, ибо сразу потянут за собой помехоустойчивые кодирования и драматическое снижение скорости передачи.
Можно, глянуть в сторону методов сжатия, что применяются в аналоговом видео, но не думаю, что они дадут существенное увеличение разрешения или качества. Хотя, если вдруг у кого возникнет желание поэкспериментировать и описать результаты, то с радостью почитаем о полученных результатах.amarao
06.12.2017 19:28Вы мыслите в рамках парадигмы — «цифра, значит точно». А бывают цифровые каналы без «помехоустойчивого кодирования», т.е. цифры оно передаёт, но «как придётся». Дальше повех этого используется любой видеоформат, допускающий искажение. Основное, что хочется — это:
а) использовать жестокий блюр для удаления мелочи
б) все фичи современных видеокодеков (передача только изменений, движение и т.д.)
Компрессию как таковую использовать не получится (т.к. она чувствительна к искажениям), но хотя бы чистку картинки и удаление кусков, которые не меняются (после процессинга) — сделать можно пытаться. На выходе будет возможность передавать большее разрешение в ту же полосу. И, возможно, больше FPS'ов.AlekDikarev Автор
06.12.2017 20:30Можете считать что метод из статьи это как раз «цифра как придётся»). Нам к сожалению некогда заниматься развитием данного способа — поэтому мы и выложили исходники, в AForge (которая используется в демке) очень богатый набор для обработки изображений — если есть желание все из описанного вами можно реализовать.
yetanotherman
06.12.2017 21:07+1Как-то сильно безапеляционно звучит «тут вам не радио», «цифра не подойдет». Вот про это действительно интересно было бы почитать — какие такие там такие особенности среды. Зря автор не привел характеристики канала — какая там полоса возможна, какого SNR стоит ожидать, чем там неоднородности среды или чем многолучевое распространение в воде хуже, чем в других средах.
А так читать про то, как к пьезе прикрутили FFT — оно конечно увлекательно, но всем и так понятно, как это сделать.
Цифра в радио для голоса прижилась как раз потому, что выигрывает у аналога по ширине канала и помехозащищенности.AlekDikarev Автор
06.12.2017 21:14Видите ли, это гиктаймс а не научный журнал да и согласитесь — невозможно в одной статье охватить такую широчайшую тему как гидроакустический канал. Многим было бы скучно читать формулы и графики, но если такая потребность есть, то в будущем мы будем иметь это в виду.
«Цифра не подойдёт» — это ваши слова, во всех «взрослых» системах у нас широкополосная цифровая передача, а здесь просто забавная игрушка которую несложно повторить дома и модифицировать.yetanotherman
06.12.2017 21:31Отнюдь не скучно. Буду очень рад, если будет такая статья.
«Цифра не подойдет» — возможно, не понял вашего посыла.
AlekDikarev Автор
06.12.2017 21:45Ок, с оказией напишем про канал. Мой коллега имел в виду что конкретно в этом методе цифра не поможет.
AlekDikarev Автор
06.12.2017 21:18И кстати да, приведённые «видео» — это же буквально спектр сигнала из настоящей «подводы» (с вырезанными промежутками тишины между кадрами), и можно видеть как он меняется в реальном времени — все помехи, полосчатость из-за частотно-селективного замирания
yetanotherman
06.12.2017 21:36Да, у меня именно поэтому сомнения и возникли — алгоритмически ведь можно побороть это даже в аналоге, добавив в схему обратную связь. Можно порезать спектр и склеить назад, избегая мертвых участков — и это только первое, что на ум приходит. Такая коррекция, кажись, в телефонных модемах применялась — в каких-то зюхелевских пропиретарных расширениях — если я ничего не перепутал.
AlekDikarev Автор
06.12.2017 21:49Да, можно избегать задавленных полос, но обратная связь не сильно поможет — канал может меняться очень быстро — по факту даже ща время одного кадра, а если дистанция ощутима (скорость звука в среднем 1450 м/с) — обратная связь всегда будет опаздывать и будет бесполезной. Плюс в воде нельзя практически получить полный дуплекс, тем более для широкополосного сигнала.
seri0shka
06.12.2017 18:44-1Извините, немного не в тему. Давно появилась идея, всё никак не проверю. Можно ли аналоговое чёрно-белое видео записать-воспроизвести через звуковую карту? Насколько помню, частота строк в тв сигнале 15625 Гц, при хорошей частоте дискретизации должно быть вполне рабочее решение. Понятно что на проктике это никому не нужно, но всё-таки.
Bluewolf
06.12.2017 19:17+1Это частота следования каждой новой строки, т.е. передается 15625 строк в секунду. Пиксельная частота (хоть это и не совсем корректное слово для аналогового) сигнала гораздо выше (единицы мегагерц). Соответственно, аудиокарты и близко не хватит.
Bookvarenko
06.12.2017 19:37-1На самом деле хватит. Я ссылку кидал на сайт warmplace.ru Там покопай и будет тебе щасте. Даже на патефонную пластинку можно записать это ваше видео.
Bluewolf
07.12.2017 10:43Для стандартного видеосигнала — строго не хватит.
Есть еще SSTV — для него хватит, но это не то, что было в исходном вопросе.Bookvarenko
08.12.2017 09:55В исходном вопросе смешаны в кучу кони и люди. Если отбросить шум про частоты, дискретизацит и прочее и посмотреть на суть вопроса — можно ли аналоговое ч-б видео записать-воспроизвести через аудиокарту, то ответ — да, можно, но не просто.
port443
06.12.2017 20:49Странно, что никто не вспомнил про это: youtu.be/M9xMuPWAZW8?t=5m25s
foxrus87
08.12.2017 11:26вроде приложение на телефоне было. Распечатываешь такой «звук» на компе, а потом проводишь телефоном (включенной камерой) и звук воспроизводится. Одно время нас это веселило на работе.
AlekDikarev Автор
08.12.2017 12:57Не, это немного не то. Приложение просто рисует спектрограмму или читает ее или воспроизводит. В статье кадр изображения — спектр.
leshabirukov
06.12.2017 23:06У меня вопрос по гидроакустике: вот аквалангист не может определить направление на звук, потому что скорость звука в воде другая и стандартный механизм, который есть у мозга не срабатывает. Такая идея: ловить сигнал микрофонами в ушах, и перекодировать звук, поменяв все разницы задержек с водных на воздушные. Как вы думаете, сработает?
StDmitirev
06.12.2017 23:39+1Может и сработать, но точность определения будет сильно зависеть от ситуации и от самого водолаза))) Придётся каждого поверять и на лоб печать ставить)))) Вообще, для определения направления под водой (применительно к водолазам) есть разные решения. Сразу скажу своё мнение, что возлагать на водолаза задачи по определению направления на слух — негуманно и неудобно. У него под водой и других задач хватает и всё, что поддаётся автоматизации надо автоматизировать, в разумных пределах.
Собственно, какие бывают варианты… Бывают варианты, когда на водолаза ставят два гидрофона и блок для обработки сигналов, определяющий примерное направление на источник звука и выдающий команды типа: справа, слева, по центру (а вот спереди или сзади уже не определит, да и дистанцию не скажет).
Есть, например водолазный акустический компас нашей разработки, указывающий направление на приводной маяк (с точностью несколько градусов) и дистанцию до него (с точностью до метра), но там уже используются сложные сигналы и относительно сложная антенна.
В самом минималистичном варианте, на водолаза можно повесить один гидрофон, но самому водолазу, для определения направления на приводной маяк, (или источник сигнала) придётся некоторое время поплавать кругами. Плюс понадобится довольно приличный MEMS IMU.
Ну и можете прочитать статью про подводный GPS (в самом начале статьи есть ссылки).
MShekunov
08.12.2017 11:26Интересует железо!!! Усилитель мощности, приёмная часть и т.д. А особенно, как согласовывали пьезоэлемент со средой!?
AlekDikarev Автор
08.12.2017 11:33Как я упоминал в статье, чтобы просто попробовать в ведре/ванне/небольшом бассейне — ничего кроме часовых пьезопищалок и звуковой карты вам не нужно. Если хотите попередавать в пруду/озере — можно брать любой удобный усилитель типо TDA — на малые дистанции (ну, скажем метров 100) даже трансформатора не надо, но часовой пьезы уже может не хватить — придется искать кольцо. Самый простой вариант его загерметизировать — тщательно промазать герметиком (берите «жидкую резину» kimtek правда стоит под 900 р за флакон). На приемную сторону очень важен предусилитель с band-pass ну или хотя бы ФВЧ ибо обычно ниже 10 кГц в водоемах достаточно шумно. Для больших дистанций и глубин хоббийными силами вопрос качественно решить не получится.
dragonnur
08.12.2017 14:38Для больших дистанций и глубин надо бы в магнитострикционный излучатель. Не знаю, получится ли с магнитным клапаном от дизельного впрыска, надо бы конструкцию пошурудить
AlekDikarev Автор
08.12.2017 14:57Магнитострикционные преобразователи на большие дальности и глубины не используют из-за слишком малой мощности, а применяют пьезокерамику, но там уже многое решает конструкция антенн и аналоговый тракт. Хоббистам это не под силу и не нужно. Если вы хотите поиграться в небольших водоемах вам вполне хватит почти любой TDA (ну, например TDA2030) подключенной напрямую к кольцу без трансформатора. Клапаны и прочие такие штуки позволят сделать излучатель на сотни и десятки герц, опять же для небольших водоемов это никто не применяет. И вообще на таких частотах никто не работает )
dragonnur
08.12.2017 15:10Вам о чёмнть говорит ВУС 472200? ;) я просто не соображу на пальцах, есть ли возможность создать разгруженный магнитострикционный излучатель из электромагнитного клапана (его мне проще всего достать, потому что лень возиться).
AlekDikarev Автор
08.12.2017 15:28Никак нет тащмайор )
По теме: В лучших домах филадельфии используют пьезокерамику — стоит она совсем не дорого и сейчас пьезоэлементы почти любые можно купить на али за мелкий прайс. С магнитострикционными излучателями практически не имел дела за их бесполезностью кроме как в измерительном бассейне что-нибудь поделатьdragonnur
08.12.2017 15:34Даже если б я был с такими звёздами — был бы кап-три. Но я всего лишь лийтинант (с) Покровский и даже не страшный. Просто магнитострикционные излучатели нормально работают при внешних давлениях в десяток МПа. Можно, конечно, и пьезу такую запилить, да геморно
StDmitirev
08.12.2017 15:34Вполне говорит, но может тогда есть возможность где-нибудь отвинтить готовую антенну?)))) Про магнитострикционные излучатели с ходу ничего не скажем, ибо не используем. Есть подозрение, что стоит поискать в патентах. Наверняка кто-то думал в эту сторону и даже что-то патентовал.
dragonnur
08.12.2017 15:37От меня ближайшая такая ГА антенна — миль триста, да и то по прямой в т.ч. по суше :)
И, да, спасибо за наводку.StDmitirev
08.12.2017 15:43Тогда проблема. Разве что, могу магазин порекомендовать, где пьезокерамику можно купить. Да и не только её)
dragonnur
09.12.2017 11:51А и не откажусь, и даже спасибо заранее скажу.
StDmitirev
09.12.2017 12:59www.quartz1.com
Ищите по запросу «пьезо». Сразу кину ложку известной субстанции в сторону магазина. Бывают случаи, что могут прислать не совсем то, что надо, и обмен на нужно затягивается почти на вечность. Потому, лучше покупать лично) А так, уникальное место, где можно разные интересные штуки добыть)))
MShekunov
09.12.2017 18:29Я заказываю в «Аврора-Элма». У них большой выбор элементов в каталоге. Но с физ. лицами не работают… И почему-то частота резонанса заказываемых мною элементов чаще всего +5%. Это укладывается в допуски, но всё же.
StDmitirev
09.12.2017 18:46Аврора-Элма — одни из немногих производителей, осколок просто гигантского завода, разорённого в «святые 90-е»©™. Есть ещё НИИ Элпа, а больше, честно говоря, и не вспомню. Частота, скорее всего, обусловлена технологией изготовления на последних этапах производства и/или настройкой используемого измерительного оборудования. Например, на одном из заводов, производящих кварцевые генераторы, заказчики иногда приезжали со своими частотомерами или согласовывали в какую сторону должно быть отклонение по частоте. Оказывалось, что частотомер заказчиков и частотомер на заводе дают довольно разные показания. Хотя оба поверены и с кучей штампов)
Ну а на магазин я сослался для тех, кто хочет купить пьезокерамику для своих нужд и без больших затруднений.AlekDikarev Автор
09.12.2017 20:35А ещё есть аврора — бинииб, другой осколок огромного завода великой древней цивилизации) они тоже делают керамику. Зажигалки там для газовых плит и пищалки для пожарной сигнализации
San_tit
Согласен, про некорректность подсчёта битрейта, но что мешает подобным образом передавать уже цифровой сигнал?
П.С. широкополосной (очень) помехоустойчивой передачей (правда в радио) занимались мои коллеги, если интересно, могу дать контакты.
StDmitirev
Как говорит один мой коллега:«Передать-то можно что угодно, но вот принять — это проблема.» В воде или не получается большой скорости передачи, или, если получается, вероятность ошибки стремится к единице. Плюс доступная полоса частот намного меньше чем в радиоканале (буквально несколько десятков килогерц).
San_tit
Вероятность ошибки 1 — это отлично :-) куда хуже, когда 0.5 :-) про передачу, естественно они и принимали вполне успешно.
AlekDikarev Автор
Вообще мы сами передаём вполне успешно, широкополосно и помехозащищенно, только с малой скоростью. В гидроакустическом канале все несколько иначе нежели в радио
San_tit
Ни в коем случае не посягаю, но иногда случайные идеи из других областей приводят к прорыву. Тут, видимо, не тот случай, конечно :-)
Удачи в исследованиях
vin2809
Зачем автору контакты, если он даже не использовал опыт своих коллег (судя по названию стенда с первой иллюстрации).
AlekDikarev Автор
А расскажите подробнее, что вы имеете в виду?)
vin2809
Я имел ввиду, что автор имеет отношение к ОкеанПрибор, в котором и проводились работы по передаче информации на большие расстояния. Поэтому не стоит мне минусовать…
StDmitirev
Про такие эксперименты мы знаем, также как и знаем тех кто таким занимался, но передача данных на большие расстояния и подобные эксперименты с видео — вещи сильно разные.
Скорость передачи данных при передаче на 100-200-300 километров будет столь низкой, что передача одного кадра видео несколько затянется. Это будут даже не минуты.
AlekDikarev Автор
Во-первых, технически не Океанприбор, а НИИ Гидросвязи. Во-вторых не просто эксперименты, а даже серийные системы. В-третьих люди, которые стоят за этим — наши учителя и мы их конечно же знаем. С чего вы взяли, что мы не использовали опыт? — мы учились у них. Как вы сравниваете шуточный метод передачи картинки (на 1 км) с системами, передающими цифровые данные на десятки и сотни километров? И чем вызван ваш негатив?
vin2809
Извините, если вызвал именно негативные чувства, я просто хотел направить в нужное русло, а сама задумка превосходная.