Перейти к содержимому
Compvision.ru
ProgRoman

Distance Transform

Recommended Posts

Не могу разобраться как по distanceTransform понимать форму объекта к примеру круг, треугольник или прямоугольник...

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

http://www.lektorium.tv/lecture/?id=13539

там видео лекция и презентация

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дык скелет ведь получется (после бинаризации по порогу), по нему и узнавать.

Круг -> точка

Треугольник -> три отрезка, сходящиеся к центру от углов

Квадрат -> четыре отрезка идущие от углов к центру

и т.д., логика должна быть понятна

O_1.gif

http://reference.wolfram.com/mathematica/ref/DistanceTransform.html

http://reference.wolfram.com/mathematica/ref/InverseDistanceTransform.html

И здесь обязательно посмотрите:

http://blog.naver.com/PostView.nhn?blogId=simonsayz&logNo=120124949358

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо ссылки читаю, у меня такие картинки, но вроде бы они там не как у вас на картинках.. ниже приведу код


        Mat img1 = imread(path1, CV_LOAD_IMAGE_GRAYSCALE);


        Mat gim1,gim2,gim3;

        Canny(img1,gim1,50,250,3);

	gim2 = 1-gim1/255;

	distanceTransform(gim2,gim3,CV_DIST_L2,3);


        normalize(gim3,gim3,0.0,1.0,NORM_MINMAX);

	imshow("original",img1);

	imshow("Canny",gim2*255);

	imshow("distanceTransform",gim3);

post-2515-0-60273100-1335269796_thumb.jp

post-2515-0-67671700-1335269807_thumb.jp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все правильно у Вас на картинках. DistanceTransform в качестве яркости точки выдает расстояние до ближайшей черной точки.

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

В примерах используется бинаризованное, а не контурное изображение.

Прорисуйте по-очереди (с очисткой изображения) контуры с заполнением белым цветом, над каждым выполните дистанционное преобразование, и совместите результаты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

называется chamfer matching вроде бы я даже выкладывал реализацию через distance tranform тут на форуме, версию без изменения масштаба, написал для того чтобы проверить насколько быстро работает, т.к. встроенный в опенцв очень тормозит.

хотел написать еще чтобы было многопоточно.

но потом забил на это, т.к. не вижу принципиальной разницы по сравнению с template matching через кросскореляцию.

единственное различие в скорости работы(не могу оценить теоретически, но практически кажется, что через много потоков и FFTW работать будет быстрее) и в том что в одном случае мы работаем с контурами(а правильно выделить контуры тоже проблема),а в другом прямо с изображением.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×