Русский
Русский
English
Статистика
Реклама

Зрение

Российские учёные создают устройство, которое позволит видеть кожей

18.08.2020 18:15:11 | Автор: admin


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

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

Идея сенсорного зрения не нова, при обзоре литературы мы нашли статью 1969 года в журнале Nature, где экспериментально доказали, что изображения, генерируемые на спине человека с помощью матрицы из множества вибраторов, могут распознаваться. В ходе этого эксперимента человек мог прочесть буквы и даже различать силуэты. И эта работа вдохновила меня на идею разработки прибора для незрячих, рассказал Дмитрий Шитц, заведующий лабораторией оптических излучений научно-технологического парка Фабрика Балтийского федерального университета имени И. Канта.

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

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

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

На данном этапе мы научились строить 3D-карту удаленности предметов: нами создана специальная программа для обработки изображения со стереокамеры, которая также умеет разбить это изображение на участки-пикселы и присваивать каждому из них значение удалённости, отметил Шитц. По его словам, отдельной и не менее сложной задачей проекта является разработка контроллера и виброматрицы с хорошим разрешением.

Технология сенсорного замещения была разработана в 60-х годах XX века американским нейрофизиологом Полом Бах-у-Рита. Она опирается на свойство нейропластичности мозга, которое позволяет отдельным зонам мозга меняться под действием опыта, а также восстанавливать утраченные связи после повреждения или вырабатывать новые связи. На практике это позволяет научиться заменять один способ восприятия другим.

Схожая технология уже применяется в России. В частности, проект vOISe vision обучает незрячих людей ощущать окружающее пространство с помощью звука. Регулируя громкость и высоту по определённому алгоритму устройство позволяет воспринимать не только глубину пространства и очертания объектов, но и различать полную картину пространства в чёрно-белом виде.

Об этой и других технологиях читайте в нашем блоге на Хабр: Реабилитационная индустрия России.

По материалам Балтийского федерального университета имени Иммануила Канта. Фото: Elia Pellegrini.
Подробнее..

Как мы воспринимаем цвет. Занимательные факты. Просто об очень сложном

30.08.2020 20:06:30 | Автор: admin
image
Фото сетчатки в разрезе с электронного микроскопа.

Дорогие читатели, в этой статье о цвете я не буду приводить аналогии с цифровым фотоаппаратом и фотошопом для лучшего понимания физиологии зрения, как не делал этого и в прошлой статье О разрешении нашего зрения. Такой приём, при кажущемся удобстве, только усложнит картину мира и запутает вас. Буду вести рассказ последовательно и в меру сложно.


Предисловие: краткая теория цвета и света.


image
Видимый диапазон.

Свет это электромагнитные (ЭМ) волны. Из всего разнообразия ЭМ излучения, как видно на картинке выше, наши глаза регистрируют только очень маленькую часть спектра.

Цвет характеризуется тремя величинами:
  1. Тон
  2. Насыщенность
  3. Светлота

Тон это разные цвета (разные длины волн): синий, красный, зелёный.
Насыщенность: розовый это ненасыщенный красный.
Светлота: розовый это светло-красный, а бордовый тёмно-красный.

image
Спектр солнечного света.

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

Почему мы видим зелёные растения зелёными? Потому что они поглощают весь видимый свет, кроме зелёной части, которая отражается и попадает на сетчатку.

И последний факт перед погружением в физиологию: быстрее всего наша зрительная система реагирует на длину волны света 555 нм это зелёный цвет с примесью жёлтого. Почему так сложилось? Это вопрос к эволюционной биологии значит, нашим предкам в какой-то долгий период развития было необходимо хорошо различать этот цвет.

На графике ниже можно увидеть максимум чувствительности для дневного света и для сумерек:
image

Начнём с общей структуры сетчатки.


image
И ещё одна схема для закрепления знаний всё то же самое, но вдруг кому-то так удобнее:
image

Обратите внимание на красные стрелочки внизу картинки они указывают путь света сквозь структуры сетчатки. В верхней части схемы показаны рецепторы палочки и колбочки.
Кого-то из вас может смутить то, что свет попадает сначала на нейроны в сетчатке, а потом на сами рецепторы.
Как же так? Должно быть наоборот! скажете вы. Увы, так распорядилась эволюция.

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

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

Итак, сетчатка состоит из трёх типов рецепторов:
  1. палочки(rods),
  2. колбочки(cones),
  3. фоторецепторы(ipRGC).


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

Колбочки содержат пигмент йодопсин в трёх вариациях. Каждый колбочковый пигмент состоит из хромофора (производное ретинола(витамина А)) и опсина. Хромофор во всех колбочках одинаковый, в то время как опсин разный это отличие как раз и задаёт разные спектры поглощения!

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


Процесс поглощения фотона и образования сигнала на выходе фоторецептора фототрансдукция.

При попадании кванта света на фоторецептор в нём происходит распад пигмента и последующий каскад реакций. Рецептор гиперполяризуется от -40мВ до -70мВ. Сигнал на выходе из рецептора не импульсный, а градиентный, т.е. его напряжение зависит от интенсивности света. В результате прекращается передача глутамата от фоторецептора на синапс биполярной клетки и начинается выход нейромедиатора с биполярной на ганглиозную клетку. С ганглиозной клетки выходит импульсный сигнал (потенциал действия ПД), он имеет постоянную амплитуду и длину импульса.
Если на ганглиозную клетку поставить электрод и подключить его к аудио-системе, то при активации этой клетки можно услышать такой сигнал:
youtu.be/ZR7LzRAXNSw?t=94


Пики поглощения колбочек:
коротковолновые(S) 426 нм,
средневолновые(M) 530 нм,
длинноволновые(L) 557 нм.
Обратите внимание на то, что выше указаны именно пики поглощения цвета. Т.е. каждая колбочка реагирует ещё и на соседние цвета с плавным спадом чувствительности.


Колбочки имеют широкие зоны чувствительности со значительным перекрыванием. Например, свет с длиной волны 650 нм (красный) вызовет наибольшую реакцию у длинноволновых колбочек и совсем слабый ответ у средневолновых. Т.е. по аналогии зелёные колбочки реагируют не только на зелёный, но и немного на соседние цвета.

Интересный факт, над которым учёные бились почти два столетия почему при смешении синей и жёлтой красок получается зелёный цвет? Но если взять два источника света, перед одним поставить синее стекло, а перед другим жёлтое, то в результате смешения получится белый! Этот вопрос удалось решить Герману Гельмгольцу.
image
Как читать график выше (смешение пигментов)? Очень важно понимать, что жёлтый в данном случае это не чистый жёлтый с узким спектром в 580 нм, а широкополосный, т.е. это смесь жёлтого с зелёными и красными волнами.
Синий тоже не чистый спектр в 480 нм, а смесь синего с фиолетовым и зелёным.
В результате две смешанные краски или два стекла синего и жёлтого цветов, стоящие друг за другом, поглощают из белого цвета все длины волн, кроме средних зелёных.
Если же взять монохроматические фильтры на 480 нм и 580 нм и поставить их друг за другом, то сквозь них не пройдёт ничего не будет перекрытия спектра!

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

Интересная заметка в книге Глаз, мозг, зрение Дэвида Хьюбела на 179 стр.:
В одной книге, посвященной ткацкому делу, в главе, излагающей теорию цвета, я нашел утверждение, что если вы смешаете в ткани желтые и синие нити, то получите зеленый цвет. На самом же деле получится серый цвет по биологическим причинам.

Ещё немного физиологии
image

Слои нейронов сетчатки:
  1. Фоторецепторы
  2. Горизонтальные клетки
  3. Биполярные клетки
  4. Амакриновые клетки
  5. Ганглиозыне клетки


Горизонтальные клетки отвечают за первичное усиление контраста изображения. Они собирают информацию с нескольких фоторецепторов и образуют первый этап рецептивных полей.

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

Амакриновые клетки так как на сегодня обнаружено более 33 подтипов данных нейронов, не вижу возможности описать их функции в нескольких абзацах. (Если у кого-то из читателей этой статьи будет свежая информация, то я с удовольствием её добавлю)

Ганглиозные клетки основная функция сбор сигнала от предыдущих слоёв нейронов и конвергенция в зрительный нерв. Суммарное количество фоторецепторов сетчатки 100-120 млн будет превращено в 0,7-1,5 млн нервных волокон в зрительном нерве.
Ещё одна важная функция подтипа ганглиозных клеток ipRGC регулирование циркадных ритмов в зависимости от яркости освещения и контроль светового рефлекса зрачка.

Теории цветового зрения


Описание теорий сделаю максимально кратким, потому что подробное изложение потянет на отдельную статью. Кому будут нужны подробности список литературы в конце.

Первую теорию цветового зрения на рубеже 18-19 веков предложили, независимо друг от друга, Джордж Пальмер и Томас Юнг. Она получила название Трихроматическая теория.
Эта теория предполагала наличие трёх типов рецепторов в сетчатке, которые порождают физиологическое ощущение красного, зелёного и синего. Промежуточные оттенки соответственно были истолкованы комбинацией базовых цветов (кардиналов).
Трихроматическая теория очень хорошо объясняет виды цветовой слепоты.

Чтобы понимать механизмы дальтонизма можно прибегнуть к такому эксперименту предположим, у нас есть пациент страдающий монохромазией (все колбочки в его сетчатке имеют только один пигмент, не важно какой). На сетчатку данного человека посылается поток из 100 фотонов с длиной волны 520 нм (зелёный), а после 100 фотонов 650 нм (красный). Наш монохромат не получит само ощущение цвета, но сможет отличить эти цвета по их яркости, так как короткие волны обладают большей энергией и их воздействие на фоторецепторы сильнее.
Если же количество длинноволновых фотонов увеличить, чтобы в итоге они вызывали такое же яркостное ощущение как и коротковолновые, то наш больной уже не сможет увидеть различия в источниках света.
Так происходит потому, что фоторецепторы на выходе из сетчатки выдают аналоговый импульсный сигнал он не способен кодировать информацию о цвете.
Для минимального различия цветовых стимулов в сетчатке должны быть минимум два вида колбочковых пигментов. В этом случае сигнал разных уровней, идущий по разным нервным волокнам, будет в дальнейшем интерпретирован в цвет в зрительной коре.
Так и работают тесты для дальтоников паттерны изображены разными цветами одинаковой яркости.
Ещё раз про вид сигнала это аналоговые импульсы, не двоичный код. Сигнал несёт импульсы одинаковой амплитуды, но при этом может изменятся сама частота импульсации 30 импульсов в секунду или 100.

Трихроматическая теория при всём своём успехе имела ряд недостатков например, она не могла описать, почему при цветовой слепоте цвета никогда не пропадают единично (только красный или только синий) хотя по логике самой теории должно быть именно так. А получается попарное выпадение цветов зелёный вместе с жёлтым или красный и синий.

Примерно в 1870 году на сцену выходит Геринг со своей Опонентной теорией.
Кратко суть теории в том, что она предлагает четыре базовых цвета, а не три. Эти цвета противоположны (опонентны) друг другу:
  • красный/зелёный
  • жёлтый/синий
  • чёрный/белый

После этих строчек некоторые из вас, кто хорошо шарит в фотошопе, уже начали о чём-то догадываться ;)

Сегодня для описания принята Теория двухэтапного цветового зрения или Теория двойной обработки. Её основоположником был Адольф фон Криз. Но свой финальный вид она обрела в 1957 г. благодаря физиологам Лео Гурвичу и Доротее Джеймсон.
Эта теория объединяет две предыдущих показывая, что они не противоречат, а дополняют друг друга.
Благодаря развитию методов исследования в физиологии сейчас мы знаем, что первый этап обработки описывается трихроматической теорией, а второй опонентной.

С развитием молекулярной генетики были установлены пики поглощения для трихроматов:
  • короткие волны 426 нм
  • средние волны 530 нм
  • длинные волны 552 или 557 нм

Что за неразбериха с длинными волнами? Оказывается, возможны генетические различия в формировании пигментов для фоторецепторов, чувствительных к длинным волнам. Это было подтверждено экспериментами по трихроматическому уравниванию.
Да, само ощущение цвета у всех нас немного отличается только по этой причине, но это вариант нормы)
Есть ещё и аномальные трихроматы, у которых имеются все необходимые пигменты, но они синтезируются в сетчатке в совершенно других пропорциях из-за этого тот цвет, который вы ощущаете как синий, аномальный трихромат может ощущать как красный и есть большая вероятность, что и назовёт он его синим, так как в итоге он имеет все три вида пигментов, позволяющих ему просто различать цвета. Таких аномальных трихроматов можно выявить всё тем же трихроматическим уравниванием.

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

  1. разделение света на три базовых цвета Трихроматическая теория
  2. преобразование трёх цветов в три опонентные пары Опонентная теория
  3. интерпретация сигнала в латеральном коленчатом теле ЛКТ
  4. формирование цветового феномена в зрительной коре


