| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Обработка изображения - что делать с зернистостью? |
| Автор: MoebiusCat 5.1.2011, 14:27 |
| Есть лабораторные микроснимки печатающей головки для принтера, на которых надо сделать регистрацию или что-то в этом роде (распознавание и отслеживание падающих капель). Есть такая проблема, что снимки очень зернистые - градиенты на областях одинаковой яркости почти такие же, как между "чёрным" и "белым". Вначале я пробовала просто их сгладить, но этого оказалось недостаточно. Тогда я решила сделать бинаризацию (или бинаризацию после небольшого сглаживания), зернистость она более-менее убила, но из-за неравномерного освещения + остатки зернистости она работает не совсем правильно ( На картинке есть "чёрные" и "белые" области, у которых одинаковый уровень серого, поэтому простая глобальная бинаризация не работает. Я пробовала выделить какую-то "промежуточную" область, пиксель из которой считается "чёрным" или "белым" по количеству "чёрных" или "белых" соседей, но это тоже не дало стопроцентной точности. Ещё я пробовала поиграться с эрозией и тому подобным, но, опять же, это не смогло убить проблему полностью. ) Ещё я знаю, что есть различные методы адаптивной (локальной) бинаризации, например "верх шляпы". У кого нибудь есть ссылка на описание? Ещё мне буквально только что пришло в голову воспользоваться Фурье трансформом и убить им высокие частоты. Должно помочь? Какие ещё есть идеи? |
| Автор: Pavia 5.1.2011, 14:40 |
| MoebiusCat, Снимок бы увидеть. А вообще насколько могу судить вам должно хватить алгоритма Canny для выделения границ он хорошо справляется с шумом. По поводу бинаризации. Алгоритм Sauvola считается одинм из лучших. Вот тут можно посмотреть реализацию его и парочки других. http://www.djvu-soft.narod.ru/bookscanlib/project.htm Добавлено через 6 минут и 41 секунду А да с зернистостью хорошо борется медианный фильтер. Или адаптивнаое сглаживание бинаризация. Берешь точку и смотришь в некоторой окрестности. если она выше чем средний то сглаживаем или бинаризуем. А да обрати внимание на алгоритм Canny там есть такой момент как Non maximum suppression тужи идею можно использовать при адаптивной бинаризации и сглаживания чтобы края лучше выделить. |
| Автор: MoebiusCat 5.1.2011, 15:02 |
| Присоединила снимок (в первое сообщение). Выделение границ пробовала (на матлабе), в том числе Канни. Результат присоединён :( Идея: а в чём заключается этот алгоритм? Возможно, я могу как-то его оптимизировать или понять, какой препроцессинг надо сделать, чтобы он сработал. За ссылку огромное спасибо, сейчас буду читать. |
| Автор: VictorTsaregorodtsev 5.1.2011, 16:05 |
| У меня для выделения границ на Вашем снимке хорошо сработал фильтр Превитта размером 7*7 - см. прицепленную картинку. В общем, фильтр подобрать можно будет - такой, чтобы снимки без капель давали не слишком яркие "границы" (как для области между темным и светлым, так и для зернистых изображений на градиентном фоне) - а вот границы капли при этом будут поярче. А дальше - один порог (подогнанный автоматом или вручную) для определения - границы ли это капли или и нет (достаточно яркие или недостаточно яркие). Если будет всё-таки значительный ложняк из-за шума (зернистости) - то снимки надо будет предварительно сглаживать скользящим окном довольно малого размера (думаю, что хватит окна 5*5). Еще один вариант поиска капли на изображении - исходное (фоновое) изображение отфильтровать фильтром выделения границ, каждое новое изображение - тоже фильтровать тем же фильтром, и затем вычитать из первой картинки вторую. Из-за шума самой камеры расхождения в результатах фильтрации фоновых участков будут небольшими, и разность их тоже будет небольшой. А вот где появляется новая граница - там разность между "старой" границей (или её отсутствием) и новой границей будет уже существенна. В текущем проекте я такую вещь себе сделал, обошелся фильтром Собеля 3*3 (малый размер фильтра - вери гуд для реалтайма, который мне в этом проекте нужен) |
| Автор: Pavia 5.1.2011, 16:05 |
| MoebiusCat, Моя плакала когда увидела matlab. Да уж я то думал там у них все хорошо. А они и 1/3 от алгоритма Canny не реализовали. Скачайте нормальный и попробуйте. Я сюда для пробы закинул. http://matlabserver.cs.rug.nl/cannyedgedetectionweb/web/index.html Выбираем файл drop1.bmp И выставляем Linear filtering Sigma равной 7 И наслаждаемся картинкой. http://s1.ipicture.ru/ |