|
Модераторы: Snowy, Alexeis, MetalFan |
|
offline |
|
|||
Опытный Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: нет Всего: 7 |
Есть следующая задача. Сканирую какой либо объект на сканере, например 10 рублей при этом их накрываю белым листом бумаги. Получаю изображение 10 рублей на белом фоне.
Задача следующая, как автоматически вырезать 10 рублей (прямоугольником) из этой картинки, т.е. нужно просто вырезать изображение при этом откинуть пустые белые края. Подскажите, есть ли готовые алгоритмы или как это можно реализовать??? Заранее спасибо. |
|||
|
||||
Bitter |
|
|||
Опытный лентяй Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
Нужно накрыть не белым листом, а, например - зелёным, как делают при съемках погоды. А после этого удалить все зелёные пиксели с некоторым допущением. В общем надо накрыть таким цветом, которого нет на купюре.
|
|||
|
||||
DreamBit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 18.1.2011 Репутация: нет Всего: нет |
Сравниваешь каждый пиксел изображение, то есть RGB скажем скока примерно должно быть красного, зеленого, синего соответственно (диапазон)
Как то делал подобное приходилось в редакторе подбирать эти составляющие. Это сообщение отредактировал(а) DreamBit - 20.2.2011, 21:40 |
|||
|
||||
DimaDD |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.11.2011 Репутация: нет Всего: нет |
В общем, примерно такая идея в голову пришла, если объект только один.
Сначала надо учесть, что сканер "шумит" и поэтому белый фон будет из пикселов несколько разного цвета. Т.е. сравнение цветов заключается в проверке, попадают ли они в некоторый настраиваемый(?) диапазон по RGB каналам. Сама процедура может заключаться в оконтуривании объекта. Сначала можно предположить, что объект, скорее всего, лежит примерно в центре скана. Начинаем сканировать (просматривать пикселы) в средней строке, пока не дойдём до не-фонового цвета. Если не нашли, то сканируем с некоторым шагом в двух направлениях попеременно - вверх и вниз, пока не дойдём до границы некоторого объекта. Шаг - скажем, 10 строк, а лучше заранее примерно оценить размер объекта, ежели сканируется примерно одно и то же, и взять минимальное возможное измерение как константу. Дошли до границы - поставили пока что Xmin=Xmax, Ymin=Ymax области (а также Xstart и Ystart), после этого начинаем оконтуривать: проверяем окружающие пикселы по час. стрелке (скажем), начиная с Xmin-1 (это был ещё цвет фона). Переходим на первый встреченный не-фоновый пиксел и сравниваем его координаты с Xmin, Xmax, Ymin и Ymax, заменяя нужные предельные значения. Снова проверяем окружающие пикселы по час. стрелке, начав с последнего не-фонового на прошлом шаге. И так далее, пока не вернёмся к Xstart, Ystart. Смотрим полученные Xmax-Xmin и Ymax-Ymin: ежели они совсем небольшие, то это, наверное, просто мусор на стекле сканера , тогда эту область надо проигнорировать и продолжить сканирование строки дальше с первого фонового пиксела. Раньше или позже встретится объект достаточно большого размера, он будет заключён в прямоугольную область Xmin, Ymin, Xmax, Ymax. При желании можно и сохранить координаты всех достаточно больших областей, просканировав так всё изображение. Т.е. найти и 10-рублёвку, и несколько монеток заодно! Это только в первом приближении, там ещё м.б. какие-нибудь подводные камни, которые сразу в голову не пришли... |
|||
|
||||
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |