Как стать автором
Обновить
7
0
Алексей @Alerman

Пользователь

Отправить сообщение

Фурье-вычисления для сравнения изображений

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

Как правило, для вычисления расстояний между изображениями используется формула, являющаяся суммой модулей или квадратов разностей интенсивности:
d(X,Y) = SUM ( X[i,j] — Y[i,j] )^2

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

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

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

На пороге дополненной реальности: к чему готовиться разработчикам (часть 2 из 3)

Время на прочтение9 мин
Количество просмотров83K

Это продолжение (см. часть 1) стенограммы одноименного доклада с конференции ADD-2010.

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

О теории искусственного интеллекта и работе подсознания и сознания

Время на прочтение7 мин
Количество просмотров14K
Многим знакомы фильмы, в которых искуственный интеллект, порожденный человеком, покушался на жизнь или контроль над своим создателем. Данный вывод может быть абсолютно закономерен для ИИ. Мало того, создание ИИ, подобного человеку, невозможно, а точнее сказать глупо, потому как это будет подобно созданию велосипеда на квадратных колесах, взамен известному классическому. Каким именно образом и почему такое возможно, и хочу вам рассказать. А также вы узнаете, почему человечество такое, какое есть.
Читать дальше →

Знай сложности алгоритмов

Время на прочтение2 мин
Количество просмотров1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →

Предельная производительность: C#

Время на прочтение56 мин
Количество просмотров265K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →

Онлайн-курсы Stanford University, Berkley и MIT в доступном виде

Время на прочтение2 мин
Количество просмотров54K


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

Пример такого поста: habrahabr.ru/post/139542

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

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

Под катом ссылки и список того, что было выложено, что ещё предстоит выложить…
Читать дальше →

WPF: конвертеры как MarkupExtension

Время на прочтение3 мин
Количество просмотров22K
Конверторы являются одной из важнейшей особенностью механизма привязки в WPF. Они позволяют управлять тем, как источник привязки будет представлен в UI. В данной статье я покажу, как немного упростить использование конвертеров в XAML коде.
Читать дальше →

«Оживление» пользовательского интерфейса

Время на прочтение12 мин
Количество просмотров32K
image

Приложение не отвечает?!


Многие из тех, кто программирует WPF-приложения, наверное тысячи раз писали конструкцию вида:
{Binding Items}

Если получение элементов коллекции Items выполняется в основном потоке приложения и занимает некоторое время — мы получаем «мертвый» пользовательский интерфейс. Приложение некоторое время не будет отрисовывать изменения состояния и реагировать на пользовательский ввод.
Читать дальше →

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

Время на прочтение3 мин
Количество просмотров42K
Корреляция между трудом и отдыхом на коротком промежутке времени прослеживается очень просто. Если ночь не спал — днем гудит голова, сложно сосредоточиться, работать практически не возможно (подчеркну, что здесь и далее речь идет об интеллектуальном труде).

А вот более длительные фазы, период которых составляет несколько месяцев, проследить значительно сложнее. Хотя эти фазы так же реальны, как и кратковременные фазы.

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

Лайтпак: Прокачан и открыт

Время на прочтение1 мин
Количество просмотров22K
Прошло около 3х месяцев с тех пор, как хабрачеловек @brunql опубликовал в этом блоге описание ambilight-подсветки для ноутбука. А сегодня мы готовы представить вам полностью переработанную, теперь банановую™ версию этого опенсорс-устройства:


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

Тонкие моменты C#

Время на прочтение6 мин
Количество просмотров109K
C SharpНе секрет, что C# сегодня популярный и динамично развывающийся язык, в отличие от своего прямого конкурента — языка Java, который в плане функциональности переживает период застоя. Основное неоспоримое преимущество Java — настоящая кросплатформенность, а не унылая и ограниченная, как у C#.

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

Как и любой язык, шарп имеет свои тонкости, особенности, «подводные камни» и малоизвестные возможности. Что я имею ввиду? Читайте под катом…
Читать дальше →

Ликвидатор велосипедов, часть 3: языки программирования

Время на прочтение4 мин
Количество просмотров2.8K
Вообще говоря, речь пойдет о разработке компиляторов не Just for fun, а для каких-либо проектов. Это могут быть проекты для внутреннего использования, или может быть это будут проекты, которые направлены на продажу. А может быть, на самововлечение сообщества для последующего доения этого сообщества. Я не буду разбирать причины, по которым может показаться, что создание нового языка программирования выведет компанию на новый уровень, однако причины находятся, языки пишутся, создавая, на мой взгляд, огромные проблемы, как самой компании, так и сотрудникам этой компании.

Ссылка на первую часть серии: оконные системы
Ссылка на вторую часть серии: построение графиков

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

Ликвидатор велосипедов: часть 1

Время на прочтение3 мин
Количество просмотров15K
imageЭтим постом я начинаю серию статей, которые должны помочь каждому разработчику избавиться от велосипедов в своих последующих и текущих проектах. Усилить код и увеличить функционал. Каждый из нас хочет внести в свою программу нечто, что сделает ее богаче, но зачастую решение либо не находится, либо лень тратить время на поиски… Либо внутри сидит глупая уверенность что это можно реализовать быстро и не менее функционально. В любом случае я хочу чтобы каждый пробежался глазами по спискам библиотек, которые я вам предоставлю на суд, и чтобы у каждого эти библиотеки отложились в памяти. И когда их функционал пригодится в будущем, я очень надеюсь что вы вспомните этот пост и поищите эти библиотеки вместо того чтобы писать все новые и новые велосипеды, полные палок в колесах.
Начну я с оконных менеджеров.
Читать дальше →

Ликвидатор велосипедов: часть 2

Время на прочтение3 мин
Количество просмотров34K
Исходя из того, что первая статья насобирала много плюсов и попала в избранное большого количества человек, я понял что тема актуальна и во-первых призываю подтянуться сообщество (ведь я не могу знать абсолютно все библиотеки и решения), а во-вторых буду продолжать своими силами рассказывать о том какие библиотеки можно подтянуть, если необходимо что-то сделать вместо того чтобы делать все новые и новые велосипеды, состоящие из водопроводных труб.

В этом топике я затрону важную для многих тему — тему рисования графиков в платформе .NET. Вспомните: ведь наверняка когда-то было просто необходимо вывести на экран красивый график… И что происходило? Правильно, появлялся новый велосипед.

Часть первая из серии



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

Где погрызть гранит науки

Время на прочтение4 мин
Количество просмотров28K
image Здравствуй, хабрасообщество. Я знаю, ты любишь халяву. А еще ты любишь учиться. Ведь так? А что может быть лучше для хабравчанина бесплатного образования? Вот и решил собрать специально для тебя подборку из ссылок, где можно набраться уму-разуму в области IT.
Все нижеперечисленные ресурсы абсолютно и официально бесплатны и свободны, что не может не радовать.

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

Большое спасибо в помощи добавлении ресурсов vansickle, RedFox, kagen, theinterman, sM1Le.

Англоязычные ресурсы



Компьютерные науки



OpenCourseWare MIT




Одно из самых больших хранилищ учебных курсов. Здесь собраны практически все курсы, которые преподаются в Massachusets Institute of Technology, который по праву считается одним из лучших в мире. На сайте всего 1900 курсов, а тех, которые преподаются на факультете Electrical Engineering and Computer Science я насчитал более 200. Состав большинства курсов: краткие конспекты лекций, подробное описание курса, календарный план, задания на лабораторные работы, задания на курсовые проекты и экзамены, промежуточные модули. К некоторым курсам прилагаются и видеолекции.

смотреть другие сайты

Разработка цифровых устройств на базе СБИС программируемой логики

Время на прочтение9 мин
Количество просмотров40K
На хабре периодически появляются статьи, посвященные разработке аппаратуры. Однако большинство из них исходят из теоретических позиций (что такое логические элементы, триггеры и т.д.) и на этом останавливаются, либо рассматривают вопрос в аспекте «сделай сам», т.е. что человек может создать самостоятельно в домашних условиях. Мне бы хотелось рассказать о том, как выглядит процедура проектирования аппаратных средств с точки зрения небольшой компании, зарабатывающей этим себе на хлеб с маслом.
Но сначала несколько слов о специфике данной области (по крайней мере в нашей стране). Приходится исходить из следующих реалий:
  1. невозможно в наших условиях соревноваться с интелом или хотя бы TI в выпуске процессоров и прочих разных микросхем — цена вхождения очень высока, рынки сбыта поделены, и, по большому счету, нет необходимых знаний и опыта;
  2. бессмысленно соревноваться с китайцами в производстве всевозможной массовой электроники — стоимость труда у них ниже, производственные мощности находятся у них же, рынки сбыта в руках крупных компаний;
  3. можно окучивать отечественные рынки различной несложной электроникой — от сигнализаций до елочных гирлянд. Кто-то живет этим, но норма прибыли невысока, а мороки много;
  4. можно участвовать в государственной программе поддержки бедных (РосПил). Отличная тема, но меня пригласить забыли.

Одна из немногих успешно работающих моделей — контрактные разработки для западных заказчиков. Идея проста: у нас заказывают наукоемкие исследования/разработки, результаты собирают вместе где-нибудь в Калифорнии (обычно по цепочке через нескольких посредников) и продают в конечном итоге какой-нибудь крупной корпорации-производителю электроники. Тому же Интелу, к примеру. Года через 2-3 все это возвращается к нам в составе сложных агрегатов (телефонов, мониторов и т.д.) в красивой коробке с клеймом “Made in USA” (что редко) либо “Made in China” (значительно чаще) по червонцу за пучок. Ситуация с одной стороны грустная — мы не владеем технологической цепочкой, а способны решать лишь отдельные задачи. Но есть и основания для оптимизма — таким образом российские разработчики входят в общемировую систему и получают ценный опыт. Компания, в которой я работаю, специализируется в основном на исследовательских разработках в области беспроводных коммуникаций. Исходя из этого я и буду вести дальнейший рассказ.

Как же выглядит процесс разработки?
Читать дальше →

Аспектно-ориентированное программирование. PostSharp

Время на прочтение3 мин
Количество просмотров12K
Аспектно-ориентированное программирование

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

PostSharp

Фреймворк PostSharp — это реализация аспектно-ориентированного подхода для .NET. PostSharp в отличие от многих своих аналогов работает как пост-компилятор, то есть он вносит изменения в MSIL (Microsoft Intermediate Language).
PostSharp позволяет легко создавать атрибуты, которые меняют поведение методов, полей и типов. Для этого нужно унаследовать класс атрибута от одного из предоставляемых библиотекой базовых классов, реализовать его виртуальные методы и применить этот атрибут.
Читать дальше →

ТАУ-Дарвинизм

Время на прочтение10 мин
Количество просмотров5.2K

Предисловие


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

Аркадий и Борис Стругацкие (Полдень. ХХII век).

Статья посвящена вопросу применимости генетических алгоритмов к проблеме идентификации динамической системы.
Обновлено: опубликовано продолжение ТАУ-Дарвинизм: реализация на Ruby
Как заглянуть в черный ящик читайте тут

Рендеринг картинок через WPF на примере Pivot

Время на прочтение2 мин
Количество просмотров2.1K
Pivot не нуждается в представлении. Если вбить это слово в поиск хабра, результатом будут 37 статей, среди которых есть как обзоры, так и туториалы. Поэтому я решил сосредоточить свои усилия лишь на одном аспекте работы с Pivot — на картинках.
Читать дальше →

Знакомство с асинхронными операциями в C# 5

Время на прочтение10 мин
Количество просмотров21K
В прошлый раз мы говорили о том, как можно упростить работу с асинхронными операциями с помощью класса AsyncEnumerator Джеффри Рихтера, а также с помощью библиотеки Reactive Extensions. Однако, как поведал нам недавно Хейлсберг с компанией, счастье таки наступит с выходом новой версии языка C# и нам не понадобится использовать сторонние и не очень велосипеды, при работе с асинхронными операциями.

Идея, которая лежит в основе асинхронных операций в C# 5, очень похожа на ту, которую использовал Джеффри Рихтер в своем классе AsyncEnumerator, только на этот раз помимо нас с вами и старины Рихтера о ней еще узнал и компилятор (что здорово сказывается на вкусовых качествах сего синтаксического сахарка).  Для начала, давайте вернемся к синхронной версии нашего гениального примера, который мы использовали ранее:

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

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность