Russian Qt Forum
Ноябрь 25, 2024, 07:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Распознавание объекта на снимке  (Прочитано 10647 раз)
nikeo
Гость
« : Декабрь 16, 2012, 18:40 »

Всем добрый вечер!

Если кто сталкивался,помогите в разработке алгоритма по определению части реки на снимке.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Декабрь 16, 2012, 19:37 »

Фраза "не изобретайте велосипед" употребляется не к месту примерно в 95% случаев - но здесь Вы попали в оставшиеся 5% Улыбающийся  Здесь надо сначала читать теорию распознавания образов, подобрать подходящий алгоритм, а потом уж (может быть) и свое что-то добавить.
Записан
Nagdiel
Гость
« Ответ #2 : Декабрь 17, 2012, 08:35 »

Вы как то нечетко задачу формулируете. Если Вы хотите выделить пиксели, которые соответствуют реке на снимке, можно попробовать один из методов сегментации. Идеально выделить обычно не получается, возникают разного рода артефакты типа "ложных тревог" или разрывов. С ними можно бороться при помощи алгоритмов математической морфологии.

Основы неплохо написаны в книге Р. Гонсалес, Р. Вудс "Цифровая обработка изображений"
Записан
nikeo
Гость
« Ответ #3 : Декабрь 17, 2012, 22:47 »

Все эти книжки я уже читал)основы знаю...у меня реализован метод по перепаду яркостей на снимке...но для реки это не подходит(
Записан
QuAzI
Гость
« Ответ #4 : Декабрь 18, 2012, 00:44 »

Попробуй увеличить контрастность, тогда река будет более... выделена от окружающих объектов... тогда должно зашуршать, хотя конечно весьма лажовая задача... нужно ещё смотреть, как обход контура делается... когда-то мне нужно было шуршить контуры детали отсканированной... нахавался геммора даже на относительно чистом скане.
Записан
nikeo
Гость
« Ответ #5 : Декабрь 18, 2012, 02:22 »

Вообщем то прогресс пошел Веселый

Теперь хотел бы попросить помощи в том,как увеличить контрастность...
На сколько я понимаю,нужен фильтр размытия,потом из оригинала вычесть размытую...
А вот как это делать,я пока не понял.
"Матрица свертки" и тд и тп - правильное направление?)

P.S:извиняюсь за такой способ задания вопросов!!!я в этом мало чего понимаю,приходится писать диплом,а эта часть совсем не по специальности,так что приходится изучать самому.
Записан
nikeo
Гость
« Ответ #6 : Декабрь 18, 2012, 02:26 »

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

вот вот,как раз над этим и думаю,так как надо бы от заданной точки идти в 4х направлениях(исходя из разработанного мной алгоритма)
Я накапливаю множество точек на снимке,где яркостные характеристики имеют малые различия(оцениваю по общей яркости пикселя,в котором преобладает синий спектр).
Записан
QuAzI
Гость
« Ответ #7 : Декабрь 18, 2012, 07:51 »

Я в своё время использовал круговой обход с настраиваемым шагом. На всяких мусорных артефактах близких к границе можно получить жестокий косяк, вплоть до зацикливания Грустный
Алгоритмом не поделишься?
Записан
Nagdiel
Гость
« Ответ #8 : Декабрь 18, 2012, 08:56 »

Теперь хотел бы попросить помощи в том,как увеличить контрастность...
На сколько я понимаю,нужен фильтр размытия,потом из оригинала вычесть размытую...
А вот как это делать,я пока не понял.
"Матрица свертки" и тд и тп - правильное направление?)

Если речь о том, чтобы использовать фильтр с фиксированной апертурой, например, гауссиан, то направление верное. Размытие в этом случае реализуется путем двумерной свертки изображения с маской фильтра. Если затем вычесть из исходного изображения обработанное фильтром, получится "усилить" перепады яркости.

Правда, непонятно зачем изобретать колесо. Для выделения границ есть метод Canny, например. Там как раз с размытия и начинают. Лично мне, кажется, что контуры лучше выделять, а не прослеживать, так как прослеживание сильно зависит от локальных особенностей изображения и чувствительно к накоплению ошибок.
Записан
nikeo
Гость
« Ответ #9 : Декабрь 18, 2012, 09:11 »

Теперь хотел бы попросить помощи в том,как увеличить контрастность...
На сколько я понимаю,нужен фильтр размытия,потом из оригинала вычесть размытую...
А вот как это делать,я пока не понял.
"Матрица свертки" и тд и тп - правильное направление?)

Если речь о том, чтобы использовать фильтр с фиксированной апертурой, например, гауссиан, то направление верное. Размытие в этом случае реализуется путем двумерной свертки изображения с маской фильтра. Если затем вычесть из исходного изображения обработанное фильтром, получится "усилить" перепады яркости.

Правда, непонятно зачем изобретать колесо. Для выделения границ есть метод Canny, например. Там как раз с размытия и начинают. Лично мне, кажется, что контуры лучше выделять, а не прослеживать, так как прослеживание сильно зависит от локальных особенностей изображения и чувствительно к накоплению ошибок.
никто и не изобретает велосипед)такой метод я и имел ввиду)меня вот лично вполне результат устраивает,и думаю научника с комиссией тоже устроит.
Но меня мой ум пытливый выводит...для накопления,нужно начальную точку задать,а я хотел бы,чтобы он ее сам нашел(
Да и большинство методов,строятся на статистике,а у меня к сожалению нету времени ее выводить..
Записан
nikeo
Гость
« Ответ #10 : Декабрь 18, 2012, 09:13 »

Я в своё время использовал круговой обход с настраиваемым шагом. На всяких мусорных артефактах близких к границе можно получить жестокий косяк, вплоть до зацикливания Грустный
Алгоритмом не поделишься?
Он пока в доработке,как доделаю,обязательно скину.
Записан
Nagdiel
Гость
« Ответ #11 : Декабрь 18, 2012, 09:26 »

А насколько сильно качество работы алгоритма зависит от выбора начальной точки?
Записан
Nagdiel
Гость
« Ответ #12 : Декабрь 18, 2012, 09:37 »

С точки зрения постановки вопроса, чтобы выбрать начальную точку на границе реки, нужно собственно знать, где находится эта самая граница, или хотя бы ее часть. В таком случае можно использовать что-нибудь простенькое для предварительного выделения контуров, затем выбирать по каким-либо признакам подходящий контур и точку на нем. А дальше использовать Ваш алгоритм для более точного прослеживания границы реки на снимке.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Декабрь 18, 2012, 10:53 »

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

Ok, с позиций "велосипедизма" - зачем тот контраст/перепад? Попробуем думать непредвзято (пусть наивно). Цвет реки хорошо заметен и колеблется в относительно небольшом диапазоне - ну и выделим все пиксели что соответствуют этому цвету +/- какая-то дельта. Далее - река должна иметь какую-то протяженность, Тестируем каждый полученный тег пикселей по длине x/y и, возможно, диагоналям. Выбрасываем теги что слишком малы. Это можно сделать за день и посмотреть - может всего хватает. А нет - по результатам искать как улучшить



Записан
Nagdiel
Гость
« Ответ #14 : Декабрь 18, 2012, 11:24 »

Согласен с Igors, сегментация тут подходит больше. Река действительно "хорошо" отделяется по цвету, а вот границы местами могут быть и размытыми. Сегмент (связная группа выделенных пикселей) с рекой, скорей всего, получится найти по максимуму площади. Если принципиально получить именно контурный препарат, то его после сегментации легко извлечь из бинарного изображения.

Еще интересно, как Ваш алгоритм работает с ответвлениями и внутренними контурами (там вроде островков нечто проглядывается)?. Кроме того, для реки в данном случае не получится замкнутого контура, выходит начальную точку нужно указывать для каждого из берегов?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 23.