Как стать автором
Обновить
35
0.5
Константин @Cerberuser

Разработчик, экспериментатор

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

Восстановление расфокусированных и смазанных изображений. Практика

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

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

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →
Всего голосов 459: ↑456 и ↓3+453
Комментарии141

Джефф Дин из компании Google — это Чак Норрис нашего времени

Время на прочтение4 мин
Количество просмотров222K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →
Всего голосов 395: ↑364 и ↓31+333
Комментарии123

Дружба, благодаря которой Google вырос до огромных размеров

Время на прочтение23 мин
Количество просмотров39K
Программируя вместе за одним компьютером, Джефф Дин и Санджай Гемават изменили курс компании — и весь Интернет. На иллюстрации: лучшие программисты Google иногда кажутся двумя полушариями одного мозга. Рисунок Дэвида Планкерта

Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. Произошло ЧП: с октября 1999 года остановились краулеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. На карту было поставлено больше, чем предполагали инженеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
Читать дальше →
Всего голосов 57: ↑50 и ↓7+43
Комментарии36

Неопределённое поведение и правда не определено

Время на прочтение12 мин
Количество просмотров20K
Термином «неопределённое поведение» в языке C и C++ обозначают ситуацию, в которой буквально «чего только не бывает». Исторически, к неопределённому поведению относили случаи, когда прежние компиляторы для C (и архитектуры на нём) вели себя несовместимым образом, и комитет по разработке стандарта, в своей безграничной мудрости, решил ничего не решать по этому поводу (т.е. не отдавать предпочтение какой-то одной из конкурирующих реализаций). Неопределённым поведением также называли возможные ситуации, в которых стандарт, обычно столь исчерпывающий, не предписывал никакого конкретного поведения. У этого термина есть и третье значение, которое в наше время становится всё более актуальным: неопределённое поведение — это возможности для оптимизации. А разработчики на C и C++ обожают оптимизации; они настойчиво требуют, чтобы компиляторы прикладывали все усилия для ускорения работы кода.

Данная статья была впервые опубликована на сайте Cryptography Services. Перевод публикуется с разрешения автора Томаса Порнина (Thomas Pornin).
Читать дальше →
Всего голосов 90: ↑87 и ↓3+84
Комментарии60

Цивилизация Пружин, 4/5

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

Часть 4. Дороги и перекрёстки.


Предыдущая часть и её краткое содержание.


Читая этот раздел, следует понимать: всё, здесь перечисленное, либо не работает, либо… потенциально опасно. Ибо всякая возможность направлять и концентрировать энергию находит в первую очередь военное применение. Чингисхан подчинил полконтинента, направив энергию растущей травы (через лошадей) на военные нужды. Англия колонизировала половину планеты, оседлав энергию ветра. Первые быстрые концентраторы химической энергии — нефтяные зажигательные снаряды и пороховые бомбы. Двигатель внутреннего сгорания таскал на себе броню двух мировых войн по полям и болотам, и продолжает обслуживать бесчисленные столкновения по всему миру. А атомная энергия сначала принесла миру бомбу, и лишь затем — мирный реактор. Любая возможность обуздать новые потоки энергии, сконцентрировать её, либо быстро высвободить наверняка отслеживается военными.

Но если каждый пункт в разделе — фантазия или война, то зачем писать? Не лучше ли промолчать?

Мда… «Хотелось бы побыть страусом, да пол бетонный.» Я верю, что писать надо. Если что-то работает, пусть об этом знают все. Если нет — что ж, пусть задумаются тоже все.

Как-то так.

Приступим.
Читать
Всего голосов 171: ↑171 и ↓0+171
Комментарии271

Сапожник без сапог. Как студенты писали фишинговые письма

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

Привет, Хабр! Я редактор этого блога, а ещё иногда преподаю вирусологию в университете.


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



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

Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии20

Как поколение Y превратилось в поколение выгоревших?

Время на прочтение5 мин
Количество просмотров108K
Почему мы выгораем и даже не подозреваем об этом? Краткий перевод статьи Анн Хелен Петерсен, репортера BuzzFeed News.


Читать дальше →
Всего голосов 90: ↑79 и ↓11+68
Комментарии1297

Как правильно купить картошку, если ты дальтоник

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


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

Короче, сегодня я попробую рассказать вам, что такое цветоаномалии, насколько это мешает в жизни, и отвечу на самый сакраментальный вопрос «А какой цвет ты видишь на самом деле?».
Читать дальше →
Всего голосов 138: ↑135 и ↓3+132
Комментарии611

The Cake is a Lie

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

Have you ever thought — How to explain programming to the one never faced it before? It could be a problem, as long a new one will not understand you.


So, let's imagine — you have a friend, who is not soiled by computer science, never tried to automate something, never played factorio, never written a single line of code.


So, let's imagine a normal human being.


And let's call him Bill. He is not very good in Maths, just “not good”, but he loves candies!



Your task is to teach Bill some basic(or magic) IT things, you are doing every day. The simplest ones.
So what shall you do first? Basically — FEED HIM!

Read more →
Всего голосов 17: ↑15 и ↓2+13
Комментарии4

Условие как компромисс

Время на прочтение9 мин
Количество просмотров34K
Они объясняли мне: «У тебя есть апельсин, так? Теперь ты разрезаешь этот апельсин на конечное количество кусочков, складываешь их обратно в апельсин, и он становится таким же большим как солнце. Истина или ложь?»
— Между кусочками нет пространства? — Нет.
— Невозможно! Такого просто не может быть.
— Ха! Попался! Идите все сюда! Это теорема Того-то о безмерной мере!
И когда им кажется, что они поймали меня, я напоминаю им: «Но вы сказали апельсин! А апельсиновую кожуру невозможно разрезать на кусочки тоньше атомов».
— Но у нас есть условие непрерывности. Мы можем резать бесконечно!
— Нет, вы сказали апельсин, поэтому я принял, что вы имеете в виду настоящий апельсин.
Так что я всегда выигрывал. Если я угадывал — здорово. Если не угадывал, то всегда мог найти в их упрощении что-то, что они упускали из виду.

Ричард Фейнман. «Вы, конечно, шутите, мистер Фейнман!»

Пролог


Так получилось, что с самого детства я увлекаюсь занимательными задачами. Решал я их, как правило, хорошо и быстро, хотя не обходилось и без курьезов. Например, на олимпиаде по математике за седьмой класс, куда я попал, будучи в шестом, была задача: найти такой-то угол в треугольнике, обладающем такими-то свойствами. Мои познания в области геометрии были на тот момент весьма отрывочны, однако кое на что их всё же хватило. Недолго думая, я построил этот треугольник в тетради с помощью циркуля и линейки, а затем измерил нужный угол транспортиром. Это было практически как в том анекдоте про «найдите икс», когда ученик ткнул в букву «x» пальцем с радостным криком «вот он!».
Как интересно! Что же было дальше?
Всего голосов 59: ↑56 и ↓3+53
Комментарии79

Стратегия игры в телепатию

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

Одно из изданий этой механики

Есть колода из 100 карт с натуральными числами от 1 до 100, каждого по одному. Вы и второй игрок берёте по 3 карты из этой колоды. Задача — одну за одной выложить их на стол в порядке возрастания. Но нельзя меняться информацией между собой и показывать карту до момента, пока она не будет положена на стол. То есть нельзя говорить, стучать по столу, подмигивать и так далее — ничего нельзя.

Если в конце игры 6 карт выложены правильно, оба игрока выигрывают. В момент, когда первая же карта ложится неправильно — оба игрока проигрывают.

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

Не спешите под кат, сначала подумайте чуть-чуть, пожалуйста.
Читать дальше →
Всего голосов 60: ↑57 и ↓3+54
Комментарии155

Массивы, указатели и другие квантовые явления вокруг нас

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



Этот пост полностью соответсвует своему названию. Для начала в нем будет показано, что вопреки утверждению стандарта, а также классиков языка Си Кернигана и Ритчи, использование индексов массивов соверешенно не равнозначно использованию соответствующих указателей, а выбор эпиграфа будет понятен в самом конце. И да – середина поста тоже не пустая.
Читать дальше →
Всего голосов 98: ↑94 и ↓4+90
Комментарии105

Сергей и научный метод

Время на прочтение7 мин
Количество просмотров19K
Все совпадения случайны.
Кто не спрятался, я не виноват.
— Проходи, что стоишь как не родной?

Сергей огляделся — в квартире своего учителя-профессора он еще не бывал. Обыкновенная московская, в старом доме — видимо, еще с тех времен, когда их выдавали… или не выдавали, черт его знает, он-то эти времена уже не застал. Бардак конечно, но рабочий — повсюду книги и распечатки каких-то статей. Похоже, профессор продолжает вести активную научную работу, несмотря на свой возраст…
Читать дальше →
Всего голосов 51: ↑45 и ↓6+39
Комментарии39

Цифровая лирика: мегаподборка песен и клипов о программировании и программистах

Время на прочтение5 мин
Количество просмотров9.2K
Широко распространено мнение, что музыкальные способности и талант к программированию взаимосвязаны. Многие профессиональные музыканты питают склонность к точным наукам. Например, Борис Гребенщиков окончил факультет прикладной математики СПбГУ, а гитарист Radiohead Джонни Гринвуд (Jonny Greenwood) с детства неровно дышал к программированию.

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

Именно о них и пойдёт речь.

Всего голосов 18: ↑17 и ↓1+16
Комментарии14

Так ли страшен Rust, как его малюют

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

Некоторое время назад я начал понимать необходимость разнообразить мой опыт программирования исключительно на C#. После некоторого изучения различных вариантов, таких как Haskell, Scala, Rust и некоторых других, выбор пал на последний. Со временем я начал обращать внимание, что Rust всё больше и больше рекламируется исключительно как "системный язык", который нужен для вырвиглазно сложных компиляторов и супер-нагруженных систем, с особыми требованиями к безопасности и многопоточности, а для вариантов попроще есть Go/Python/Java/..., в то время как я с удовольствием и весьма успешно использовал его как замену моей рабочей лошадке C#.



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

Читать дальше →
Всего голосов 95: ↑92 и ↓3+89
Комментарии399
12 ...
14

Информация

В рейтинге
1 709-й
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer
Senior