Как разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта.
На самом деле решение любой задачи сводится к сбору информации о наблюдаемом объекте. Причем этот принцип применим как для решения самых сложных научно-исследовательских задач, так и для решения прикладных задач. Работа изобретателя напоминает не столько работу волшебника, сколько путешествие первооткрывателя по неизведанной территории. Главное качество хорошего изобретателя – умение собирать информацию.
Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
В общем случае задача распознавания образов до сих пор не решена. Поэтому поговорим сначала о тех методах, которые в некоторых случаях все же позволяют находить отдельные объекты на изображении, а затем порассуждаем о будущем.
Человеческий глаз имеет несколько блоков, способных распознавать свойства изображения. Человек быстро выхватывает из окружающей реальности наборы объектов и классифицирует их. Какими критериями он руководствуется? Их не так много:
Если Вы видели картинку, которая получается в современных цифровых фотоаппаратах без обработки, то Вы знаете, что выглядит она просто ужасно. Она заполнена шумом. Даже когда Вы скачиваете картинку на компьютер и она уже прошла внутреннюю обработку в фотоаппарате, если ее увеличить и посмотреть на отдельные пиксели, можно увидеть, как мужественно цифровые алгоритмы борются с шумом и проигрывают в этой неравной войне.
Некоторые алгоритмы стирают мелкие детали напрочь, этим знамениты сотовые телефоны Nokia. В некоторых случаях детали остались, но они окружены цветными островками сложной формы, это можно увидеть в фотоаппаратах Sony. Ну и так далее — у каждого метода свои проблемы.
Какие же есть средства, чтобы убрать этот шум, и которые не нарушают чужих патентов? Надеюсь, этот небольшой обзор будет полезным.
Как удалить объект на фотографии так, чтобы не осталось черного пятна? Чтобы место этого объекта заняли другие объекты, и никто бы этого не заметил? Долгое время считалось, что эта задача почти неразрешима. Предлагались такие псевдо-решения, как, например, замазать дырку какой-нибудь текстурой: akvis.com/ru/multibrush-tutorial/examples/removing-object.php
Наконец, на конференции SIGGRAPH в 2007 году было предложено уникальное по своей функциональности и возможностям решение. Не откажите себе в удовольствие посмотреть этот уникальный доклад (на английском): www.youtube.com/watch?v=vIFCV2spKtg
Разработка алгоритмов – это новая область знаний. Эта профессия возникла на пересечении науки и бизнеса. Работа «разработчика алгоритмов» — применять научные методы для решения той или другой нестандартной прикладной задачи.
«Нестандартной» — здесь ключевое слово, поскольку решения стандартных задач описаны в учебниках, и для их решения достаточно лишь иметь профильное образование. Однако в современном обществе возникла целая индустрия «технологических старт-апов» — фирм, создающихся для разработки новых технологических направлений, которые затем, в случае удачного завершения разработки, как правило, продаются за большие деньги крупным корпорациям. И в этих компаниях требуются люди, умеющие находить решения нестандартных прикладных задач.
Рынок IT-услуг на сегодня невероятно переполнен. В каждой области оперируют десятки, а в более популярных областях сотни и тысячи технологических компаний, разбросанных по всему миру. Арсенал убеждения таких компаний широк, но, в общем, сводится к основным пунктам:
О нас знают!
Знает весь Интернет, знает Василий Иванович, знают в Нижних Гуселях, знают все клиенты Microsoft, знают все немецкие банки и т.п.
Мы надежные!
У нас много сотрудников, у нас много денег, у нас много связей, мы сделали какое-то значимое достижение.
Мы дешевые!
Здесь перечисляются скидки, дополнительные сервисы и т.п. Этот пункт обычно имеет наименьшее значение.
Работая консультантом технологических старт-апов, я хочу заметить, что есть еще один аргумент, который редко встречается, но когда он присутствует, то это имеет решающее значение.