Устройство компьютера

Введение

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

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

Примеры применения компьютерного зрения

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

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

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

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

Другие области применения включают:

  • Поддержку создания видеоэффектов для кино и телевидения
  • Наблюдение

SimpleITK

ITK или Insight Segmentation and Registration Toolkit — это кросс-платформенная система с открытым кодом, предоставляющая расширенный набор инструментов для анализа изображений. Сюда относится и SimpleITK — упрощенный слой, «надстроенный» поверх ITK. Данный слой облегчает работу с библиотекой при быстром прототипировании, обучении и интерпретируемых языках. SimpleITK — это набор инструментов для анализа изображений с большим количеством компонентов, поддерживающих общую фильтрацию, сегментацию и регистрацию изображений. Сам SimpleITK написан на C++, но доступен для многих языков программирования, включая Python.

Ресурсы

Jupyter Notebook показывает использование SimpleITK в образовательных и исследовательских целях. Он также демонстрирует возможности SimpleITK по интерактивному анализу изображений с использованием языков программирования Python и R.

Пример

Анимация ниже — это визуализация процесса преобразования при регистрации КТ- и МРТ-снимков в SimpleITK и Python. Исходный код доступен здесь.

Конструктивные особенности

Перфолента

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

Цифровой или аналоговый

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

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

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

Система счисления

Примером компьютера на основе десятичной системы счисления является первая американская вычислительная машина Марк I.

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

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

Под руководством академика Хетагурова Я. А. разработан «высоконадёжный и защищённый микропроцессор недвоичной системы кодирования для устройств реального времени», использующий систему кодирования 1 из 4 с активным нулём.

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

Хранение программ и данных

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

2.4. Вычислительный эксперимент

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

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

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

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

Этимология и особенности терминологии

См. также: Электронно-вычислительная машина

Слово компьютер является производным от английских слов to compute, computer, которые переводятся как «вычислять», «вычислитель» (английское слово, в свою очередь, происходит от латинского computāre — «вычислять»). Первоначально в английском языке это слово означало человека, производящего арифметические вычисления с привлечением или без привлечения механических устройств. В дальнейшем его значение было перенесено на сами машины, однако современные компьютеры выполняют множество задач, не связанных напрямую с математикой.

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

Понятие компьютер следует отличать от понятия Электронно-вычислительная машина (ЭВМ); последняя является одним из способов реализации компьютера. ЭВМ подразумевает использование электронных компонентов в качестве её функциональных узлов, однако компьютер может быть устроен и на других принципах — он может быть механическим, биологическим, оптическим, квантовым и т. п., работая за счёт перемещения механических частей, движения электронов, фотонов или эффектов других физических явлений. Кроме того, по типу функционирования вычислительная машина может быть цифровой (ЦВМ) и аналоговой (АВМ). С другой стороны, термин «компьютер» предполагает возможность изменения выполняемой программы (перепрограммирования), что возможно не для всех видов ЭВМ.

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

OpenCV-Python

OpenCV (Open Source Computer Vision Library) — одна из самых популярных библиотек для приложений по компьютерному зрению.OpenCV-Python — это Python-версия интерфейса для OpenCV. Наличие кода на C/C++ в бэкенде гарантирует быстроту библиотеки, а Python­-обертка во фронтенде обеспечивает легкость настройки и развертывания. Благодаря этому OpenCV-Python является отличным решением для высоконагруженных вычислительных программ по компьютерному зрению.

Пример

Наглядный пример использования OpenCV-Python при наложении изображения с помощью пирамид. В результате мы создаем новый фрукт под названием «аплоко

PyCairo

PyCairo представляет собой набор привязок Python-кода для графической библиотеки Cairo. Cairo — это 2D-библиотека для отрисовки векторной графики. Векторная графика интересна тем, что не теряет своей четкости при изменении размеров или трансформации. PyCairo — это набор привязок для Cairo, с помощью которых можно вызывать Cairo-команды из Python.

Ресурсы

Подробная информация по установке и работе доступна в GitHub-репозитории PyCairo. Есть еще вводное руководство с кратким описанием PyCairo.

Отрисовка линий, базовых фигур и радиальных градиентов.

Заключение

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

  • Переменная __name__ в Python
  • Понятие о виртуальных средах в Python
  • Изучение Python: от нуля до мастера

Читайте нас в телеграмме и vk

Перевод статьиParul Pandey10 Python image manipulation tools

Преимущества компьютерного моделирования

Компьютерное моделирование дает возможность:

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

Литература

  • E. R. Davies. Machine Vision : Theory, Algorithms, Practicalities (англ.). — Morgan Kaufmann, 2004.
  • Demant C., Streicher-Abel B. and Waszkewitz P. Industrial Image Processing: Visual Quality Control in Manufacturing (англ.). — Springer-Verlag, 1999. — ISBN 3-540-66410-6.
  • Gonzales R. C. and Wintz P. A. Digital Image Processing (неопр.). — Longman Higher Education, 2001. — ISBN 978-0201110265.
  • Pham D.T. and Alcock R.J. Smart Inspection Systems: Techniques and Applications of Intelligent Vision (англ.). — Academic Press, 2003. — ISBN 0-12-554157-0.
  • Berthold K.P. Horn. Robot Vision (неопр.). — MIT Press, 1986. — ISBN 0-262-08159-8 (Б.К.П. Хорн, Зрение роботов: перевод с англ. — М.: Мир, 1989).

Применение

Трёхмерная карта поверхности участка земной суши, построенная при помощи компьютерной программы

Первые компьютеры создавались исключительно для вычислений (что отражено в названиях «компьютер» и «ЭВМ»). Даже самые примитивные компьютеры в этой области во много раз превосходят людей (если не считать некоторых уникальных людей-счётчиков). Не случайно первым высокоуровневым языком программирования был Фортран, предназначенный исключительно для выполнения математических расчётов.

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

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

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

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

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

Направления развития компьютеров

Нейрокомпьютеры можно отнести к шестому поколению ЭВМ. Несмотря на то, что реальное применение нейросетей началось относительно недавно, нейрокомпьютингу как научному направлению пошел седьмой десяток лет, а первый нейрокомпьютер был построен в 1958 году. Разработчиком машины был Фрэнк Розенблатт, который подарил своему детищу имя Mark I.

Теория нейронных сетей впервые была обозначена в работе МакКаллока и Питтса в 1943 г.: любую арифметическую или логическую функцию можно реализовать с помощью простой нейронной сети. Интерес к нейрокомпьютингу снова вспыхнул в начале 80-х годов и был подогрет новыми работами с многослойным перцептроном и параллельными вычислениями.

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

Представитель VI-го поколения ЭВМ — Mark I

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

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

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

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

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

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

Молекулярные компьютеры — это ПК, принцип действия которых основан на использовании изменении свойств молекул в процессе фотосинтеза.  В процессе фотосинтеза молекула принимает различные состояния, так что ученым остается только присвоить определенные логические значения каждом состояния, то есть «0» или «1». Используя определенные молекулы, ученые определили, что их фотоцикл состоит всего из двух состояний, «переключать» которые можно изменяя кислотно-щелочной баланс среды. Последнее очень легко сделать с помощью электрического сигнала. Современные технологии уже позволяют создавать целые цепочки молекул, организованные подобным образом. Таким образом, очень даже возможно, что и молекулярные компьютеры ждут нас «не за горами».

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

Computer Vision Basics

The progress in computer vision primarily happens with the help of neural networks and deep learning. But to get started in this area, you should cover the basics first.

This short video explains the basics and shows some examples of code. You can also see how we created the first part of the simple object detector from the drone video:

Images Are Multidimensional Arrays

An image is represented as a multidimensional array. In Python, it is of the data type numpy while in C, it is Mat. The coordinates (0, 0) are in the upper0left corner. When you have a colored image, there will be three color values for each coordinate. Depending on the resolution and color depth, those arrays can vary in size. The color values go from 0 to 255. Note that with OpenCV, you first specify the Y and then the X coordinate (which is often confusing).

The following code is reading an image file and executes some basic operations on pixel level:

Color Space

The default color space in OpenCV is BGR (Blue Green Red). It is more commonly known as RGB, so there is more confusion with the order of basics in OpenCV. (But, of course, there is a good reason for this: “It was this way and will, therefore, stay this way.”)

Depending on the color scheme you are working in, there are advantages and disadvantages for your application. The color space of HSV, for example, is easier to handle if you are filtering for specific color ranges. If you want to filter everything that is «kind of orange» in a BGR color space, that’s not so easy. HSV is also not so heavily affected by changes in lighting. If you convert an image to grayscale, it will only have one color channel. This makes sense if you want to reduce the amount of data or if you want to optimize processing time.

Here is another small example:

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

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

Adblock
detector