01.05.2015, 00:43
Итак, гениальному учёному захотелось, чтобы холодильник сам мог сказать, сколько в нём чего осталось. И, может быть, даже прислал СМСку: «Мужик, у тебя тут молоко заканчивается, и огурцы уже привет передают». Как этого добиться?
Очевидный выход — сканнер баркодов с базой данных по всем покупаемым товарам. Но как сканнер баркодов узнает, сколько молока осталось в двухлитровой коробке? И где на огурце баркод? От идеи оснастить холодильник весами и заставить всех домашних каждый раз ставить вещи на весы учёному хватило ума отказаться.
Следующей идеей стала цифровая камера — они тогда (в начале 2000-х) только-только начали набирать популярность. А точнее, несколько камер, расположенных так, чтобы увидеть всё, что есть в холодильнике. С анализом изображения, классификацией согласно опять же базе данных, и мониторингом количества после каждого открывания дверей. Учёный вздохнул тяжко, поднял свои конспекты по machine learning, натравил wget на парочку сайтов продуктовых магазинов, чтобы набить базу данных картинками обёрток и тактико-техническими характеристиками продуктов, и сел писать алгоритм.
Получалось плохо. Для начала, оказалось, что для создания устойчивой трёхмерной диспозиции объектов каждая полка должна была быть оснащена минимум тремя камерами, а лучше — четырьмя. (Ещё лучше — пятнадцатью, но тут уже включались экономические факторы: камеры тогда были всё ещё недешёвыми). Во-вторых, надо было построить объёмную модель каждой упаковки по тем её кускам, которые не загорожены другими упаковками; определить её раскраску и сверить с базой данных всех возможных упаковок, под разными углами и с разных расстояний. Это примерно то же самое, что по мочке уха и левой пятке с расстояния в несколько метров определить личность человека и узнать, за какую команду он болеет в каждом виде спорта. Требования к счётным мощностям тут совершенно дикие, на такую задачу впору натравливать NASA или министерство обороны, а не домашний сервер на основе Pentium IV, который мой коллега хотел нагрузить этой задачей вдобавок к остальным. В-третьих, надо было что-то придумать с распознаванием образов внутри полиэтиленовых пакетов: большое и зелёное — это огурец или авокадо, незрелый мандарин или уже перезрелый? В-четвёртых, а как поступить, если упаковка смята, или если этикетка наклеена очень криво? В-пятых, что делать с отделением для колбас: оно слишком тонкое, чтобы туда поместилось несколько камер, и вещи там лежат друг на друге очень плотненько, и все в одинаковых пакетиках, а колба́сы-то разные? В-шестых, как по внешнему виду упаковки понять, сколько ещё продукта осталось внутри? С молоком всё просто, упаковка полупрозрачная. Но кефир и сок поставляются в картонных тетрапакетах, которые отличаются некоторой непрозрачностью, а шоколадная паста имеет тенденцию залеплять упаковку изнутри вне зависимости от её реального количества.
Coup de grâce идее с автоматическим распознаванием образов нанесла жена, на глазах у моего коллеги доставшая сыр из коробки из-под котлет, потому что она, видите ли, удобнее.
Но гениальные учёные не сдаются! Если нельзя автоматически подсчитать, что в холодильнике заканчивается, то, может, удастся хотя бы облегчить эту задачу обычному пользователю? Итак, берём цифровые камеры, вешаем их на дверь холодильника изнутри. Берём LCD-экраны бросового качества (пять-семь битых пикселей в этом случае роли не играют), вешаем их на эту же дверь снаружи. Берём тот самый Pentium, пишем ему софт, который просто тупо пересылает картинки с камер внутри на экраны снаружи. Profit!
Система была создана, написана, опробована в лабораторных условиях (на столе) и отлажена. Учёный продырявил дверь холодильника, прикрутил к ней экраны, провёл провода, приклеил внутри холодильника камеры, подключил всё и позвал жену хвастаться новинкой.
Всё работало идеально. Экраны показывали внутренности холодильника. Жена была в восторге.
Учёный гордо закрыл дверь. В холодильнике погас свет.
От дальнейших экспериментов по порче домашней бытовой техники учёного отговорила жена, подкрепив свои аргументы тяжёлой кухонной утварью