Помню, что обещал не приводить аналогий с программами или устройствами, но на этом моменте придётся согрешить) Теория двухэтапного цветового зрения является полным аналогом конвертации цвета из системы RGB в систему LAB в фотошопе:

  • RGB содержит три канала в каждом по одному цвету
  • LAB содержит три канала. Каналы a и b имеют по два цвета, а канал Lightness чёрный и белый

Схема ниже показывает возможную организацию нейронных сетей при переходе от трихроматического этапа к опонентному:


Каков дальнейший путь сигналов из сетчатки после ЛКТ?


До недавнего времени областью зрительной коры, ответственной за распознавание цвета, считалась зона V4.
В 2018 году были проведены исследования по обновлению картирования мозга. Для этого использовались методы объединения данных фМРТ с ретинотопными данными. В результате оказалось, что в коре нет единственного центра, отвечающего за обработку цвета, этим занимаются минимум 5 зон, среди них зона, чувствительная к движению:
  • V1
  • V8
  • VO
  • LOC
  • MT +

Сами механизмы обработки цвета (формирования цветового ощущения) до сих пор детально не описаны.

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

Литература:
Дэвид Хьюбел Глаз, мозг, зрение
Стивен Палмер От фотонов к феноменологии
Баарс Б., Гейдж Н. Мозг, познание, разум
Джон Николлс, А. Мартин, Б. Валлас, П. Фукс От нейрона к мозгу

Ссылки:
www.ncbi.nlm.nih.gov/pmc/articles/PMC6866375
www.cell.com/fulltext/S0960-9822(08)01433-4
iovs.arvojournals.org/article.aspx?articleid=2161180
en.wikipedia.org/wiki/Fovea_centralis
en.wikipedia.org/wiki/Photoreceptor_cell
Подробнее..

Удивительное рядом новые технологии помогли обезьянам распознать буквы на пустом экране

07.12.2020 20:14:08 | Автор: admin

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

От слепоты страдает 40 млн человек по всему миру. Ученые верят, что однажды нейропротезы помогут восстановить функциональное зрение невидящим людям. Идея стимулировать мозг при помощи имплантов для восстановления зрения слепых людей появилась еще в 1970-е годы. Насколько она реальна? Слепота это, как правило, результат нарушения зрительного нерва или сетчатки глаза, ее восстановление напрямую связано с головным мозгом. Ученые испытывают различные методы исправления зрения. И если зрительная кора не повреждена, то ее точечная стимуляция может частично вернуть зрение. В этом случае глаз становится способным видеть простые формы, точки света или фосфены. Так, в ноябре при помощи этого способа удалось заставить слабовидящих людей видеть определенные буквы так, что они даже смогли их нарисовать.

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

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

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

Как происходил эксперимент?


Для проведения испытаний ученые задействовали двух подопытных обезьян L и A. Для начала их научили распознавать 16 букв. За макаками наблюдали в процессе обучения, движения их зрачков на экране компьютера фиксировали трекером направления взгляда.



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

Мощность стимуляции отражалась на точности восприятия:

  • ~12,6 миллиампер подопытные видели хотя бы половину образов;
  • 23 миллиампер потребовалась макаке L для полного распознавания фосфенов;
  • 50 миллиампер потребовалась макаке A для 100% распознавания фосфенов.

На следующем этапе наблюдали за тем, как обезьяны воспринимают буквы при схожих методах воздействия. Только теперь воздействовали не точечно, а микроэлектроды воссоздавали образ букв. Макака L смогла понять 80% букв, вторая A 71%. При переходе к зрительной версии данные эксперименты улучшились на 13% и 17% соответственно.

Зрение, которое можно купить, второй способ


Нидерландская компания Envision адаптировала Google Glass, превратив их в устройство, пригодное для слабовидящих и слепых людей. Очки помогают ориентироваться в пространстве, описывают окружающую обстановку и распознают людей, фотографии которых есть в записной книжке телефона вместе с фото.

Ранее компания разработала приложение с похожим функционалом: оно распознает окружающие объекты, текст и людей. Поэтому коллаборация с Google Glass вышла подготовленной.


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

Подробнее..

Выбор стиля. Оптимизация визуального представления программы

09.11.2020 12:16:47 | Автор: admin

Грубо говоря, очевидно, что некоторые виды форматирования лучше других.
Стив Макконелл, Совершенный код.


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


Содержание




Вступление


Рискуя вызвать резкое неудовольствие со стороны моих коллег, я применяю принципы, в которые верю с какой-то безрассудной односторонностью. Частично я это делаю в силу того, что в отдельных случаях полезно изложить свою точку зрения с голой простотой и тем самым предоставить дальнейшую шлифовку своей концепции последующим ударам и контрударам критики.
Рудольф Арнхейм, Искусство и визуальное восприятие.


Компьютерный язык это не просто способ заставить компьютер производить вычисления, а новое формальное средство выражения методологических идей. Таким образом, программы должны писаться для того, чтобы их читали люди, и лишь во вторую очередь для выполнения машиной.
Харольд Абельсон, Джеральд Д. Сассман, Структура и интерпретация компьютерных программ.


Соотношение времени чтения и написания кода превышает 10:1. Из-за столь высокого соотношения наш код должен легко читаться, даже если это затрудняет его написание.
Роберт Мартин, Чистый код: создание, анализ и рефакторинг.


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


Обычно, когда оценивают текст программы с точки зрения ее легкости восприятия, используют термин удобочитаемость. Строго говоря, это не совсем одно и то же, поскольку, как будет показано далее, процесс восприятия программы это больше, чем просто чтение. Тем не менее, поскольку речь идет о тексте, и термин удобочитаемость можно считать достаточно устоявшимся, я также буду использовать его в этом смысле.


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


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


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


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


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


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


Давайте посмотрим подробнее, на то, что нам известно о механизмах восприятия человеком зрительной информации, чтении текстов вообще и чтении и восприятии текстов программ.



Особенности зрения человека


Поле зрения


Поле зрения человека достаточно велико: 55 вверх, 60 вниз, 90 наружу (то есть суммарное поле зрения двумя глазами 180) и 60 внутрь. Однако внутри этого поля острота зрения и цветовосприятие распределены неравномерно: острота зрения порядка 1' достигается в области фовеа, формирующей ~2 центрального (фовеального) зрения, но она не так хороша в парафовеальной области (которая покрывает 5 в обе стороны от точки фиксации) и еще хуже на периферии.


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


Рисунок 1. Поле зрения правого глаза человека. Оранжевое пятно место проекции слепого пятна глазного дна. (оригинал)



Амбьентное и фокальное зрение


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


Таблица. 1. Сравнительные признаки фокальной и амбьентной систем


Зрительная система Фокальная Амбьентная
Функция Что Где/Как
Включенность в движение Меньше Больше
Осознание/Память Больше Меньше или отсутствует
Временные свойства Медленная Быстрая
Чувствительность к освещению Высокая Низкая
Пространственное разрешение Высокое Низкое

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


Обследование окружения и выбор объектов для детальной обработки осуществляется с помощью движений головы и тела, на которые накладывается тонкий узор движений глаз. Наиболее известной их разновидностью являются саккады чрезвычайно быстрые (~500/сек) скачки баллистического типа, меняющие положение глаз в орбите и позволяющие выделять фрагменты сцены для последующей фиксации.


Рисунок2. Репродукция картины И. Е. Репина и запись движений глаз испытуемого.





Начало исследованиям соотношения амбьентной (глобальной) и фокальной (локальной) зрительной обработки было положено в экспериментах Дэвида Навона в 1977. Он предъявлял испытуемым большие буквы, состоящие из маленьких букв. Некоторые из этих составных стимулов были однородными глобальная форма и локальные элементы представляли собой одну и ту же букву. Другие были неоднородными глобальная и локальные буквы были разными (скажем, Е и S). Испытуемые должны были как можно быстрее идентифицировать глобальную или локальную букву.


Рисунок 3. Однородные и неоднородные супербуквы из экспериментов Дэвида Навона.




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


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


Законы перцептивной организации


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


Рисунок 5. Далматинец




А здесь мы ясно различаем квадрат и круг:


Рисунок 6. Фигуры из точек.





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


Посмотрите на рисунок ниже, и вы увидите как с течением времени ориентация треугольников меняется с одного направления на другое, третье.


Рисунок 7. Треугольники, меняющие ориентацию.




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


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


Рисунок 8. Варианты организации точек в фигуру.




Гештальтпсихологи также сформулировали 6 принципов перцептивной организации. В соответствии с этими принципами объекты, которые


  • расположены близко друг к другу (закон близости),
  • имеют похожие яркостные и цветовые характеристики (сходства),
  • ограничивают небольшую, замкнутую (замкнутости)
  • и симметричную область (симметрии),
  • естественно продолжают друг друга (хорошего продолжения),
  • движутся примерно с равной скоростью в одном направлении (общей судьбы),

скорее будут восприняты как единое целое, или фигура, а не как разрозненные элементы среды, или фон.


Рисунок 9. Примеры сходства по близости, цвету и размеру.





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


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


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


Асимметрия зрительного поля


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


Так, в сценическом искусстве известно, что существует разница между левой и правой половиной сцены: как только поднимается занавес в начале акта, зрители начинают смотреть в левую сторону сцены. Левая сторона сцены считается более сильной. В группе из двух или трех актеров тот, кто стоит с левой стороны, будет в данной сцене доминировать. Аналогично, зритель воспринимает рисунок, как если бы он свое внимание сосредоточил на левой стороне. Субъективно он отождествляет себя с левой стороной, и все, что появляется в этой части картины, имеет большое значение. Таким образом, кроме естественной точки равновесия в центре визуальной сцены, формируется дополнительный центр в ее левой части.



Как мы читаем обычные тексты


Когда мы читаем, наши глаза непрестанно совершают быстрые механические (т.е. не контролируемые сознанием) движения, саккады (saccades). В среднем их длина составляет 7-9 символов. В это время мы не получаем новой информации. Основная функция саккад заключается в перемещении новой области текста в область фовеального зрения (2 центральной области видимости) для детального анализа, потому что чтение в области парафовеального или периферического зрения сильно затруднено или невозможно.


Рисунок 10. Типичная картина движений глаз при чтении





Между саккадами наши глаза остаются относительно неподвижными на время фиксаций (fixations) (около 200 300 мс). В течение этого периода мы распознаем видимую часть текста и планируем, куда совершить следующий cкачок.


Порядка 1015% времени читающие переводят свой взгляд назад в тексте (regressions), чтобы повторно прочитать то, что уже было прочитано. С возрастанием трудности текста увеличивается продолжительность фиксаций и частота регрессий, а длина саккад уменьшается.


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


Во время фиксации мы получаем информацию из области видимости, называемой областью восприятия (perceptual span). Размер этой области относительно невелик: в случае алфавитных орфографий (напр. для европейских языков) она начинается от начала фиксированного слова, но не более, чем на 3-4 буквы слева от точки фиксации, и распространяется приблизительно на 14-15 размеров букв вправо от этой точки (суммарно 17-19 букв).


Область идентификации (identification span), то есть область видимости, необходимая для идентификации фиксированного слова, меньше, чем область восприятия и, как правило, не превышает 7-8 размеров букв справа от фиксации (суммарно порядка 10-12 букв).


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


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


В большинстве случаев чтение замедляется (в среднем на 30%) при отсутствии информации о промежутках (между словами). Это вызвано нарушением процессов идентификации слова и перемещения взгляда. Наоборот, добавление информации о промежутках облегчает чтение. Так, существуют данные, показывающие, что при разделении слов в тексте на тайском языке (для людей, которые никогда прежде не читали такие тексты с разделением слов пробелами), чтение осуществляется более эффективно. Аналогично облегчается и чтение длинных составных слов на немецком языке при разбивке их на простые слова с помощью пробелов, несмотря на то, что такое разбиение грамматически некорректно и не встречается в обычном чтении.


Информация о длине слова также играет явную роль в определении того, где должна располагаться точка фиксации. Хотя присутствует некоторая вариативность в том, где внутри слова останавливается взгляд, как правило первая фиксация на слове осуществляется в предпочитаемой точке взгляда (preferred viewing location), где-то на расстоянии 1/4 длины слова от его начала. Когда промежуток между текущим и следующим словами попадает в парафовеальную область, первая фиксация на следующем слове происходит ближе к предпочитаемой точке, чем когда этот промежуток оказывается за ее пределами.


Несмотря на то, что в среднем позиция первой фиксации на слове лежит между началом слова и его серединой, эта позиция может меняться в зависимости от расстояния до предыдущей точки фиксации. Например, если расстояние до целевого слова большое (8-10 размеров букв), положение следующей фиксации сдвигается влево. Соответственно, если расстояние мало (2-3 размера букв), положение фиксации сдвигается вправо.


Позиция первой (и возможно единственной) фиксации на слове лежит между началом и серединой слова для слов длиной 4-10 буквы. Однако для более длинных слов наблюдается тенденция делать первую фиксацию ближе к началу слова и затем вторую ближе к концу слова.


Информационная плотность (или морфологическая структура) слова влияет на продолжительность фиксаций на каждой части слова. Например, было замечено, что если слово было возможно распознать по первым 6 буквам (слова были в среднем длиной около 12 букв), то в общем случае, после первой фиксации в первой половине слова, взгляд переходил к следующему слову; в случаях, когда фиксация во второй части все же осуществлялась, то она была очень короткой. Однако в случае, когда слово могло быть распознано только по его окончанию, первая фиксация была короткой, а вторая, на конце слова, более длинной.


Таблица 2. Приблизительные средние значения продолжительности фиксаций и длин саккад при чтении и поиске


Задача Средняя продолжительность фиксации (мс) Средний размер саккады (градусы)
Чтение 225 2 (~ 8 букв)
Чтение вслух 275 1.5 (~ 6 букв)
Визуальный поиск 275 3
Восприятие сцен 330 4
Чтение нот 375 1
Печать 400 1 (~ 4 буквы)

При исследовании визуального поиска установлено, что когда цель находилась в области с небольшим эксцентриситетом (отклонением от центра сцены), она обнаруживалась точно, с использованием одной саккады; когда цель располагалась ближе к периферии, наблюдались саккады в ложных направлениях (до 40% по времени). При сложных задачах поиска глаза изначально направлялись к центру сцены и затем к центрам рекурсивно меньших групп объектов до тех пор, пока цель не была найдена.



Понимание программ


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



Когнитивные модели понимания программ



Концепции и терминология


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


План программирования (programming plan) это фрагмент кода, представляющий типичный сценарий в программировании. Например, программа сортировки будет содержать цикл для сравнения двух чисел в каждой итерации. Планы программирования также часто называют клише и схемы. Делокализованный план (delocalized plan) возникает, когда план программирования реализуется в различных частях программы. Наличие делокализованных планов усложняет понимание программ.


Маяк (beacon) это характерный элемент кода, который служит признаком присутствия в нем некоторой структуры. Например, имя процедуры может указывать на реализацию определенной функции.


Правила написания программ (rules of programming discourse) охватывают принятые соглашения, такие как стандарты кодирования и реализации алгоритмов. Эти правила формируют определенные ожидания в сознании программиста.



Модель понимания от общего к частному


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



Понимание от частного к общему


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



Оппортунистическая и систематические стратегии


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



Специфика чтения текста программы


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


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


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


Рисунок 11. Траектории движения глаз двух программистов-экспертов при чтении одного и того же кода.




Перед этими программистами были поставлены разные задачи: так, от первого (рис. слева) ожидали получить ответ, чему равно rect2.area(), второго предупредили, что ему будет задан вопрос относительно алгоритма с возможностью выбрать ответ из списка возможных.


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


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


Второй же испытуемый, по словам экспериментаторов, читал код медленно и методически.


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


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


Авторы описывают следующие базовые типы движений глаз, составляющие более сложные стратегии чтения кода:


Таблица 3. Базовые типы движений глаз при чтении кода.


Тип Описание
Flicking Взгляд перемещается вперед и назад между двумя соотносящимися элементами, такими как списки формальных и актуальных параметров метода.
JumpControl Взгляд переходит на следующую строку, следуя за потоком выполнения.
JustPassingThrough Фиксации на свободном месте в процессе перехода куда-то еще.
LinearHorizontal Целая линия последовательно и равномерно читается целиком слева направо или справо налево.
LinearVertical Текст читается строка за строкой, как минимум, для трех строк, независимо от потока выполнения программы, не различая сигнатуру и тело функции.
RetraceDeclaration Частые, повторяющиеся скачки между местами использования и определения переменных. Вид Flicking.
RetraceReference Частые, повторяющиеся скачки между местами использования переменных. Вид Flicking.
Scan Первичное поверхностное чтение всех строк кода сверху-вниз. Подготовительное чтение всей программы, которое занимает 30% времени на ее обзор (review).
Signatures Все сигнатуры функций просматриваются, перед тем как начать изучение тела метода/конструктора.
Thrashing Взгляд перемещается быстро и неконтролируемо в последовательности, которая кажется не имеет какого-то определенного смысла.
Word(Pattern)Matching Простое сопоставление визуальных шаблонов.


Роль идентификаторов


Идентификаторы в коде программы часто выполняют роль маяков для планов программирования, поддерживающих ментальные модели более высокого уровня. Идентификаторы составляют примерно 70% исходного кода.


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


Идентификаторы, которые нарушают некоторые правила, приводят к более низкому качеству кода (больше ошибок).


Использование более длинных имен снижает правильность и требует больше времени для запоминания.


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


Рисунок 12. Части траекторий движения глаз при корректном опознании underscore и camelCase идентификаторов, состоящих из трех слов






Основные принципы форматирования



Формирование визуальной структуры


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


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


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


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


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


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


Рассмотрим следующий пример:




Для оценки визуальной структуры проведем тест, аналогичный тесту с прищуриванием (squint test), используемому разработчиками пользовательского интерфейса. Алан Купер в своей книге описывает этот тест так:


Закройте один глаз и посмотрите на экран прищуренным вторым глазом. Обратите внимание на то, какие элементы слишком выпирают, какие стали нечеткими, а какие объединились в группы. Эта процедура часто вскрывает не замеченные ранее проблемы в композиции интерфейса.

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





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


Разбивка по вертикали позволяет исправить этот недостаток:




Результат теста:





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


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


Отступы служат для формирования визуального представления иерархии в структуре программы между элементами, находящимися на разных строках.


Давайте посмотрим на следующий код:




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


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




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


При сканировании текста, такое расположение провоцирует движение глаз от результирующей переменной success сразу к столбцу списка аргументов и только потом регрессию к имени функции.


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


Чтобы правильно отобразить логическую структуру этого кода в его визуальное представление, необходимо, чтобы список аргументов имел отступ не относительно начала строки, а относительно начала имени функции:




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


Проведем тест с прищуриванием. Отключим также подсветку синтаксиса для того, чтобы исключить группировку по фактору сходства по окраски, которую мы не контролируем:





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





Остается еще одна проблема: список аргументов выглядит как одно неструктурированное пятно, несмотря на то, что в нем присутствуют два типа элементов, метки аргументов и их значения, то есть, этот список обладает определенной структурой. Для того, чтобы визуально выделить эту структуру, используем выравнивание. Но перед этим отвлечемся на некоторое время от этого примера и рассмотрим различные способы форматирования списка аргументов в виде метка: значение.


Однострочное форматирование




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


Из-за большой длины строки остаток ее, не помещающийся на первой строке, был помещен на вторую. В данном случае среда разработки сделала отступ, показывающий подчиненность этой строки относительно предыдущей. Однако, в другом месте (например, в панели сравнений на gitlab) вторая строка скорее всего будет начинаться с начала и визуальная структура участка кода, включающего эту строку, будет поломана.


Выравнивание пар метка: значение




Этот вариант выглядит лучше в том смысле, что в нем спецификация имени метода и список аргументов явно отделены друг от друга. Уже несколько проще поиск в списке аргументов, поскольку каждая пара располагается на отдельной строке и метки выровнены по левому краю.


Тем не менее различение меток и значений затруднено из-за того, что отсутствует явная граница между областями меток и значений для всего списка. Кроме того, поскольку текст воспринимается как зафиксированный слева и свободный справа, в визуальном представлении этот код выглядит как большой груз (область списка аргументов), подвешенный на тонком и длинном рычаге. Основная масса кода оказывается сильно смещена в правую, менее важную часть пространства.


В данном случае можно попробовать исправить последний недостаток, сместив список аргументов влево:




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


Вариант 1: метки и аргументы выровнены влево по отдельности




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


Вариант 2: внутреннее выравнивание




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


Для примера с reticulateSplines код в этом варианте оформления будет выглядеть следующим образом:




Выравнивание является мощным средством оптимизации визуального представления кода, за счет формирования компактных групп в горизонтальном направлении.


Разберем следующий код:




В принципе, каждое отдельное объявление протокола выглядит достаточно удобочитаемым. Однако сказать такое обо всем тексте нельзя: общая структура невыразительна, в ней отсутсвуют явно выраженные массы, которые могли бы притянуть взгляд. В результате в глазах рябит, и есть ощущение монотонности. Чтобы воспринять этот код его можно только читать последовательно и полностью: protocol DataBaseDependent ServiceDependent var dataBase DataBase get set, protocol LocalConfigDependent


Переформатируем его так, чтобы каждое объявление занимало одну строку и выровняем:




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


Как упоминалось выше, существует некоторая асимметрия в том, как человек воспринимает левую и правую части визуальной сцены. Эта асимметрия еще более естественным образом присутствует в восприятии текста программы: текст жестко привязан к левому краю, где отступы задают уровень иерархии в логической структуре программы. Правый же край свободен и не имеет жесткого ограничения. Чтение слева направо и сверху вниз определяет то, что что-то новое мы ожидаем увидеть сверху и слева или по центру.


В этом смысле нельзя назвать удачными с точки зрения читаемости конструкции вида:




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





Длина строки


Отсутствие жесткого ограничения справа, не означает, что ограничения нет вообще. Многовековой опыт книгопечатания, и десятилетия опыта, наработанного веб-дизайнерами, сходятся к тому, что оптимальная длина строки, обеспечивающей комфортное чтение составляет приблизительно 45-75 символов.


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


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


  • Длинную строку трудно охватить широким взглядом.
  • Оценка структуры выражения затруднена из-за того, что эта структура размазана по строке и не формирует явно выраженных компактных визуальных областей.
  • Из-за неявно выраженной структуры и увеличения эксцентриситета затрудняется поиск.
  • Из-за увеличения расстояния затрудняются переходы от конца строки к началу следующей, и соответственно замедляется чтение.
  • Если отодвинуться от монитора с целью уменьшения углового размера строки, чтобы нивелировать некоторые указанные выше проблемы, это затруднит чтение за счет уменьшения размера букв и расстояний между ними. При этом это размер области идентификации и распознавания и размер саккад, измеряемых в буквах, не изменится. То есть, чтение замедлится.
  • Большие мониторы не всегда доступны или текст программы может отображаться в области с гораздо меньшей шириной. При этом строка или не помещается в области видимости и требует прокрутки, либо строка разбивается на несколько строк и это, как правило, разрушает структуру программы во всей области видимости.

По ряду объективных причин не всегда можно избежать длинных строк (например, из-за использования длинных идентификаторов, которые мы не в силах изменить). Также в случаях, когда нас не интересует структура выражения (например, при выводе отладочного сообщения в лог программы), использование длинной строки может оказаться даже предпочтительнее структурирования длинного выражения разбивкой его на несколько строк, так как делает этот код менее значимым с точки зрения амбьентного зрения.


В общем же случае, длинные строки, как и длинные идентификаторы, это признак плохой читаемости кода.



Имена


Имена играют важнейшую роль для обеспечения удобочитаемости программного кода. Они занимают его большую часть и часто играют роль маяков, позволяющих идентифицировать характерные структурные части программы. Основные требования к именам это их краткость и выразительность. Чем имя длиннее, тем оно труднее для чтения, запоминания и поиска. Длинные имена, как правило приводят к длинным строкам, что тоже затрудняет чтение и поиск. Требование выразительности означает, что в области контекста использования, имя должно позволять однозначно определять роль обозначаемого им элемента программы.


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


В идеале, мы хотим распознавать имя с первого взгляда (при первой фиксации). Это значит, что первую оценку оптимальной длины можно заложить как размер области идентификации, то есть 10-12 символов. Особенностью текстов программ, как уже писалось выше является то, что набор допустимых слов в них ограничен, поэтому велика вероятность, что даже в случае более длинного имени мы сможем впоследствии распознавать его по первой части, так что в принципе, даже при длине больше 12 символов нам потребуется лишь одна фиксация. Мы, однако хотим, чтобы при этом это имя помещалось в размер области распознавания (17-19 символов) и оставался некоторый запас, таким образом, чтобы наш мозг имел возможность оптимально спланировать следующую саккаду. Если мы возьмем 4 символа от конца области распознавания, то получим оценку в 13-15 символов.


Допуская в редких случаях две фиксации с угадыванием мы получим оценку в 20-24 символа (13-15 из предыдущей оценки + 7-9 на саккаду внутри слова) .


Взяв середины отрезков полученных оценок получим следующую таблицу:


Таблица 4. Оценки максимальной длины имени.


Число фиксаций Оценка максимальной длины имени
1 11
1 (с угадыванием окончания) 14
2 22

Эти рекомендации достаточно хорошо согласуются с теми границами, которые приводит в своей книге Стив Макконнелл: 10-16 и 8-20. Теперь мы можем как-то объяснить их.


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


За редким исключением не имеет смысла использовать в именах какие-либо префиксы, описывающие некоторые общие характеристики (например тип) или для различения классов, являющихся частью вашего приложения. Префиксы маскируют смысловую часть имени, в их присутствии позиция первой фиксации на слове при чтении сдвигается влево от оптимальной, они требуют определенных усилий на дополнительный анализ слова. В некоторых случаях они могут изменять значение имени (kBytesPerSec это килобайты в секунду или константа BytesPerSec?).


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



Пробелы


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


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




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


Еще один пример:




После разделения на две группы, добавления пробелов и выравнивания:




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


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





Расстановка фигурных скобок.


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


Далее я буду условно называть эти стили Allman и One Truce Brace Style (1TBS) по названиям наиболее популярных стилей, которые используют соответствующие правила расстановки скобок.


Расположение открывающей скобки в начале отдельной строки в стиле Allman обладает следующими преимуществами:


  • Скобка всегда располагается в левой части визуальной области, т. е. в области наибольшего внимания, и при сканировании кода (в котором преобладают вертикальные движения глаз) всегда так или иначе попадают в область фокального зрения. В стиле 1TBS открывающие скобки часто оказываются в правой области кода и попадают лишь в область периферийного зрения, что значительно затрудняет их обнаружение. Другими словами, то что в первом случае происходит естественно и как бы само по себе, в втором требует дополнительных и специальных усилий.
  • Облегчено сопоставление открывающей и закрывающей скобок и, соответственно, определение границ обрамленного ими блока кода. Поиск парной скобки требует лишь вертикального перемещения взгляда, на пути его следования от одной скобки к другой нет никакого текста, и поиск происходит в известном направлении до первого символа.
    Действительно, всегда, когда мы видим в тексте закрывающую скобку на отдельной строке, мы знаем, что парная ей открывающая находится выше, а это значит, что основным и естественным направлением поиска её будет поиск вверх.
    При использовании 1TBS, поиск в общем случае требует больших усилий за счет того, что он осуществляется в широком секторе, причем взгляд проходит через текст, который надо анализировать, и который часто содержит вложенные пары фигурных скобок, визуально конкурирующие с целевой.
  • Скобка расположена в начале строки, именно там, где мы ожидаем увидеть начало чего бы то ни было, и естественным образом обозначает начало блока кода. В стиле 1TBS из-за своего положения в конце строки открывающая скобка часто перестает играть роль явного визуального маркера начала блока. Более того, в некоторых случаях (напр. повторяющиеся конструкции }else if) закрывающая скобка предыдущего блока оказывается в начале строки, содержащей конструкцию, предваряющую новый блок, и тем самым визуально связывается с началом этого блока. Таким образом, её формальное и визуальное значения перестают соответствовать друг другу.
  • Расположение скобок на отдельных строках, естественным образом добавляет вертикальные пробелы между синтаксической конструкцией перед открывающей скобкой и обрамленным блоком кода, что, в большинстве случаев, лучше отражает структуру всей конструкции.
  • Горизонтальная позиция открывающей скобки в стиле Allman однозначно определяет уровень вложенности, к которому она относится. В 1TBS эта информация отсутствует, так как расположение открывающей скобки в основном определяется лишь длиной строки, расположенной перед ней.

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


picture36


Код в примере выше демонстрирует основные упомянутые проблемы стиля 1TBS, а именно: отсутствие явно выраженной визуальной структуры, инвертирование роли закрывающих скобок, потеря визуальной значимости открывающих, которые при беглом взгляде на код лишь приблизительно угадываются с помощью периферийного зрения и их точная локация требует дополнительных горизонтальных движений глаз. При этом этот код еще можно назвать простым с той точки зрения, что в нем условия выражения if занимают всего одну строку, и открывающие скобки находятся на той же строке, что и if, а блоки кода внутри скобок имеют достаточно простую линейную структуру и не содержат вложенных блоков.


Переформатирование этого кода с использованием стиля Allman позволяет получить более приемлемый результат:


picture37


Несмотря на то, что в большинстве случаев Allman объективно выигрывает у 1TBS, иногда 1TBS оказывается предпочтительнее. Как правило, это связано с тем, что в таких случаях дополнительное вертикальное пространство, образуемое за счет расположения скобок на отдельных строках в стиле Allman, приводит к тому, что вся конструкция становится визуально разрозненной, теряет свой внутренний ритм и перестает восприниматься как единое целое. И в то же время, при использовании 1TBS, либо смещение открывающей скобки невелико и не оказывает значимого влияние на восприятие кода, либо её обнаружение непринципиально (например, в случае конструкции if, когда и условие, и блок кода занимают по одной строке).


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



Возникает вопрос: в каких случаях допустимо использовать 1TBS? Здесь можно предложить следующие ограничения:


  • Открывающая скобка располагается на той же строке, что и начало синтаксической конструкции, частью которой она является.
  • Скобка не замаскирована большой массой кода непосредственно примыкающего к ней (в основном сверху).
  • Она располагается в левой области текста (области наибольшего внимания).
  • Смещение скобки по горизонтали не должно быть большим, так что скобка оказывается в области распознавания (14-15 размеров букв).
  • Блок, ограниченный скобками, не содержит вложенных блоков таких, что скобки, ограничивающие эти вложенные блоки, расположены близко к открывающей скобке основного блока и визуально конкурируют с ней.

Таким образом, выбор способа расстановки скобок должен осуществляться в каждом конкретном случае, а формальное следование жестким правилам расстановки рано или поздно приводит к неудовлетворительному результату. Наиболее оптимальным вариантом видится комбинация стилей Allman (как основного) и 1TBS (как вспомогательного, используемого в редких случаях) .



Заключение


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


Основную стратегию оптимизации удобочитаемости можно сформулировать как стремление к более эффективному использованию амбьентого зрения и снижения нагрузки на фокальное.


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


В своей книге о типографике Роберт Брингхерст пишет:


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

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

Аналогично можно сказать, что структура программы, разворачиваясь в тексте сверху вниз, также обладает определённым ритмом и вариациями. Задача программиста визуализировать этот ритм, сделать его явным в общем и в деталях.




) Eye Movements in Reading and Information Processing: 20 Years of Research. Keith Rayner University of Massachusetts at Amherst
) Eye Movements in Code Reading: Relaxing the Linear Order. Roman Bednarik, Bonita Sharif
) Theories, tools and research methods in program comprehension: Past, Present and Future. Margaret-Anne Storey
) An Eye Tracking Study on camelCase and under_score Identifier Styles. Bonita Sharif and Jonathan I. Maletic Department of Computer Science Kent State University
) Achieving Software Quality through Source Code Readability, Phillip Relf
) Relating Identifier Naming Flaws and Code Quality: An Empirical Study. Simon Butler
) Грегори Р.Л. Глаз и Мозг. М.: Прогресс, 1970
) Дэвид Хантер Хьюбел. Глаз, мозг, зрение. Мир, 1970
) Величковский Б.М. Когнитивная наука. Основы психологии познания. Academia, Смысл, 2006
) Рудольф Арнхейм. Искусство и визуальное восприятие. М.: Архитектура-С, 2012
) Ярбус А.Я. Роль глаз в процессе зрения. М.: Наука, 1965
) Eye movements in programming education: analysing the experts gaze. Simon. University of Newcastle, Australia
) Роберт Брингхерст. Основы стиля в типографике. М.: Дмитрий Аронов, 2006
) Макконнелл С. Совершенный код. М.: Русская редакция, 2010
) Saccade size in reading depends upon character spaces and not visual angle. Robert E. Morrison, Keith Rayner, 1981
) Роберт Солсо. Когнитивная психология. СПб: Питер, 2002/2006
) ОСТ 29.12494. Издания книжные для взрослых читателей.

) Алан Купер. Алан Купер об интерфейсе. Основы проектирования взаимодействия. Пер. с англ. СПб.: Символ
Подробнее..

Мы работаем во тьме кодинг глазами незрячих программистов

21.05.2021 10:23:30 | Автор: admin


We work in the dark we do what we can we give what we have. Our doubt is our passion and our passion is our task. The rest is the madness of art.

Henry James, The Middle Years

Согласно статистическим данным ВОЗ, в той или иной степени нарушениями ближнего или дальнего зрения страдают около 2.2 миллиардов человек, из которых не менее 40 миллионов абсолютно слепы.

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

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

Клавиатура, наушники и ничего лишнего


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


Тука Ояла в офисе Vincit, расположенном в Тампере

На фотографии выше представлено рабочее место Туки Оялы, занятого в компании Vincit, специализирующейся на разработке и сопровождении интеллектуальных ERP-систем. На столе финского программиста вы не увидите ровным счетом ничего необычного: клавиатура, ноутбук, USB-хаб все то же самое, что используют его соседи по опен-спейсу. А вот мыши и монитора среди рабочих девайсов Оялы нет: поскольку молодой человек практически полностью утратил способность видеть, подобное оборудование ему попросту ни к чему. Для запуска служебных утилит он использует консольные команды, для навигации между окнами и вызова контекстного меню стандартные комбинации клавиш и предварительно настроенные хоткеи, а следить за происходящим на рабочем столе ему помогает скринридер экранный диктор, скрупулезно озвучивающий все действия программиста и зачитывающий вводимый код.

Ассортимент подобного софта достаточно широк, причем помимо дорогостоящих решений, вроде JAWS от Freedom Scientific, существуют и бесплатные пакеты, зачастую ни в чем не уступающие коммерческим аналогам. Сам Тука Ояла предпочитает пользоваться приложением Nonvisual Desktop Access бесплатной программой, разрабатываемой незрячими программистами Майклом Карраном и Джеймсом Те.


Майкл Карран и Джеймс Те создатели экранного диктора Nonvisual Desktop Access

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

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


Комбинированное устройство для работы за компьютером, объединяющее дисплей и клавиатуру Брайля

Большинство подобных дисплеев способно выводить от 40 до 80 символов одновременно, а многие современные модели оснащены встроенной клавиатурой, позволяющей набирать буквы, цифры и пунктуационные знаки путем нажатия 6 клавиш, каждая из которых соответствует одной из точек брайлевского кода.


В азбуке Брайля символы кодируются шестью точками

Для формирования тактильно-рельефной поверхности в брайлевских дисплеях применяются дорогостоящие пьезокристаллические элементы, что негативно сказывается на ценах подобных устройств. На момент написания данного материала за одну из самых бюджетных моделей, Orbit Reader, просят 65 тысяч рублей, тогда как за наиболее совершенное на сегодняшний день устройство, ALVA BC680, придется выложить уже 900 (!) тысяч рублей. По иронии судьбы девайсы, призванные обеспечивать доступность работы на ПК для незрячих и слабовидящих, оказываются недоступны подавляющему большинству тех, кто по-настоящему в них нуждается.


Цены на дисплеи Брайля поражают воображение

Впрочем, не стоит отчаиваться: к подобным девайсам следует относиться лишь как к полезной, но отнюдь необязательной, опции. Более того, многие незрячие программисты находят дисплеи и клавиатуры Брайля чрезвычайно неудобными. К таковым относится, например, Флориан Бэйджерс, программист из Нидерландов, известный в сети под ником Zersiax.

Сорвиголова из соседнего офиса


В отличие от своего коллеги из Финляндии, Бэйджерс не видит с детства, однако при этом считает брайлевские девайсы чем-то вроде дорогой игрушки: побаловаться, конечно, можно но для реальной работы они решительно не годятся. Действительно, зачем нажимать 6 клавиш, чтобы набрать один символ, если можно обойтись одной или двумя кнопками? И зачем тратить время на ощупывание дисплея Брайля, если скринридер способен за это же время передать в десятки раз больше информации?


Одна из самых любимых фотографий Флориана Бэйджерса. По словам друзей, на ней он получился лучше всего

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

Давайте проведем небольшой эксперимент: напишем простой код на Python и посмотрим, как его будет озвучивать тот же NVDA. Пускай после запуска наш скрипт попросит пользователя ввести целое число, а затем определит, является ли оно положительным.

x = int(input('Введите целое число:\n'))if x > 0:print('Икс больше нуля')else:print('Икс меньше нуля')

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

Теперь сделайте следующее: включите секундомер на ПК или смартфоне, засеките время, за которое сможете прочитать этот код и запишите результат.

Скринридер проговорит данный блок кода примерно следующим образом:

икс равно int открывающая скобка ввод открывающая скобка одинарная кавычка введите целое число двоеточие обратная косая черта эн одинарная кавычка закрывающая скобка закрывающая скобка если икс больше нуль двоеточие пробел пробел пробел пробел печать открывающая скобка одинарная кавычка икс больше нуля одинарная кавычка закрывающая скобка иначе двоеточие пробел пробел пробел пробел печать открывающая скобка одинарная кавычка икс меньше нуля одинарная кавычка закрывающая скобка

Повторите манипуляцию с секундомером: прочтите данный абзац в привычном для себя темпе, засеките время и сравните с предыдущим результатом. Не особо впечатляет, не так ли? Можно подумать, что незрячие программисты работают в несколько раз медленнее, чем зрячие, однако это заблуждение: лишенные зрения разработчики вполне способны писать и читать код в том же темпе, что и их коллеги с безупречным зрением. Не верите? Тогда послушайте, как звучит скринридер Флориана Бэйджерса:

https://soundcloud.com/freecodecamp/zersiaxs-screen-reader

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

Подобные приложения позволяют существенно оптимизировать процесс зачитывания текста с дисплея. Давайте вернемся к нашему скрипту и посмотрим, как добиться того, чтобы скринридер тратил меньше времени на его прочтение, а сам код звучал более понятно для программиста. Первое, что приходит в голову привязать последовательность из четырех пробелов к ключевому слову отступ, что уже заметно сократит время озвучивания. Переменные и данные скринридер способен зачитывать разными интонациями (своеобразная аудиоподсветка синтаксиса), а поскольку наша программа ориентирована на русскоязычных пользователей, все становится еще проще, ведь можно сделать так, чтобы операторы и функции зачитывались по-английски (иф, вместо если, принт вместо печать и т.д.), что поможет ориентироваться еще лучше. А чтобы не путаться в целочисленных и строковых данных, можно сделать так, чтобы цифры озвучивались по-разному в зависимости от контекста, например, в нашем случае ноль и нуль (аналог для английского языка nil и zero). Благодаря таким ухищрениям и высокой скорости зачитывания незрячие программисты получают возможность работать также быстро, как и их зрячие коллеги.

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


Пархам Дустар, бэкенд-разработчик Booking.com

Я не пользуюсь клавиатурой Брайля: набирать каждый символ, используя 6 клавиш вместо одной непродуктивно. Я не пользуюсь дисплеем Брайля: мой скринридер зачитывает код со скоростью 420 слов в минуту, что позволяет мне работать в разы быстрее.

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


Выступление Лукаса Радаэлли с докладом Доступность и универсальный дизайн: разработка программного обеспечения для всех, Interaction South America, 2017 год.

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

Кстати, в своей работе Лукас Радаэлли использует многофункциональный текстовый редактор Emacs, написанный Ричардом Столлманом, и тесно интегрированный с ним скринридер Emacspeak, разработанный Т.В. Раманом незрячим программистом, занятым в Google Research и курирующим вопросы доступности продуктов корпорации для людей с нарушением зрительных функций.


Т.В. Раман и его верный друг и напарник собакаповодырь Хаббелл

Возможности, предлагаемые связкой Emacs/Emacspeak всецело устраивают Лукаса, так что он, как и многие его коллеги, считает нецелесообразным использование брайлевской периферии. Учитывая, что разработчик научился ориентироваться в коде на слух ничуть не хуже, чем Мэттью Мердок в пространстве, эти девайсы практически не дали бы ему сколь-либо значимого выигрыша в скорости.

А вот украинский веб-разработчик Дмитрий Попов, автор проекта Детектор WEB-доступности, и вовсе полагает, что работа с экранным диктором дает определенные преимущества по сравнению с традиционным написание кода.


Дмитрий попов выступает на конференции Web Standards Days в Киеве с докладом Как незрячие люди видят ваш сайт, 2016 год

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

Жизнь вне зоны доступа


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

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

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

Когда Пархам Дустар лишь начинал свой путь PHP-разработчика, ему пришлось отказаться от популярной IDE PHPStorm в пользу Zend Studio, основанной на PHP Development Tools от Eclipse Foundation именно по причине проблем с доступностью сред разработки компании JetBrains для слабовидящих и незрячих пользователей, что отмечают и многие другие программисты.

Пускай IDE на базе Eclipse не идеальны, но с доступностью у них все на порядок лучше, чем, например, у сред разработки JetBrains. Так устроен современный рынок: в погоне за прибылью компании часто забывают о потребностях людей с ограниченными возможностями, ориентируясь лишь на запросы большинства, сетуетДустар.

К сожалению это утверждение применимо к подавляющему большинству компаний, независимо от их размера и годового оборота. Так, например, именно из-за проблем с доступностью Тука Ояла был вынужден сменить операционную систему, перейдя с Mac OS на Windows 10.


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

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

Я бы с радостью работал в Vim или Emacs, ведь для незрячего программиста такие редакторы достаточно удобны. Но чтобы лучше взаимодействовать с коллегами, я использую IDE на базе Eclipse и Visual Studio. Что поделать, если у современных разработчиков консольные редакторы вызывают священный ужас, а название Vim у них ассоциируется со средством для мытья посуды, смеется Флориан Бэйджерс.


Кстати, забавный факт: несмотря на свои названия Visual Studio и VS Code весьма неплохо адаптированы под потребности визуально ограниченных людей, а вот у Microsoft Access с доступностью серьезные проблемы.

А вот и другой пример конфликта интересов: зрячие и незрячие программисты имеют совершенно разные представления о читаемости кода. Камнем преткновения здесь становятся отступы, наличие которых, с одной стороны, заметно упрощает визуальное восприятие исходников, но в то же время делает менее удобным использование скринридеров.

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


По этой причине работа с таким языком, как Python, в котором отступы формируют блоки кода, оказывается для незрячего программиста куда менее приятной, чем с тем же C++: постоянно выслушивать, как скринридер проговаривает глубину отступов чрезвычайно утомительно, к тому же, отнимает кучу времени.

Впрочем, даже если бы проблемы с доступностью были решены раз и навсегда, естественные ограничения никуда бы не исчезли. По вполне очевидным причинам незрячие программисты не могут полноценно работать с фронтендом: их деятельность может быть связана со всем, что происходит под капотом приложений, но практически никак не затрагивает визуальные интерфейсы. Разумеется, это не жесткое правило. Тука Ояла отмечает, что лично для него настоящим спасением стали CSS-фреймворки вроде Bootstrap:

Благодаря системе сеток я способен самостоятельно набросать базовую версию пользовательского интерфейса, а значит, и написать полноценное приложение без посторонней помощи. Разумеется, для выпуска в продакшн его придется дорабатывать зрячему фронтэндеру, но факт остается фактом: до известной степени я могу участвовать и в разработке интерфейсов.

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

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



Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Как устроено компьютерное зрение?

24.03.2021 14:22:50 | Автор: admin
Мы запускаем камеру на смартфоне, наводим на объект и видим маленькую иконку внизу. Смартфон понимает что именно мы снимаем. Вы когда-нибудь задумывались, как это работает?

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


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

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

  1. Нам нужно как-то получить изображение
  2. Нам нужно его обработать
  3. И уже только потом проанализировать



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

Этап 1. Получение изображения


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

В нашем пылесосе есть целых две камеры, они находятся спереди.А вот, например, для ориентации в трехмерном пространстве понадобятся дополнительные сенсоры. В частности 3D-сенсор. Тут он тоже есть и расположен сверху. Но что это за сенсор?

LiDAR


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

Эта штука сверху называется LDS или лазерный датчик расстояния, по-английски Laser Distance Sensor. Подобные датчики вы наверняка могли заметить на крышах беспилотных беспилотных автомобилей. Это не мигалка, это лазерный датчик расстояния, такой же как на роботе пылесосе.

Вот только в мире беспилотников такой сенсор принято называть лидаром LIDAR Light Detection and Ranging. Да-да, как в новых iPhone и iPad Pro.





А вот в Android-смартфонах вместо лидаров используется термин ToF-камера: ToF Time-of-flight.

Но, как ни называй, все эти сенсоры работают по одному принципу. Они испускают свет и замеряет сколько ему понадобится времени, чтобы вернуться обратно. То есть прямо как радар, только вместо радиоволн используется свет.

Есть небольшие нюансы в типах таких сенсоров, но смысл технологии от этого не меняется. Поэтому мне, чисто из-за созвучия с радаром, больше всего нравится название LiDAR, так и будем называть этот сенсор.



Кстати, лидары использует не только в задачах навигации. Благодаря лидарам сейчас происходит настоящая революция в археологии. Археологи сканируют территорию с самолета при помощи лидара, после чего очищают данные ландшафта от деревьев. И это позволяет находить древние города, скрытые от глаз человека!





Также помимо статических лидаров, направленных в одну сторону, бывают вращающиеся лидары, которые позволяют сканировать пространство вокруг себя на 360 градусов. Такие лидары используется в беспилотных автомобилях, ну и в этом роботе-пылесосе.



Еще 8 лет назад такие сенсоры стоили каких-то невероятных денег, под 100 тысяч долларов. А теперь у вас по дому может спокойно ездить маленький беспилотник.



Лидар в пылесосе


Окей, тут лидар используется для построения карты помещения и это не новая история. Такую технологию мы видели еще года 3-4 назад.

Благодаря лидару и построенной карте, пылесос ездит не рандомно как скринсейвер в Windows, стукаясь об углы, а аккуратно проезжая всю площадь (модели без лидаров обычно катаются странно).

Но внутри пылесоса стоит, на секундочку, восьмиядерный Qualcomm Snapdragon 625 (Qualcomm APQ8053), поэтому у него хватает мозгов не только построить карту, но и ориентироваться по ней.

Более того пылесос может хранить в памяти до четырёх карт и распознаёт этажи. Это существенно ускоряет уборку. Потому при переносе с этажа на этаж пылесос это может понять и не тратит время, чтобы построить карту заново.



Также каждую из 4 карт можно поделить на 10 специальных зон. Для которых можно настроить свои параметры уборки: мощность всасывания (до 2500 Па), количество проходов и прочее. А куда-то можно вообще запретить ездить. Можно даже выбирать сухую и влажную уборку для разных зон. Правда для этого не нужно подключать/отключать отдельный резервуар с водой. И всё это стало возможно благодаря лидару.

Тем не менее у технологии есть некоторые недостатки очень разреженные данные.Пространство сканируется линиями. В больших автомобильных радарах разрешение от 64 до 128 линий. Плюс ко всему у лидар есть мертвая зона. Если лидар стоит на крыше то он не видит, что творится в достаточно большом радиусе вокруг него.

Также в роботе-пылесосе лидар тут сканирует пространство всего одним лучом. Поэтому, всё что он видит это тонкая линия на высоте где-то 9-10 сантиметров от пола. Это позволяет определять где стены и мебель, но он не видит того, что валяется на полу.

Две камеры




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

Две камеры, во-первых, позволяют убрать мертвую зону впереди пылесоса. А во вторых позволяют достаточно точно определять расстояние до валяющихся на полу предметов.

Это позволяет пылесосу обнаруживать предметы размером не менее 5 см в ширину и 3 см в высоту и объезжать их.

Этап 2. Обработка


Итак, мы получили достаточно данных с различных сенсоров. Поэтому переходим ко второму этапу компьютерного зрения обработке.

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

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



Но вот совместить данные с разных сенсоров это нетривиальная задача.

Например, пылесос на полу обнаружил какой-то предмет. Дальше ему нужно понять где именно он находится на карте построенной при помощи лидара. А также нужно предположить какие у него габариты по проекции с одной стороны. То есть нам нужно поместить предмет в некий объёмный куб правильного размера.





Эту задачу можно решить разными способами. Один из способов называется усеченная пирамида.Сначала на камере обнаруживаются предметы. Потом эти предметы помещаются в конус, а объем этого конуса вычисляется нейросетью.



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



А раз мы заговорили про нейросети, значит мы уже немного зашли на 3-й этап компьютерного зрения анализ.

Этап 3. Анализ


За распознавание, сегментацию и классификацию объектов на изображении в современном мире в основном отвечают нейросети. Мы даже делали подробный ролик о том как это работает, посмотрите.



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

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

Что-то похожее происходит с нейронными связями в человеческом мозге. Когда мы чему-то учимся или запоминаем, мы повторяем одно и то же действие несколько раз. Нейронные связи в мозге постепенно укрепляются и потом нам это легко даётся!

Например, в данном пылесосе за работу нейросети отвечает встроенный NPU-модуль. Всё-таки внутри Snapdragon, пылесос может себе такое позволить.

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

Распознавание предметов происходит при помощи гугловской библиотеке Tensorflow. Алгоритм самообучается и умнеет от уборки к уборке.

Практика




В нашем роботе-пылесосе технология распознавания называется Reactive AI. Мы протестировали насколько она хорошо работает на практике.

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

Проследить за тем, что видит пылесос всегда можно через фирменное приложение или Mi Home от Xiaomi. Можно даже просто кататься по дому управляя пылесосом слать на него голосовые сообщения. Управлять пылесосом можно также через Google Ассистента или Алису.Всё на русском языке.

С недавних пор бренд начал официально продаётся в России, поэтому устройства полностью локализованные.

Внутри кстати стоит батарейка на 5200 мАч, которая способна выдержать до 3 часов уборки.

Итоги




Ребят, ну вы сами всё видели. Правда, стоит обратить внимание, что пока корректное распознавание предметов работает только если запускать пылесос через специальное приложение. И это нюанс, поскольку оно пока недоступно в Play Market Россия. Но в течение нескольких месяцев оно появится.
Подробнее..

I see hey, stop moving как зрительная система компенсирует неточности саккад

17.06.2020 10:12:43 | Автор: admin


Одним из самых важных органов чувств считаются глаза. Благодаря им мы получаем львиную долю информации об окружающем мире. Когда мы рассматриваем что-то, наш взор не фиксированный, т.е. наши глаза совершают множество мелких движений, именуемых саккадами. Из-за этих движений смещается сетчатка, что в свою очередь снижает четкость изображения (вспомните не самые удачные фильмы в стиле мокьюментари). Чтобы компенсировать этот эффект, зрительная система снижает свою чувствительность к смещению зрительных стимулов во время саккад. Однако до сего времени механизмы, лежащие в основе этого тонкого процесса, оставались не изучены. Посему ученые из университета Тохоку (Япония) решили провести ряд практических опытов и моделирований. Что показали эксперименты, какие секреты таит в себе гашение саккадического смещения, и почему так важны визуальные стимулы до и после саккад? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.

Основа исследования


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

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


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

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

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

Саккады работают во всех направлениях (вверх-вниз, влево-вправо), однако наибольшее число движений происходит в горизонтальной плоскости. А диапазон саккад варьируется от 2 до 15.


Саккады во время поворота глаза.

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

Ученые напоминают нам, что визуальная чувствительность глаз уменьшается во время саккад, если происходят определенные изменения с объектом рассмотрения (изменение освещения, смещение объекта, постоянное движение объекта, изменение цвета и тд). Это явление называется саккадическим подавлением или саккадическим упущением путем прямой и/или обратной маскировки.

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

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

Потому ученые и предполагают, что механизм оценки саккад-индуцированного сдвига в изображении на сетчатке основан на копии эфферентной* моторной команды движения глаза для компенсации сдвигов изображения.
Эфферентные* (двигательные) нейроны передают импульс ЦНС рабочим органам.
После перенастройки местоположения стимула в пространстве механизм может интегрировать изображения сетчатки до и после саккад. Тем не менее, поскольку фактическая амплитуда саккады и амплитуда саккады, предсказанная на основе эфферентной копии, не всегда одинаковы, объект может восприниматься как смещенный во время саккады даже без физического смещения, если визуальная система полностью доверяет копии.

Решение этой проблемы заключается в том, что зрительная система намеренно не фиксирует небольшие смещения объекта во время саккады, даже если их легко обнаружить во время фиксированного рассмотрения. Этот феномен называют саккадным подавлением смещения (SSD от saccadic suppression of displacement).

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

Еще одним важным элементом в исследовании визуальной стабильности является эффект гашения (blanking effect).

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

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

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

Также считается, что важную роль в механизме саккад играет контрастность объекта рассмотрения. Чтобы проверить это, ученые провели анализ влияния контраста до- и после-саккадического обэекта на обнаружение смещения.

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

Было установлено, что обнаружение смещения было лучше, если объект до саккады имел более высокую контрастность. А вот увеличение контрастности объекта после саккады приводило к ухудшению восприятия в обычных условиях, но не в случае применения эффекта гашения.

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

Подготовка к опытам


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

Участниками наблюдений стали 8 мужчин и 2 женщины в возрасте от 21 до 24 лет с нормальным зрением. Каждый из участников размещал голову на специальной подставке (как в кабинете офтальмолога) на расстоянии 45 см от объекта, демонстрируемого на ЭЛП-экране (Sony GDM-F520, 21, 100 Гц).

Положение глаз измерялось с помощью устройства слежения за лимбом*, состоящего из инфракрасного диода и двух фотодиодов.
Лимб роговицы* место соединения роговицы и склеры, т.е. край роговицы.
Положение глаз и скорость их движения оценивались в реальном времени посредством алгоритма разности трех точек, в котором скорость в момент времени n рассчитывалась исходя из положения глаза в момент времени n-1 и момент времени n+1.

Начало саккады определялось как момент, когда скорость глаза превышала 30 /с. Обнаружение начала саккады всегда задерживалось на 1 кадр (10 мс) из-за метода расчета скорости.


Условия опытов: А опыты без применения временных пробелов; В опыты с временными пробелами (эффект гашения).

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

Расчеты показали, что исчезновение предсаккадического объекта происходит примерно за 32 мс до самой саккады. Лишь в 0.7% опытов объект исчезал после саккады. Также в дальнейшем моделировании не учитывались результаты опытов, где саккада была короче 120 мс или дольше 400 мс. Суммируя все уточнения и исключения, было забраковано лишь 6% результатов опытов.

Также необходимо было провести калибровку перед каждым опытом. В начале калибровки пять одинаково разделенных точек были представлены последовательно вдоль горизонтальной линии, тогда как центральная точка была всегда расположена в центре дисплея. Участникам необходимо было фиксироваться на каждой точке по очереди и нажимать кнопку, когда каждая фиксация была завершена. Если коэффициент регрессии* был меньше 0.9, процедуру калибровки повторяли до тех пор, пока критерий не был удовлетворен.
Коэффициент регрессии* показывает силу и характер влияния независимых переменных (в данном случае 5 точек) на зависимую.
В качестве объектов (точка фиксации взгляда, объект до и после саккады), за которыми должны были наблюдать участники опытов, выступали диски диаметром 0.88. Фоновая яркость была постоянной и составляла 21.4 кд/м2 (кандел на метр квадратный). Перед проведением опытов также был измерен контраст. В данном случае это был контраст Вебера, который является отношением объекта к фону, и поэтому в некоторых случаях контраст превышал 100%. Чтобы учесть разницу в чувствительности между центральным и периферическим зрением, контрасты стимула определялись факторами порогового контраста.

Контраст до-саккадического объекта в 3, 4.3, 6.1, 8.8, 12.6 или 18 раз превышал порог контраста при периферическом зрении, а у пост-саккадического в 3, 4.3, 6.1, 8.8, 12.6 или 18 раз превышал порог контрастности при центральном зрении.

Результаты опытов и моделирования


Первым делом стоит определить, каково же влияние контраста на обнаружение смещения.

Сначала участникам опытов необходимо было выполнить саккаду вправо под углом 17.8 от точки фиксации взгляда до объекта (диска). Как только начиналась саккада, объект в первоначальной позиции исчезал и появлялся на 0.33 вправо или влево сразу (без временно пробела) или с задержкой в 100 мс (эффект гашения). Основная задача участников сказать куда сместился объект (влево или вправо). Значение контраста объекта до и после сакадды варьировалось в ходе опытов.


Изображение 1: влияние контраста до и после саккады на точность обнаружения смещения при обычных условиях (без эффект гашения).

Точность обнаружения смещения объекта через саккаду выражалась как d в каждом контрастном состоянии. Значения d в условиях отсутствия/наличия временных пробелов показаны на изображениях 1 и 2 соответственно.


Изображение 2: влияние контраста до и после саккады на точность обнаружения смещения при использовании временного пробела (эффект гашения).

В состоянии без временного пробела точность обнаружения смещения значительно снизилась с постсаккадическим контрастом (1C), а с досаккадическим контрастом наоборот улучшилась ().

В режиме с временным пробелом точность обнаружения смещения улучшалась при контрасте до саккады (), но никак не менялась от контраста после саккады ().

Факт того, что повышение контраста до саккады улучшает обнаружение смещения объекта, полностью согласуется с классическим представлением о работе глаз человека: чем сильнее первичный стимул, тем лучше будет его дальнейшее обнаружение. А вот снижение точности глаз из-за повышения контраста объекта после саккады подразумевает, что постсаккадический стимул усиливает SSD (саккадное подавление смещения).

Для лучшего понимания связи между SSD и контрастности ученые провели моделирование.

Информация от сетчатки передается в зрительную кору по двум основным функционально отличным путям: магноцеллюлярный путь (M-путь) и парвоцеллюлярный путь (P-путь). Психофизические исследования показали, что M-путь сильно подавлен во время саккад.

Получается, что информация о яркости объекта, представленного сразу после саккады, сильно влияет на эффективность обнаружения смещения, как если бы подавление M-пути было еще больше усилено увеличением контрастности.

Если М-путь подавлен во время саккад, то Р-путь должен быть доминантным сразу после саккад. Это значит, что постсаккадическая информация от сетчатки обрабатывается главным образом через P-путь. Снижение точности с увеличением постсаккадического контраста наталкивает на мысль, что активность P-пути подавляет обнаружение смещения.

Чтобы проверить эту теорию, ученые создали модель, основанную на предположении, что P-путь доминирует сразу после саккады.

Если предположить, что существует только два визуальных пути от сетчатки до коры (игнорируя все остальные), одна из самых простых моделей будет состоять в том, что сигналы M-пути подавляются сигналами из P-пути или визуальных областей более высокого уровня, которые получают входной сигнал от P-пути.

Отклик каждого пути на контраст был выражен функцией, которая также используется для моделирования контрастного ответа ЛКТ* клеток М- и Р-типа и для сравнения с психофизическими результатами опытов.
ЛКТ* (латеральное коленчатое тело) структурная часть мозга, расположенная на нижней латеральной стороне подушки таламуса.
Для оценки выходного сигнала обнаружения смещения была использована модель Рейхардта, с помощью которой была рассчитана корреляция между пред- и постсаккадическими сигналами, косвенно связанными с M-путем.


Модель Рейхардта для оценки обнаружения смещения объекта.

Если утрировано, то в данной модели от значения отклика Р-пути зависела сила выходного сигнала всей модели (чем выше отклик Р-пути, тем ниже отклик всей модели).

Следующая формула вычисляет выходные данные модели, используемой для выражения влияния контраста до и после саккады на точность обнаружения смещения:



k pre нормализованный контраст объекта до саккады;
kpost нормализованный контраст объекта после саккады;
параметры и контраст полунасыщения и сила зависимости от контраста;
R коэффициент, используемый для преобразования отклика в точность обнаружения смещения;
n0 константная нелинейная функция, моделирующая нейронные контрастные характеристики, которая контролирует уровень шума;
m и p M-путь и P-путь;
S вклад отклика P-пути, который влияет на обнаружение смещения;
SBlank вклад отклика P-пути в случае использование эффекта гашения (т.е. временного пробела).


Таблица 1: подогнанные параметры модели. Числа показывают параметры, полученные путем подгонки предлагаемой модели к данным точности обнаружения смещения, усредненным по всем участникам опытов.


Изображение 3: результаты моделирования.

Согласно таблице 1, функция P-пути имеет более низкий контрастный отклик и меньший контраст полунасыщения, чем функция M-пути, что соответствует разнице в (p в 2.4 раза больше, чем m). Это согласуется с разницей между характеристиками контрастного отклика ЛКТ клеток P- и M-типа, о которых сообщалось в ранее проведенных исследованиях: контраст полунасыщения ЛКТ клеток P-типа приблизительно в 5 раз больше, чем у клеток M-типа.

Результаты моделирования полностью согласуются с гипотезой о разном влиянии двух путей на обнаружение смещения. Таким образом, Р-путь вносит положительный вклад в саккадное подавление смещения, а М-путь способствует обнаружению смещения объекта.

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

Эпилог


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

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

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

Авторы рассмотренного нами сегодня труда считают, что обе теории имеют право на существование. Даже больше, они не взаимоисключают друг друга, как показали результаты опытов и моделирования.

Опыты и моделирование также показали, что каждый из нейронных путей, затронутых в исследовании, играет свою роль в составлении визуальной картины того, что мы видим. М-путь отвечает за обнаружение смещения объекта, а Р-путь подавляет ошибочную информацию, вызванную саккадами. Таким образом, эффект SSD (саккадное подавление смещения) вступает в силу, когда сигнал Р-пути подавляет сигнал М-пути сразу после саккады. В противном случае информация содержала бы неточности (утрировано говоря, представьте себе ситуацию, когда человек двигается во время фотосъемки).

Зрительная система не только крайне важна для человека, поскольку позволяет получать большую часть информации об окружающем мире, но и крайне сложна. Наши глаза постоянно получают новую информацию. Даже если мы будем смотреть на один и тот же объект, наша сетчатка продолжает двигаться (саккады), собирая данные об объекте. И за счет того, что одни подсистемы собирают данные, а другие отфильтровывают ненужные и ложные, мы видим мир таким, каков он есть.

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

Благодарю за внимание, оставайтесь любопытствующими и хорошей всем рабочей недели, ребята. :)

Немного рекламы


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле в дата-центре Equinix Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Подробнее..

Монохроматическое зрение осьминоги и диагностика макулодистрофии у человека

07.05.2021 10:12:10 | Автор: admin


Многие существа, обитающие на Земле, обладают теми или иными зрительными особенностями, обусловленными их повадками и средой обитания: кошачьи хорошо видят в темноте, хищные птицы отлично видят быстрые движения, а у раков-богомолов 16 типов фоторецепторов (у нас их всего два: колбочки и палочки), что позволяет им видеть даже инфракрасный и ультрафиолетовый цвет. На фоне всего этого разнообразия суперсил зрение человека кажется весьма скудным. Однако, где не справляется эволюция, человек применяет технологии, в частности и для лечения проблем со зрением. Ученые из Бристольского университета (Великобритания) изучили зрение осьминога, который отличается своей способностью обнаруживать поляризованный свет. Этот труд позволил разработать устройство ранней диагностики макулодистрофии глаза человека, когда нарушается структура сетчатки и возникают проблемы с центральным зрением. Как именно видят осьминоги, какие открытия помогли в создании устройства диагностики, и как оно работает? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.

Основа исследования


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

Свет является электромагнитной волной, которую можно охарактеризовать векторами напряженности электрического поля (E) и напряженности магнитного поля (Н). Световые волны являются поперечными, т.е. векторы E и Н перпендикулярны и колеблются перпендикулярно вектору скорости распространения волны.

Главным отличием естественного света (солнце или настольная лампа) от поляризованного является число направлений, в которых колеблется вектор напряженности.

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


Неполяризованный свет (слева) проходит через поляризатор (центр) и становится поляризованным (справа).

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

Что касается поляризационного зрения, то это обусловлено необычным строением глаза того, кто обладает этим навыком.

В зрительных нейронах таких существ фоторецепторная мембрана рабдома* свернута в трубку. Из-за этого часть молекул родопсина* не участвуют в поглощении света.
Рабдом* светочувствительный элемент глаза, состоящий из рабдомер (скопление микроворсинок).
Родопсин* основной зрительный пигмент, содержащийся в палочках сетчатки глаза.
Обусловлено это тем, что дипольный момент такой молекулы ориентирован параллельно вектору светового луча. Таким образом микроворсинка получает дихроизм, т.е. способность по-разному поглощать свет в зависимости от поляризации.

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

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

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

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

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

При этом их поляризационное зрение действительно уникально, так как способно обеспечивать обнаружение даже самых незначительных контрастов поляризации, что было подтверждено экспериментально. Но, как говорят ученые, в тех трудах степень поляризации была выше (1.0), чем встречающаяся в природе обычно (<0.7), потому полный спектр возможностей поляризационного зрения головоногих не был исследован.

В рассматриваемом нами сегодня труде ученые решили заполнить это пробел в знаниях, проведя опыты с двумя видами осьминогов Abdopus aculeatus и Octopus cyanea.


Abdopus aculeatus (слева) и Octopus cyanea (справа).

В ходе опытов ученые пытались установить порог обнаружения поляризационных контрастов путем изменения как угла поляризации (AoP от angle of polarization), так и степени линейной поляризации (DoLP от degree of linear polarization) с использованием модифицированного ЖК-дисплея для визуализации стимулов динамической поляризации.

Подготовка к наблюдениям


В опытах участвовали 10 осьминогов (8 особей вида Abdopus aculeatus и 2 особи вида Octopus cyanea), пойманных на коралловых рифах вокруг острова Лизард (Большой Барьерный риф). Осьминогов содержали в индивидуальных стеклянных аквариумах (15 х 15 х 15 см), непрерывно снабжаемых фильтрованной и насыщенной кислородом океанской водой и свежей пищей, при этом поддерживался естественный цикл дня и ночи. Зная, что осьминоги обладают немалым интеллектом и талантом к побегам, верхняя крышка аквариумов была плотно закрыта и прижата свинцовыми грузиками (используются в дайвинге). Спустя 14 дней все особи были выпущены на волю.

Источником визуальных стимулов служил ЖК-дисплей (15 дюймов), расположенный перед тестовым аквариумом (на расстоянии 1016 см от него), куда помещали по одной особи за раз во время тестов. Презентации стимулов начинались, когда осьминог был неподвижен, но бодрствовал (т.е. полностью акклиматизировался к новой среде), и когда по крайней мере один глаз смотрел на экран. Конечно, порой требовалось подождать для удовлетворения этих требований, но так можно было минимизировать стресс для животного, тем самым повысив достоверность результатов наблюдения. Во время тестирования дно и две стенки аквариума, перпендикулярные обзорной поверхности ЖК-дисплея, были покрыты белым войлоком, чтобы уменьшить внутренние отражения. Вся тестовая камера (аквариум и экран вместе) были накрыты темной тканью, чтобы движения в лаборатории не отвлекали осьминогов от визуальных стимулов на экране.


Изображение 1

ЖК-дисплей был модифицирован для отображения видео только с поляризационным контрастом и возможностью менять DoLP (передний поляризатор был удален, так что изображения менялись по AoP, а не по интенсивности).

Для управления DoLP ЖК-дисплей был дополнительно модифицирован путем удаления заднего поляризатора, а также первичного источника света, замененного светодиодом (6 Вт), который проецировал свет (вне оси под углом 30) на один из специально разработанных фильтров DoLP, расположенных напротив задней стенки ЖК-дисплея.

Фильтры DoLP, используемые в тестах: тонкий лист акрила; фильтр нейтральной плотности (например, Lee Filters); зеленый желатиновый фильтр; тонкий (0.28 мм) лист тефлона для полной деполяризации и пространственной гомогенизации света; лист поляризатора; диффузионный / рассеивающий резервуар для уменьшения DoLP до того, как он попадет в жидкокристаллическую матрицу ().

DoLP варьировался за счет использования полых стеклянных сфер разной плотности (10 мкм), размещенных в воде в диффузионных баках (20 х 20 х 1 см, стенки из акрила толщиной 6 мм). Равномерное распределение стеклянных сфер поддерживалось интенсивным потоком от водяного насоса на 12 В.

Вариативность DoLP привела к изменениям общей интенсивности, передаваемой через фильтры: среднее изменение составило 7%, при этом общее изменение интенсивности от самого высокого до самого низкого DoLP фильтра составило 51% (1B). Чтобы компенсировать это, интенсивность различных фильтров DoLP была приблизительно согласована путем добавления желатиновых фильтров нейтральной плотности на задней (светодиодной) стороне тефлонового листа.

AoP света, излучаемого ЖК-дисплеем, варьировался от 45 до 130 по отношению к значению Uint8 (8-битная шкала ЖК-дисплея), которое может изменяться от 0 до 255. Фон, на котором демонстрировался визуальный стимул, был ориентирован горизонтально (0) путем поворота ЖК-дисплея на 45. Деполяризующие фильтры позволяли менять DoLP всего изображения (от 0.0 до 1.0) без изменения AoP контрастности (1B).

Роль визуального стимула выполняло видео с надвигающимся объектом в виде быстро расширяющегося круга. Эффект приближения объекта был сделан с помощью PowerPoint (продолжительность расширения круга была 200 мс), а исчезновение объекта (спустя 5 с) было выполнено анимацией сжатие в том же PowerPoint. Размер стимула на экране составлял 4.0 см, а угол обзора осьминога составлял менее 20.

Чтобы определить порог реакции осьминога на объект, AoP стимула относительно фона постепенно снижали, пока осьминог не переставал на него реагировать. Размер шага в процессе уменьшения AoP составлял 15 по шкале Uint8 (диапазон 0255).

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

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

Ответные реакции осьминогов были разделены на пять категорий: 0 нет ответа; 1 очень слабый ответ; 2 слабый ответ; 3 средний ответ; 4 сильный ответ.


Видео 1: демонстрация разных по силе ответный реакций осьминогов на визуальный стимул (звуки слышны только нам и соответствуют моменту, когда стимул появляется на экране; DoP = 30%).


Видео 2: демонстрация разных по силе ответных реакций осьминогов на визуальный стимул (звуки слышны только нам и соответствуют моменту, когда стимул появляется на экране; DoP = 50%).

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

Результаты наблюдений


Чаще всего осьминоги реагировали на стимул изменением окраски в течение одной миллисекунды (2A).


Изображение 2

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

Разницы в пороговых значениях реакции между исследуемыми видами (O. cyanea и A. aculeatus) обнаружено не было. Когда DoLP был высоким (> 0.3), особи обоих видов были способны реагировать на различия в AoP стимула относительно фона (AoP) при среднем значении 1.3. Когда DoLP был ниже 0.3, минимальный угловой контраст между стимулом и фоном, необходимый для проявления ответной реакции, быстро увеличивался, пока DoLP не достигал 0 (2B).

Альтернативным методом визуализации поляризационного контраста является мера поляризационного расстояния (PD от polarization distance). PD обеспечивает оценку количества контраста, обнаруживаемого системой поляризационного зрения (в данном случае осьминогами).

При построении графика функции PD, измеренные пороги поляризационного зрения примерно совпадают со средним значением PD в 0.010 (2C). Связь между этим пороговым значением и диапазоном стимулов DoLP и AoP показана методом проецирования порога на ось начального стимула (пунктирная черная линия на 2B). За счет этого видно, что большая часть расхождений может быть связана с ориентацией нижележащих поляризационно-чувствительных фоторецепторов, на которых основана модель поляризационного расстояния. Некоторые расхождения также можно объяснить индивидуальностью реакции тестируемых особей, но средний порог PD для всех комбинаций AoP / DoLP находился в диапазоне от 0.0049 до 0.024.

Анализ результатов наблюдений


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

Большое изменение AoP, необходимое для вызова ответа (1 при высоком DoLP, до 53 при низком DoLP), может быть объяснено с помощью нейрофизической модели поляризационного расстояния. Данная модель использует подход нейронной обработки для понимания контраста с точки зрения системы поляризационного зрения.

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

Ученые отмечают, что оценка функциональности чувствительного к поляризации зрения у осьминогов требует исследования типов зрительных сцен (т.е. совокупности визуальных стимулов в той или иной ситуации в естественной среде), которые могут испытывать эти животные. Фотографическая поляриметрия, проведенная в естественной среде, показывает диапазон поляризационных контрастов, которые близки к диапазону обнаружения зрительной системы осьминога или находятся в его пределах.


Изображение 3

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

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

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

Для более детального ознакомления с нюансами исследования рекомендую заглянуть в доклад ученых.

Эпилог


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

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

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

Диагностику часто называют половиной успешного лечения болезни, вторая половина это уже лекарства, операции и т.д. Это действительно так, ибо зная, с чем ты борешься, можно подобрать соответствующее оружие. Ранняя же диагностика позволяет избежать какого-либо конфликта, поскольку мы будем вооружены самым сильным оружием знанием. Так как зная, где и как может проявить себя болезнь, которой по факту еще нет, мы можем принять меры по ее предотвращению.

Благодарю за внимание, оставайтесь любопытствующими и отличных всем выходных, ребята! :)

Немного рекламы


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле в дата-центре Maincubes Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Подробнее..

Подвижные голограммы космический бой в наперстке

12.05.2021 10:23:58 | Автор: admin


Если взглянуть на произведения из категории научная фантастика, то можно найти немало общих элементов. Конечно же, одним из самых явных являются невероятные технологии роботы, космические корабли, стазис-камеры, и т.д. К лидерам по частоте появлений в кино, играх и фильмах можно с уверенностью причислить и голограммы. Праотцом голограмм считается, как неудивительно, Айзек Азимов, упоминающий эту технологию в цикле романов Основание. Первым же кино-дебютом для голограммы стал фильм Зардоз 1974 года с Шоном Коннери в главной роли. С тех пор голограммы начали появляться практически во всех научно-фантастических фильмах до той степени, что эта технология перестала удивлять, а порой начала вызывать откровенную неприязнь своей невероятной универсальностью в качестве инструмента продвижения сюжета. Однако, несмотря на недовольное ворчание некоторых киноманов, ученые по всему миру испытывают живейший интерес к этой невероятной технологии. Группа исследователей из университета Бригама Янгам (США) создали новый вариант технологии визуализации голографических изображений, которые буквально оживают на глазах. Данный труд уже освещался на Хабре, но давайте рассмотрим его подробнее. В чем же секрет подвижных голограмм, в чем их особенность и как все это выглядит? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.

Основа исследования


Еще в 2018 году был опубликован труд (A photophoretic-trap volumetric display), в котором ученые описывают устройство для объемного отображения с помощью фотофоретического* треппинга (photophoretic trapping). Работа устройства основана на удержании частицы в фотофоретической ловушке, которая перетаскивает частицу через каждую активную точку изображения в свободном пространстве (до 1 см3).
Фотофорез* явление, когда мелкие частицы, взвешенные в газе (аэрозоли) или жидкости (гидроколлоиды), начинают двигаться при освещении достаточно интенсивным светом. Причиной этого явления является неравномерное распределение температуры освещенной частицы в текучей среде.
Когда частица перемещается в свободном пространстве, она освещается лазером видимого диапазона, чтобы сформировать изображение, которое может увидеть человек.

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


Изображение 1

В данном труде использовалась фотофоретическая визуализация на основе оптической ловушки (OTD от optical trap display), способная создавать в воздухе как плоские, так и трехмерные объекты (1b и 1c).

С помощью OTD можно создать изображение на краю объема рабочего пространства и изменить его видимый параллакс так, чтобы наблюдателю казалось, что изображение находится за объемом рабочего пространства (1d). Этот эффект называют перспективная проекция и достигается в OTD путем изменения масштаба, формы и параллакса объекта на плоскости фонового изображения по мере движения наблюдателя. При этом сама плоскость также может поворачиваться лицом к наблюдателю, если она конечна (т.е. не сферическая).

Авторы предыдущих исследований указывают на то, что существует ограничение все точки изображения должны лежать вдоль линии, идущей от наблюдателя через объем дисплея. Точки, которые пользователь воспринимает на задней панели, больше не являются объемными, потому что они больше не совпадают с физическими рассеяниями, поэтому они теряют атрибут идеальной аккомодации*, но получают возможность резко увеличивать воспринимаемый размер изображения.
Аккомодация* физиологическая настройка глаза, позволяющая удерживать объект в фокусе при изменении расстояния до глаза.
Используя перспективную проекцию, OTD может одновременно генерировать как реальные объемные точки изображения для переднего плана, так и моделированные необъемные точки изображения для фона.

Теория устройства


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

Прохождение частицы через точку происходило несколько раз в секунду, создавая видимое для человека изображение (1a). Зрительная система человека может обрабатывать от 10 до 12 кадров в секунду и воспринимать их индивидуально, в то время как более высокие скорости воспринимаются как движение. Посему 10 кадров в секунду можно считать нижней границей убедительного фона для данной методики визуализации.

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

Одной из наиболее общих форм перспективы является трассировка лучей, при которой наблюдатель (человек или камера) рассматриваются как одна точка E = (x0, y0, z0) плюс отображаемая точка изображения X = (x, y, z) и плоскость, на которой отображается P. Нахождение пересечения прямой EX с плоскостью P дает координату точки X в пикселях. Перспективная проекция может быть определена следующим матричным соотношением для плоскости P, перпендикулярной линии EO, где O начало координат:



Матрица перспективной проекции предназначена для проецирования сцены из пространства на плоскость. Это позволяет отображать трехмерные точки с использованием двухмерной поверхности.

Практическое испытание устройства


Чтобы продемонстрировать смоделированные виртуальные изображения с использованием модифицированного параллакса (перспективной проекции), было создано плоское (2D) OTD-изображение луны на задней стороне рабочего пространства. Эта плоскость, в свою очередь, находилась на передней стороне трехмерной миниатюры дома (2b).


Изображение 2

Камера (наблюдатель) была размещена на вращающемся штативе (2a). Частота смены кадров визуализированной луны сохранялась на уровне 12 кадров в секунду. Количество вокселов (объемных пикселей) в секунду, визуализируемых в ходе опытов, составило примерно 10000 в секунду. Частота обновления векторных изображений была 28 Гц, однако повышенная скорость приводит к снижению качества. Потому было решено снизить частоту до 12 Гц, что снижает эффект мерцания.

Функция воспроизведения изображения OTD менялась перспективной проекцией синхронно с движением кронштейна камеры. Скорость движения камеры составляла примерно 0.0194 м/с. Камера была сфокусирована на дымоходе дома (примерно z = 2 мм). Радиус поворота составлял 100 мм до передней грани объектива камеры. Размеры дома составляли 7.7 х 10.6 х 7.4 мм. Первоначальный диаметр луны составлял 0.5 мм, а скорость ее движения 12 кадров в секунду.

Результаты исследования



Изображение 3

На 3a-3c луна нарисована в плоскости перед домом (z = 0 мм), при этом она не меняется, обеспечивая контрольное изображение. На 3d-3f луна все еще нарисована при z = 0, но при вращении камеры луна смещается в сторону для получения параллакса, соответствующего объекту, воспринимаемому при z = 8 мм. На 3g-3i видео с камеры наложено на симуляцию Blender (оба с включенной перспективной проекцией). При этом наблюдается незначительное смещение, вызванное несовершенством устройства, но относительный параллакс согласуется с результатами моделирования с высокой точностью (средняя ошибка составила всего 5.88%).

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

Несмотря на вышеописанные результаты, данная методика обладает некоторыми ограничениями: отсутствие диспаратности*, необходимость отслеживать положение глаз наблюдателя и несоответствие аккомодации/вергенции* и других визуальных сигналов.
Вергенция* одновременное движение обоих глаз в противоположных направлениях для получения или сохранения целостного бинокулярного зрения.
Диспаратность* различие взаимного положения точек, отображаемых на сетчатках левого и правого глаза.
Эксперименты проводились с использованием камеры, т.е. монокуляра. Чтобы методика визуализации голограммы была эффективна для людей, необходимо реализовать точный бинокулярный параллакс. А для этого OTD должен обладать управляемым анизотропным рассеянием.

Второе ограничение, связанное с отслеживанием наблюдателя, является достаточно серьезной проблемой, так как обычные OTD-изображения не требуют знания положения пользователя и по-прежнему обеспечивают угол обзора почти 4 стерадиан*.

Стерадиан* единица измерения телесных углов, т.е. части пространства, которая является объединением всех лучей, выходящих из данной точки (вершины угла) и пересекающих некоторую поверхность. Полный телесный угол (полная сфера) равна 4 стерадиан.
Однако, если достичь направленного рассеяния, то отслеживание наблюдателя может быть исключено как минимум в двух измерениях (горизонтальном и вертикальном). Третье же измерение (расстояние от наблюдателя до изображения) по-прежнему будет необходимо для идеальной реконструкции перспективы, поскольку перспективная проекция основана на трехмерной точке наблюдения.

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

Для более детального ознакомления с нюансами исследования рекомендую заглянуть в доклад ученых.

Эпилог


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

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

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

Видео, в котором авторы исследования рассказывают о своем творении.

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

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

Благодарю за внимание, оставайтесь любопытствующими и хорошей всем рабочей недели, ребята. :)

Немного рекламы


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле в дата-центре Maincubes Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Подробнее..

Топ самых важных функций Android для слепых мнение незрячих экспертов

05.08.2020 18:06:10 | Автор: admin


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

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

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

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

Как включить программу экранного доступа?


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

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

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

Третий способ тоже связан с кнопкой домой. Если зажать её на 7 секунд, то на некоторых моделях смартфонов откроется Google Ассистент. Скажите ему голосом стандартную фразу: окей, гугл. А затем попросите включить программу экранного доступа.

В смартфонах, работающих на операционной системе Android, по умолчанию их может быть две TalkBack (на большинстве устройствах) и VoiceOver (на смартфонах компании Samsung и некоторых других). Соответственно, команда Google Ассистенту будет звучать так: включи толк бэк. Или так: включи войс овер.

Есть ещё один способ для телефонов, производства Samsung. На смартфонах этой марки можно зажать кнопку питания на 5 секунд. Обычно эта кнопка расположена на правом или левом торце устройства и служит для включения и выключения дисплея и самого телефона. Через 5 секунд раздастся звук входящего сообщения. После этого приложите два пальца к экрану примерно на 2 см ниже динамика и удерживайте их в таком положении 7 секунд. При этом пальцы должны располагаться друг от друга на некотором расстоянии оставьте между ними хотя бы 1 см.

Как переозвучить непонятную фразу?


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

Для этого нужно использовать вертикальные свайпы так называются короткие движения пальцем по экрану вверх и вниз. Если вы пользуетесь TalkBack со стандартными настройками, то вертикальными свайпами вы сможете выбрать нужный уровень детализации символы, слова, строки, абзацы. А горизонтальными свайпами вправо и влево вы сможете перемещаться по элементам выбранного вами уровня.

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

Как скопировать последнюю фразу в буфер обмена?


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

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

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

Как улучшить доступность не озвучиваемого приложения?


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

Как настроить озвучку текста?


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

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

На некоторых смартфонах в настройках специальных возможностей может не оказаться функции озвучивания при нажатии. В таком случае добавить её можно вручную. Откройте Play Маркет и с помощью голоса или текста задайте запрос специальные возможности. Найдите приложение Специальные возможности для Android от Google LLC оно будет самым первым в списке. Как только вы его установите, в настройках специальных возможностей вашего телефона появится функция озвучивание при нажатии.

Эта функция доступна только для операционной системы Android версии 6 и более новых.

Как отключить программу экранного доступа?


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

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

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

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

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

Книга Я отлично вижу! Улучшаем зрение сами. Советы врача

18.12.2020 14:16:13 | Автор: admin
image Привет, Хаброжители!

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


Упражнения для укрепления глазодвигательных мышц


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

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

Я уже писала в начале книги, что это один из самых опасных ложных стереотипов о зрении. На самом деле бездумные движения глаз в разные стороны мало помогают. Упражнения для глаз это лишь 5 % успеха в программе естественного восстановления зрения!

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

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

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

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

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

Три группы упражнений для глазодвигательных мышц


Итак, для начала разберемся, какого рода движения способны совершать наши глаза.

Во-первых, мы можем смотреть вверх-вниз, вправо-влево и по диагоналям. Все эти движения осуществляют внешние, или экстраокулярные, глазные мышцы.

Во-вторых, наши глаза могут вращаться и делать круговые движения в разные стороны и в разных плоскостях.

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

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

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

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

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

Упражнения первой группы


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

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

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

Упражнения второй группы


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

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

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

Упражнения третьей группы


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

Сильно закройте глаза, как бы вдавливая веками глазное яблоко и втягивая его мышцами глаза внутрь. Затем широко откройте и выпучите глаза, как будто хотите, чтобы они вылезли из орбит.

Это упражнение нужно делать обязательно с интервалами: закройте глаза, откройте, затем отдохните 30 секунд.

Принципиальное значение здесь имеет поза, в которой вы делаете упражнение. Какая поза считается для тела и глаз идеальной, описано в главе 4 (см. с. 8284). Когда вы зажмуриваетесь, отклоняйте корпус назад, когда раскрываете глаза, двигайте корпус вперед. Затем возвращайтесь в исходное положение и отдыхайте.

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

Все перечисленные упражнения являются лишь базой, азбукой, на которой должен строиться сбалансированный комплекс гимнастики для глаз. При этом нужно чередовать упражнения всех трех групп и обязательно сдерживать себя в количестве повторений: каждое упражнение выполняется 3-4, максимум 5-6 раз.

Комплексы упражнений для глазодвигательных мышц


Восьмерки

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

Соедините теперь все эти точки. Что получилось? Правильно, фигура вроде восьмерки, только с острыми углами. Теперь скруглите взглядом углы, несколько раз тщательно прорисовав большую восьмерку.

Какие группы мышц при этом задействуются? Конечно, первая и вторая. Здесь есть движения и по диагонали, и по кругу. Да еще и пересечение центральной точки, активизирующее нейронную связь между правым и левым полушариями.

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

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

Спирали и качели

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

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

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

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

Выполняя эти упражнения, обязательно фиксируйте взгляд на 2-3 секунды в каждой точке и слегка раскачивайтесь вперед-назад при перемещении взгляда. Какие группы мышц при этом тренируются? Совершенно верно, все три.

Винтовая лестница, дуги и серпантин

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

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

Затем положите лестницу набок или представьте винт от большой мясорубки. Пройдите взглядом вдоль этого винта слева направо и справа налево.

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

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

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

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

Все это было тренировкой первой и второй групп глазодвигательных мышц. Чтобы добавить в это упражнение третью группу, дуги можно рисовать глазами, двигая их вперед-назад по некоему горбатому мостику. Можно заныривать глазами вперед от уровня своей груди и выныривать обратно по линии лодки типа гондолы.

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

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

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

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

Тренировки между делом


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

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

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

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

А метро! Одна моя слушательница написала: Как хорошо, что в Петербурге самое глубокое метро в мире: пока поднимаешься по эскалатору, можно все ступеньки перемыть, все перила протереть, арочные своды над головой побелить и плафоны по спирали почистить.

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

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

Более подробно с книгой можно ознакомиться на сайте издательства
Оглавление
Отрывок

Для Хаброжителей скидка 25% по купону Очки

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Подробнее..
Категории: Зрение , Здоровье , Очки

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru