Pull to refresh
0
@intofocusread⁠-⁠only

User

Send message

Эквализация гистограмм для повышения качества изображений

Reading time4 min
Reach and readers67K
Всем привет. Сейчас мы с научным руководителем готовим к изданию монографию, где пытаемся простыми словами рассказать об основах цифровой обработки изображений. В данной статье раскрывается очень простая, но в тоже время очень эффективная методика повышения качества изображений – эквализация гистограмм.
Читать дальше →

Стековая машина на моноидах

Reading time32 min
Reach and readers16K

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


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


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

Читать дальше →

Распознавание номеров: от А до 9

Reading time9 min
Reach and readers173K
Уже пару раз на Хабре возникали дискуссии на тему того, как сейчас работает распознавание номеров. Но статьи, где были бы показаны разные подходы к распознаванию номеров, на Хабре пока не было. Так что здесь попробуем разобраться, как все это работает. А потом, если статья вызовет интерес, продолжим и выложим работающую модель, которую можно будет поисследовать.

image
Читать дальше →

Использование каскада Хаара для сравнения изображений

Reading time4 min
Reach and readers75K
image

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

Пару слов о распознавании образов

Reading time13 min
Reach and readers320K
Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.
image

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

Компьютерное зрение. Лекция для Малого ШАДа Яндекса

Reading time7 min
Reach and readers69K
Область применения компьютерного зрения очень широка: от считывателей штрихкодов в супермаркетах до дополненной реальности. Из этой лекции вы узнаете, где используется и как работает компьютерное зрение, как выглядят изображения в цифрах, какие задачи в этой области решаются относительно легко, какие трудно, и почему.

Лекция рассчитана на старшеклассников – студентов Малого ШАДа, но и взрослые смогут почерпнуть из нее много полезного.



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

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

Подробный конспект лекции

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

Reading time4 min
Reach and readers56K

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

К изучению темы подключились специалисты из других областей, в том числе химии. И успешно. Профессор теоретической химии Сальваторе Торкуато вместе с теоретиком чисел Мэтью де Курси-Айрлэнд нашли новые шаблоны в распределении простых чисел, о которых раньше не было известно. Оказалось, что распределение простых чисел образует фракталоподобную дифракционную картину, чем-то похожую на картину дифракции у экзотических квазикристаллов.
Читать дальше →

STM32F4Discovery – подключаем камеру по интерфейсу DCMI

Reading time7 min
Reach and readers128K

STM32F4Discovery – подключаем камеру по интерфейсу DCMI



Когда-то, подключая камеру от мобильного телефона к микроконтроллеру STM32F407VGT6 (который имеет место быть на плате STM32F4Discovery), я даже не думал о том, что данный контроллер имеет специальный аппаратный интерфейс для данного дела. Может быть, невнимательно читал даташит, но я всегда считал, что интерфейс DCMI имеется только у чипов в корпусах UFBGA176 и LQFP от 144 ног. Однако, не так давно, открыл для себя озвученную деталь: 100-ногий STM32F407 также имеет DCMI на борту.
Являясь большим любителем изучения и совместного запуска различного мобильного железа (в частности, LCD и камер) с МК, мимо такого открытия я просто так пройти не смог, и решил восполнить данный пробел в изучении периферии STM32. Собственно, данный материал и посвящен описанию осуществления возникшей затеи.
Читать дальше →

Компьютерная мышка как точный датчик

Reading time5 min
Reach and readers44K
Задача: быстро сделать датчик линейного перемещения из компьютерной мышки.

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



С какими подмышиными камнями мы столкнулись, плюс техническая часть, расскажем дальше!
Читать дальше →

«Собрать большой коптер ничего о них не зная?» — да ерунда

Reading time7 min
Reach and readers43K
Думаю все заметили, что в интернете достаточно много статей про квадрики мелкого размера: тесты, обзоры и т. д. А вот тестов больших коптеров маловато. Думаю в основном потому, что большой коптер – это чаще всего индивидуальная постройка (не всегда, но часто). Поэтому я решил написать про свой личный «самосбор» – гексакоптер на раме tarotfy680. В качестве предыстории хочу рассказать о том как я собирал этот коптер с нулевыми знаниями. За три года он претерпел много модификаций: от мелких до полной смены «тяговой начинки».


Читать дальше →

Собственный алгоритм 2. Поиск похожих изображений

Reading time2 min
Reach and readers7K
В своей первой статье на Хабре, я рассказал о своем алгоритме для поиска похожих изображений. Сегодня я хочу рассказать о второй (улучшенной) версии своего алгоритма.

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

Собственный алгоритм поиска похожих изображений. Теория

Reading time6 min
Reach and readers27K
Недавно, в связи с разработкой новой линейки продукции, в нашей компании встала задача поиска идентичных изображений в базе.

Отдавать реализацию на аутсорс слишком дорого и не гарантирует наилучшего решения. Отдать на откуп фрилансеру — дешевле, но и решение скорее всего будет таким же дешевым и основанным на существующих библиотеках, типа OpenCV. Но если бы задача решалась так просто, то конкуренты уже давно бы этим воспользовались и сделали достойный продукт, но его на рынке нет. В общем, присущие нам перфекционизм, амбициозность и желание быть лучшими, не позволяют нам выводить на рынок продукт «как у всех», нам нужно лучше, быстрее, сильнее. Приняли решение самостоятельно разобраться в вопросе, выработать решение, написать подробное техническое задание и уже отдать на реализацию фрилансеру. Была надежда, что существуют готовые решения, которых просто не заметили конкуренты. Но изучив вопрос (а вместе с ним и алгоритмы ORB, BRIEF, FAST, SIFT, SURF, BRISK, A-KAZE, Viola-Jones и еще несколько) стало понятно, что у всех этих алгоритмов есть свои недостатки. Хотя для решения нашей задачи некоторые из вышеперечисленных алгоритмов и подходили, но как то неожиданно захотелось уникальности и простоты решения. И вот выношу на суд сообщества, алгоритм собственного сочинения.

Любителей покритиковать (конструктивно) прошу под кат.
Читать дальше →

Алгоритм быстрого нахождения похожих изображений

Reading time8 min
Reach and readers67K

Введение


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

Базовый Алгоритм


Мера схожести изображений


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

Робогепард из MIT — конкурент Boston Dynamics Cheetah

Reading time2 min
Reach and readers68K


Четвероногие роботы Boston Dynamics — не единственные, чью разработку финанисрует DARPA в рамках программы Maximum Mobility and Manipulation (M3). И хотя гепард, построенный в лаборатории бионики Массачусетского технологического института пока отстаёт от своего более известного бостонского собрата в скорости и автономности, он тоже очень интересен. Кроме того, в отличие от Boston Dynamics, MIT публикует гораздо больше подробностей о конструкции и процессе разработки своих роботов.

Создатели массачусетского гепарда считают одной из главных своих целей энергоэффективность робота. Чем меньше энергии тратит робот на то, чтобы двигаться с заданной скоростью, тем компактнее может быть его энергоустановка и тем дольше он сможет работать автономно. Эффективность передвижения гепарда MIT, который использует электропривод (в отличие от роботов Boston Dynamics, чьи ноги приводятся в движение гидравликой) очень близка к эффективности живого гепарда и других подобных сухопутных животных и в несколько раз выше Big Dog или двуногого робота Honda ASIMO.


Читать дальше →

Чтобы распознавать картинки, не нужно распознавать картинки

Reading time18 min
Reach and readers238K
Посмотрите на это фото.



Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

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

Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
Осторожно, тяжелые гифки

OS Day в Иннополисе

Reading time8 min
Reach and readers11K
Недавно я посетил конференцию разработчиков операционных систем OS Day. Организаторами были Дмитрий Завалишин, автор ОС Фантом, и ИСП РАН. Это уже вторая конференция, и на этот раз она проходила совместно с РИФ. Оба эти мероприятия были приурочены к официальному открытию города Иннополис, в котором, собственно, всё и происходило.

Я расскажу только о мероприятиях OS Day, поскольку сам в большинстве из них участвовал.

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

Как работает JS: управление памятью, четыре вида утечек памяти и борьба с ними

Reading time18 min
Reach and readers101K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы
В третьем материале из серии, которая посвящена особенностям работы JavaScript, мы поговорим о памяти. Эта тема крайне важна, однако, разработчики нередко игнорируют её. В основе этой ситуации лежат разные причины, среди которых — всё возрастающая сложность современных языков программирования и прогресс в развитии средств автоматического управления памятью. Помимо рассказа о модели памяти JS, мы поделимся с вами несколькими советами, направленными на борьбу с утечками памяти.



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

Использование устройства на базе STM32 в системе полива для открытого грунта

Reading time5 min
Reach and readers22K

Предисловие


Около года назад я описал в статье систему для полива моего участка — и теперь опишу дальнейшее её развитие.Год — достаточно большое время, и его удалось потратить с пользой. С удовольствием опишу и расскажу вам, что же у меня получилось.
Читать дальше →

Создание JPEG из ниоткуда

Reading time4 min
Reach and readers23K
Вот интересная демонстрация возможностей afl; меня реально удивило, что она работает!

$ mkdir in_dir
$ echo 'hello' >in_dir/hello
$ ./afl-fuzz -i in_dir -o out_dir ./jpeg-9a/djpeg

В сущности, я создал текстовый файл только со словом "hello" и попросил фаззер выдавать поток в программу, которая ожидает на входе изображение JPEG (djpeg это простая утилита, которая идёт вместе с распространённой графической библиотекой IJG jpeg; libjpeg-turbo тоже должна подойти). Конечно, мои входные данные не похожи на валидное изображение, так что утилита быстро отвергает их:

$ ./djpeg '../out_dir/queue/id:000000,orig:hello'
Not a JPEG file: starts with 0x68 0x65
Читать дальше →

Личность и звук: Герман Людвиг Гельмгольц – от фундаментальной физики до физиологии слуха и психоакустики

Reading time7 min
Reach and readers14K
Этой статьёй я начну очередной биографический цикл, посвященный ученым, благодаря которым мы знаем о физической природе звука действительно много.

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



Гельмгольц впервые создал электромеханический прообраз синтезатора звука, описал механизм слуха, построил модель человеческого уха, обосновал волновую природу звука. К заслугам ученого относится первое, и одно из самых стройных определений тембра (по мнению профессора Алдошиной, на 100 лет предопределило исследования звука в этой области), создание резонатора, подробные исследования колебания струн. Как истинный сын своего времени, Гельмгольц занимался не только акустикой, среди работ исследователя – исследования в области математики, природы электричества, психологии, термодинамики, оптики, физиологии, медицины, метеорологии.
Читать дальше →
1
23 ...

Information

Rating
Does not participate
Registered
Activity