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

Проверка кабельной продукции средствами OpenCV

Recommended Posts

Добрый день!

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

Программу я пишу на Qt 4.6.2 С++, для захвата видео с камеры использую OpenCV. Сейчас имею окно программы, в котором отображается видеопоток.

Подскажите, пожалуйста, каким образом детектировать границы кабеля, чтобы померять расстояние между ними в заданных точках? И надо ли вообще здесь использовать средства OpenCV? Возможно стоит просто смотреть изображение на предмет поиска перепада цвета пикселов?

Заранее благодарю, Алексей.

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


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

Я думаю можно сделать так:

1) Получить хорошее ч/б изображение кабеля (метод получения ч/б зависит от качества изображения). Это самый трудный этап.

2) При помощи cvReduce получим массив равный длине кабеля в пикселях, найти среднее, это и будет диаметр, отклонение тоже найти не проблема.

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


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

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

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


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

Условия задачи недоопределены. Непонятно какие параметры качества надо мерять, с какой точностью. Если диаметр, и если изображение разрешением порядка 640х480, то абсолютную погрешность можно принять 5х10 пикселей, то есть относительная погрешность метода примерно 1.5-2% по диаметру.

ЗЫ: Черный кабель может еще блики давать, которые будут мешать.

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


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

Мне просто создать на базе изображения, полученного в OpenCV, черно-белое изображение. А на нем было бы достаточно найти границ белых и небелых пикселей, найти вторую границу перехода из небелых в белые пиксели и найти ширину кабеля тем самым...

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


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

Тогда так (находит кол-во ненулевых пикселей (вернее их сумму по отношению к размеру изображения см. ключи команды cvReduce) ):

CvMat MV, MH;

double *VertSumS;

double *HorSumS;

VertSumS = new double[bw_image->height];

HorSumS = new double[bw_image->width];

cvInitMatHeader(&MV, bw_image->height, 1, CV_64FC1, VertSumS);

cvInitMatHeader(&MH, 1, bw_image->width, CV_64FC1, HorSumS);

cvReduce(bw_image, &MV, 1, CV_REDUCE_AVG);

cvReduce(bw_image, &MH, 0, CV_REDUCE_AVG);

// доступ к элементам матриц делается так:

double v1 = cvGetReal2D(&MH, 0, i); // по горизонтали

double v2 = cvGetReal2D(&MV, i, 0); // по вертикали

// Когда они не нужны, можно освободить ресурсы.

if(VertSumS)

{

delete[] VertSumS;

}

if(HorSumS)

{

delete[] HorSumS;

}

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×