Обнаружение краев зависит от освещения

У меня есть это сырое изображение в оттенках серого:

введите описание изображения здесь

Я хотел бы обнаружить край объекта. Однако на это влияет освещенность у края. Вот что я получил после обнаружения размытия по Гауссу и обнаружения краев Канни:

введите описание изображения здесь

Это мой код:

    cv::cvtColor(imgOriginal, imgGrayscale, CV_BGR2GRAY);       // convert to grayscale

cv::GaussianBlur(crop,                  // input image
imgBlurred,                         // output image
cv::Size(5, 5),                     // smoothing window width and height in pixels
5);                                 // sigma value, determines how much the image will be blurred

cv::Canny(imgBlurred,           // input image
imgCanny,                   // output image
0,                          // low threshold
100);                       // high threshold

Источник света находится под объектом. Освещение на краю объекта исходит от источника света или отражения света. Они всегда в одном и том же месте.

Освещение также определяется как край. Я пробовал несколько других способов, таких как маркировка подключенных компонентов и бинаризация изображения с образец кода (новичок здесь), но безрезультатно. Есть ли способ обнаружить чистое освещение края?

0

Решение

Пятна фонового света могут быть удалены с помощью некоторых эрозия с довольно большим ядром, так как объект намного больше, чем светлые пятна

Другая распространенная техника, которую вы можете попробовать, — это использование дистанционное преобразование + водораздел. Преобразование расстояния, скорее всего, вернется точки вы уверены, что находитесь внутри объекта (поскольку у объекта мало темных областей). Водораздел попытается найти регионы, которые связаны (путем сравнения градиентов) с подтвержденным точки. Вам может потребоваться объединить несколько областей после водораздела, если преобразование расстояния дает несколько точек внутри объекта.

1

Другие решения

Невозможно полностью избавиться от этой проблемы. Детектор краев может обнаружить изменения интенсивности, возникающие из-за краев объектов. Учитывая освещение, которое у вас есть, изменения, вызванные освещением, довольно заметны.

Я бы предложил два подхода к решению этой проблемы:

  1. Отрегулируйте освещение, если вы можете
    Правильное освещение решает 50% проблем с компьютерным зрением.

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

0

По вопросам рекламы [email protected]