...

вторник, 30 сентября 2014 г.

Что будет если смешать орехи, Arduino, OpenCV и Delphi. Часть 1

Привет, хабровчанин.

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


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


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


— К тебе пришли.


Я вышел из склепа и познакомился с парнем немного старше меня по имени Андрей. На ладони у него были половинки ядер грецкого ореха, одно темно-коричневое, почти черное, другое — светлое, практически бежевое. Андрей предложил работу, нужно было программно отделять первые от вторых. Это была первая ошибка. Нет, не подумайте плохо, ошибка не в том, что он связался со мной, а в том что принес мне настолько разные примеры. Мне была дана полная свобода в плане платформ и реализаций. Хоть и было предложено использовать камеры, я их отбросил, ввиду, как мне тогда показалось, сложности реализации и ресурсоемкости такого подхода. В качестве сенсора был выбран датчик tcs3200 — преобразователь цвет->частота, такие часто используют в DIY проектах по сортировке чего-нибудь цветного. По даташиту датчик имел хорошие характеристики: имел по 16 фотодиодов каждого цвета(R/G/B) плюс отдельно 16 фотодиодов для белого цвета. Глубина чувствительности каждого канала была заметно выше 8 бит на канал, которые предлагает бытовая вебкамера. Первая версия устройства представляла собой картонную трубу от пищевой фольги с вырезанным окошком для датчика и подсветки. Данные с максимально-возможной скоростью передавались в виндовое приложение. Получалось около 600 замеров в секунду.



imageimage

Фото не мои, взяты с сети, фотографий первого прототипа, увы, не осталось. Сам же прототип был порван детьми, когда они (и прототип и дети) были оставлены без присмотра.




На скриншоте приложения графики на черном фоне пришлось нарисовать в фотошопе по памяти. Далее все иллюстрации будут реальными.


Орехи скользили поштучно по трубе, наклоненной на 45 градусов, и если данные с датчика отличались от фона (предварительно калиброванного) — фиксировался орех и его средневзвешенный цвет. По этому значению и сортировались орехи, признаю, довольно примитивный алгоритм, тем менее он отменно работал.


imageimage

Фотографии, где видно разницу между первыми и вторыми орехами.


С теми сэмплами что дал мне Андрей работало все прекрасно и отделяло темные от светлых орехов с точностью в 95%. Какой же был эпик фэйл когда в следующий раз были принесены орехи с менее контрастными различиями. Поделка отказывалась различать орехи, ведь их средневзвешенный цвет был практически одинаков. Была предпринята попытка анализировать орехи по графикам время/насыщенность цвета, но это не дало желаемых результатов, датчик на таких скоростях прилично шумел. В результате чего было принято решение переходить на камеры.


Но об этом во второй, заключительной части, будет интересней, обещаю.



This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий