Обработка одномерных сигналов в OpenCV (Smooth, Dilate, Morphology) / OpenCV / Recog.ru - Распознавание образов для программистов


Обработка одномерных сигналов в OpenCV (Smooth, Dilate, Morphology)

При использовании OpenCV в основном дело имеется с двумерными сигналами – т.е. изображениями. Однако функции OpenCV не меньше помогут и при анализе одномерных сигналов. Пусть есть следующий сигнал:

Необходимо вычислить края впадины.
Для начала посмотрим, как работают различные методы, например Сглаживание:

Dilate:

И морфологический градиент:

Объединим все в общий код:
CvMat* Mat = cvCreateMat( 1, 150, CV_8UC1 );;
CvMat* Mattmp = cvCreateMat( 1, 150, CV_8UC1 );;
… // каким-то образом заполняем матрицу-сигнал (Mat->data.ptr[5] = 128)
cvDilate(Mat, Mat );
cvSmooth(Mat, Mat, CV_GAUSSIAN, 5 );
int r=3;
int c=1;
structuringElement = cvCreateStructuringElementEx(r, c, 
	  cvFloor(r / 2), cvFloor(c/ 2), CV_SHAPE_RECT, NULL);
cvMorphologyEx(Mat, Mat, Mattmp,structuringElement,CV_MOP_GRADIENT,1);


Можно отсортировать по пороговому значению.
cvThreshold(Mat, Mat,15, 255, CV_THRESH_BINARY);

В результате, передвигаясь слева направо, а затем справа налево, получатся соответственно левая и правая границы впадины.
  • 0
  • 31 октября 2012, 21:18
  • vidikon

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.