Гладкая 1D гистограмма для обнаружения долины (OpenCV) - PullRequest
1 голос
/ 10 августа 2010

Я пытаюсь обнаружить первую долину в 1D гистограмме, чтобы использовать ее в качестве пороговой точки.(Обработка темного до светлого / слева направо)

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

Есть ли у кого-нибудь указания на лучший способ сгладить 1D гистограмму в OpenCV?Это показывает, где алгоритм попал на неровный край и потерпел неудачу:

http://applist.s3.amazonaws.com/junk/failed.png

Синяя линия: пик Красная линия: долина

Ответы [ 3 ]

2 голосов
/ 10 августа 2010

Попробуйте размыть гистограмму или изображение.

Могут быть долины, потому что не все уровни освещения изображения используются на исходном изображении. Вы можете легко исправить это, размывая изображение перед выполнением гистограммы. Или попробуйте создать скользящее среднее гистограммы, чтобы резкие изменения исчезли.

1 голос
/ 10 августа 2010

Мне кажется, вы выполняете какую-то сегментацию. Вы можете попробовать сделать это с помощью адаптивного алгоритма, который устанавливает сам порог, вычисляя некоторые средние значения точек. Этот конкретный алгоритм предполагает, что граничные точки представляют фон, а остальные точки представляют объект. Вот алгоритм:

calculate u1 -> the grayscale average of boundary points
calculate u2 -> the grayscale average of all other points
T_old = 0
T_new = (u1 + u2) / 2
while (T_new != T_old) 
 //you might want to modify this by introducing an epsilon value, something like
 // if T_new near T_old (abs(T_new-T_old)>1)
 u1 = grayscale average of points where grayscale intensity is lower than T_new
 u2 = grayscale average of points where grayscale intensity is higher or equal to T_new
 T_old =T _new
 T_new = (u1 + u2) / 2
end
threshold = T_new

Это должно найти почти оптимальный порог для изображения в градациях серого.

0 голосов
/ 19 августа 2010

Возможные способы преодолеть это:

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