Исследование систем управления манипулятором MR-999Е
Диссертация - Компьютеры, программирование
Другие диссертации по предмету Компьютеры, программирование
?ть все контура и реконструировать полную иерархию вложенных контуров- метод аппроксимации (для всех модов, кроме CV_RETR_RUNS,который использует встроенную аппроксимацию);
И offset - каждый контур точки сдвинулся. Используется если контуры извлекаются из изображений, затем они должны быть проанализированы в контексте целого изображения.
Таблица 3.2 - Методы аппроксимации для функции определения контуров
CV_CHAIN_APPROX_NONEпреобразует все точки из цепочки в точкиCV_CHAIN_APPROX_SIMPLEсжимает горизонтальных, вертикальных и диагональных сегментах, то есть функция остается только прекращение их центрыCV_CHAIN_CODEвыходные контура в цепочечном коде ФрименаCV_CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOSприменение одного из аппроксимационных цепочечных кодов Тех-ЧинаCV_LINK_RUNSиспользовать другой алгоритм поиска контура с помощью горизонтальных связей сегментов в один. Только CV_RETR_LIST может быть использован с этим методом
Функция Приближения полигональных кривой (кривых) с заданной точностью
CvSeq* cvApproxPoly( const void* src_seq, int header_size, CvMemStorage* storage, int method, double parameter, int parameter2=0 );
_seq - последовательность ряда точек; header_size - размер заголовка кривой; storage- Контейнер с аппроксимируемыми контурами. Если NULL, то используется ячейка с входными последовательностями; мethod - метод аппроксимации; только CV_POLY_APPROX_DP, который описывает метод Дугласа-Пеукера; parameter - параметр специального метода; CV_POLY_APPROX_DP для точной аппроксимации; parameter2 - если src_seq является единичной последовательностью, то он должен быть приближен для всех последовательностей на том же уровне или ниже src_seq. Если src_seq является массив (CvMat *) точек, параметр определяет, будет ли кривая замкнута.
Функции уменьшения и увеличения размера изображений:
void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
где src - исходное изображение; dst - входящее изображение (должно содержать длину и ширину); filter - тип фильтра ; только CV_GAUSSIAN_5x5 поддерживается.
void cvPyrUp( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
где src - исходное изображение; dst - входящее изображение (должно содержать длину и ширину); filter - тип фильтра ; только CV_GAUSSIAN_5x5 поддерживается.
Пороговая функция в библиотеке компьютерного зрения OpenCV определяется как
void cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type );
где src - входной массив (8-битный, 32-битный); dst - выходной массив (такого же типа как и входной); threshold - пороговое значение; max_value - максимальное значение, которое используется с CV_THRESH_BINARY и CV_THRESH_BINARY_INV; threshold_type - тип пороговой функции.
Нахождение кругов в оттенках серого изображения, используя преобразование Хафа;
CvSeq* cvHoughCircles( CvArr* image, void* circle_storage, int method, double dp, double min_dist, double param1=100, double param2=100, int min_radius=0, int max_radius=0 );
- входящее 8-битное изображение; circle_storage - Ячейка, хранящая обнаруженные круги. Это может быть хранилищем (в данном случае последовательность кругов создается при хранении и возвращается функцией), или одну строку / один столбец матрицы (CvMat *) типа CV_32FC3, к которому пишутся параметры кругов. Если circle_storage - матрица и фактическое число линий превышает размер матрицы, максимально возможное количество кругов возвращается. Каждый круг кодируется 3 числа с плавающей точкой: центр координатами (х, у) и радиуса; Method - реализована только метод CV_HOUGH_GRADIENT; Dp - Установка аккумулятора, который используется для обнаружения центров окружностей. Например, если он равен 1, аккумулятор будет иметь то же разрешение, как у исходного изображения, если это 2 - аккумулятор будет в два раза меньше ширины и высоты и т.д.; min_dist - Минимальное расстояние между центрами обнаруженных кругов. Если параметр слишком мал, несколько соседних кругов может быть ложно обнаружено в дополнение к истинным. Если он слишком большой, некоторые круги могут быть упущены; param1 - Первый метод конкретных параметров. В случае CV_HOUGH_GRADIENT это высший порог, край детектора (ниже 1 будет в два раза меньше); param2 - Второй метод конкретных параметров. В случае CV_HOUGH_GRADIENT - аккумулятор. Чем меньше параметр, тем больше ложных кругов могут быть обнаружены; min_radius - минимальный радиус искомых кругов; max_radius - максимальный радиус.
В третьей части работы рассмотрена практическая реализация методов обработки информации в робототехнических системах. Существуют два основных подхода к предварительной обработке информации. Первый подход основан на методах пространственной области, а второй - на методах частотной области с использованием преобразования Фурье. Вместе эти подходы охватывают большинство из существующих алгоритмов предварительной обработки информации, применяемых в системах технического зрения роботов. Основными библиотеками, работающими с методами распознавания и идентификации являются библиотека Integrated Performance Primitives (IPP), библиотека AviCap, библиотека компьютерного зрения с открытым кодом OpenCV. Рассмотрены основные функции и их реализация в библиотеке OpenCV.
4. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ОПРЕДЕЛЕНИЯ ПАРАМЕТРОВ ОБЪЕКТОВ РОБОТИЗИРОВАННОГО ПРОИЗВОДСТВА С ПОМОЩЬЮ СИСТЕМЫ ТЕХНИЧЕСКОГО ЗРЕНИЯ
4.1 Основные особенности разработанного программного обеспечения
Целью разработки данного программного обеспечения является исследование программных методов распознавания и идентификации простых объектов с помощью библиотеки компьютерного зрения OpenCV.
С точки зрения MFC проект будет состоять из двух классов: CApp (класс приложения) и CMainWin (главное окно) с соответствующей первому функцией InitInstance(); конструктором и картой сообщений для класса окна.