![]() |
|
|
![]()
|
|
| MoebiusCat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Есть лабораторные микроснимки печатающей головки для принтера, на которых надо сделать регистрацию или что-то в этом роде (распознавание и отслеживание падающих капель). Есть такая проблема, что снимки очень зернистые - градиенты на областях одинаковой яркости почти такие же, как между "чёрным" и "белым".
Вначале я пробовала просто их сгладить, но этого оказалось недостаточно. Тогда я решила сделать бинаризацию (или бинаризацию после небольшого сглаживания), зернистость она более-менее убила, но из-за неравномерного освещения + остатки зернистости она работает не совсем правильно ( На картинке есть "чёрные" и "белые" области, у которых одинаковый уровень серого, поэтому простая глобальная бинаризация не работает. Я пробовала выделить какую-то "промежуточную" область, пиксель из которой считается "чёрным" или "белым" по количеству "чёрных" или "белых" соседей, но это тоже не дало стопроцентной точности. Ещё я пробовала поиграться с эрозией и тому подобным, но, опять же, это не смогло убить проблему полностью. ) Ещё я знаю, что есть различные методы адаптивной (локальной) бинаризации, например "верх шляпы". У кого нибудь есть ссылка на описание? Ещё мне буквально только что пришло в голову воспользоваться Фурье трансформом и убить им высокие частоты. Должно помочь? Какие ещё есть идеи? Это сообщение отредактировал(а) MoebiusCat - 5.1.2011, 15:06 Присоединённый файл ( Кол-во скачиваний: 26 )
drop.gif 547,97 Kb |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
MoebiusCat,
Снимок бы увидеть. А вообще насколько могу судить вам должно хватить алгоритма Canny для выделения границ он хорошо справляется с шумом. По поводу бинаризации. Алгоритм Sauvola считается одинм из лучших. Вот тут можно посмотреть реализацию его и парочки других. http://www.djvu-soft.narod.ru/bookscanlib/project.htm Добавлено через 6 минут и 41 секунду А да с зернистостью хорошо борется медианный фильтер. Или адаптивнаое сглаживание бинаризация. Берешь точку и смотришь в некоторой окрестности. если она выше чем средний то сглаживаем или бинаризуем. А да обрати внимание на алгоритм Canny там есть такой момент как Non maximum suppression тужи идею можно использовать при адаптивной бинаризации и сглаживания чтобы края лучше выделить. |
|||
|
||||
| MoebiusCat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Присоединила снимок (в первое сообщение).
Выделение границ пробовала (на матлабе), в том числе Канни. Результат присоединён :( Идея: а в чём заключается этот алгоритм? Возможно, я могу как-то его оптимизировать или понять, какой препроцессинг надо сделать, чтобы он сработал. За ссылку огромное спасибо, сейчас буду читать. Присоединённый файл ( Кол-во скачиваний: 23 )
edges_canny.gif 84,98 Kb |
|||
|
||||
| VictorTsaregorodtsev |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
У меня для выделения границ на Вашем снимке хорошо сработал фильтр Превитта размером 7*7 - см. прицепленную картинку.
В общем, фильтр подобрать можно будет - такой, чтобы снимки без капель давали не слишком яркие "границы" (как для области между темным и светлым, так и для зернистых изображений на градиентном фоне) - а вот границы капли при этом будут поярче. А дальше - один порог (подогнанный автоматом или вручную) для определения - границы ли это капли или и нет (достаточно яркие или недостаточно яркие). Если будет всё-таки значительный ложняк из-за шума (зернистости) - то снимки надо будет предварительно сглаживать скользящим окном довольно малого размера (думаю, что хватит окна 5*5). Еще один вариант поиска капли на изображении - исходное (фоновое) изображение отфильтровать фильтром выделения границ, каждое новое изображение - тоже фильтровать тем же фильтром, и затем вычитать из первой картинки вторую. Из-за шума самой камеры расхождения в результатах фильтрации фоновых участков будут небольшими, и разность их тоже будет небольшой. А вот где появляется новая граница - там разность между "старой" границей (или её отсутствием) и новой границей будет уже существенна. В текущем проекте я такую вещь себе сделал, обошелся фильтром Собеля 3*3 (малый размер фильтра - вери гуд для реалтайма, который мне в этом проекте нужен) Присоединённый файл ( Кол-во скачиваний: 31 )
Image2.jpg 31,23 Kb |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
MoebiusCat,
Моя плакала когда увидела matlab. Да уж я то думал там у них все хорошо. А они и 1/3 от алгоритма Canny не реализовали. Скачайте нормальный и попробуйте. Я сюда для пробы закинул. http://matlabserver.cs.rug.nl/cannyedgedet.../web/index.html Выбираем файл drop1.bmp И выставляем Linear filtering Sigma равной 7 И наслаждаемся картинкой. ![]() Это сообщение отредактировал(а) Pavia - 5.1.2011, 16:19 |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |