Re[2]: Анализ изображения
От: Agent Smith Россия  
Дата: 22.03.08 04:49
Оценка: +1
Здравствуйте, vit_as, Вы писали:

_>Можно поробывать пройтись по изображению маской Собела, а потом сделать преобразование Хафа (оно как раз для поиска, прямых, окружностей и эллипсов)


По быстродействию не самое лучшее решение. Если задача представляет собой именно то, что написано в исходном сообщении, то Оператор Собеля из круга сделает окружность. Преобразование Хафа может использоваться для поиска произвольных кривых, но, учитывая сложность алгоритма по времени, чаще всего используется для поиска прямых линий, реже — для окружностей.
То решение, которое вы предложили, скорее всего подошло бы в случае сложного изображения с большим количеством разнородных объектов. Но автор ничего подобного не упомянул

PS: цифровая обработка изображений — огромная область знаний, поэтому сначала нужно четко формализовать решаемую задачу, а лишь потом подбирать методы для решения )
Never argue with a woman who reads. It's likely she can also think. (c)
Анализ изображения
От: head-dron  
Дата: 17.03.08 14:16
Оценка:
Имеется изображение (Черная картинка, и на ней маленький белый кружок).
Необходимо найти координаты этого кружка, и его размеры.
Что для этого нужно? На языке c#
Re: Анализ изображения
От: AGovorovsky  
Дата: 17.03.08 14:20
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Имеется изображение (Черная картинка, и на ней маленький белый кружок).

HD>Необходимо найти координаты этого кружка, и его размеры.
HD>Что для этого нужно? На языке c#

посмотри тут: http://code.google.com/p/aforge/
Re: Анализ изображения
От: Agent Smith Россия  
Дата: 20.03.08 04:57
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Имеется изображение (Черная картинка, и на ней маленький белый кружок).

HD>Необходимо найти координаты этого кружка, и его размеры.
HD>Что для этого нужно? На языке c#

Зависит от того, что на самом деле является исходными данными.
1) Если это 8-битное изображение, действительно белый круг (яркость 255) и черный фон (яркость 0), а круг — единственный не черный объект на изображении, то все просто: ищется первый белый пиксель, он становится начальной точкой для поиска белой компоненты связности (примерно как алгоритм обхода графа). Имея компоненту связности, можно легко узнать ее размеры
2) Если же круг не совсем белый, а фон не совсем черный (например, это фотография, рентгеновский снимок и т.п.), то все несколько сложнее. В простейшем случае можно провести бинаризацию изображения (по статическому порогу (например, 128) или вычислять порог динамически — для этого есть ряд методов, это вычисление требует некоторых вычислительных затрат, но качество будет заметно лучше на сложных изображениях). После бинаризации задача сводится к (1).

Собственно, если я не ответил на твой вопрос, то опиши задачу подробнее.

PS: конечно, можно найти готовую библиотеку
Never argue with a woman who reads. It's likely she can also think. (c)
Re: Анализ изображения
От: mihailik Украина  
Дата: 21.03.08 08:17
Оценка:
HD>Имеется изображение (Черная картинка, и на ней маленький белый кружок).
HD>Необходимо найти координаты этого кружка, и его размеры.
HD>Что для этого нужно? На языке c#

Для начала можно сильно уменьшить изображение, чтобы круг стал почти точкой. Ты же знаешь прикидочно, какой размер круга? Если нет, этот шаг придётся пропустить.

Потом нужно при помощи Bitmap.LockBits заблокировать битмап то есть получить его по-битово. Дальше просто бежишь по байтам и ищешь белый (или "почти" белый для надёжности). Ищи вдоль строк, начиная сверху.

Чтобы получить центр и диаметр, от первой белой точки двигай дальше до первой чёрной, потом бери среднюю точку между этими двумя. Это будет верхний край. После этого двигай вниз до тех пор пока белое не кончится. Вот тебе и вертикальный диаметр нашёлся. Длину и координаты центра отсюда получишь.
Re: Анализ изображения
От: vit_as Россия  
Дата: 21.03.08 20:13
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Имеется изображение (Черная картинка, и на ней маленький белый кружок).

HD>Необходимо найти координаты этого кружка, и его размеры.
HD>Что для этого нужно? На языке c#

Можно поробывать пройтись по изображению маской Собела, а потом сделать преобразование Хафа (оно как раз для поиска, прямых, окружностей и эллипсов)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.