2010-02-17 2 views
2

Я хотел бы иметь возможность рассчитать «самую яркую точку» в строке пикселей. Это для примитивного 3D-сканера.Как вычислить центроид самого яркого пятна в строке пикселей?

для тестирования я просто шагнул через пиксели, и если текущий пиксель ярче предыдущего, самая яркая точка этой линии будет установлена ​​на текущий пиксель. Это, конечно, дает очень резкие результаты по всему изображению (-ам).

Я бы хотел получить «средний центр яркости», если это имеет смысл.

alt text

должен быть обычным делом, я просто не хватает нужных слов для поиска Google.

ответ

3

Рассчитать средневзвешенное значение смещения.

Учитывая интенсивность вашего примера в (угадали) и смещения:

0 0 0 0 1 3 2 3 1 0 0 0 0 0 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 

это даст вам (5+3*6+2*7+3*8+9)/(1+3+2+3+1) = 7

1

Вы ищете 1D Convolution, который принимает фильтр, с которым вы «скручивать» образ. Например, вы можете использовать медианный фильтр (заимствование пример из Википедии)

x = [2 80 6 3] 
y[1] = Median[2 2 80] = 2 
y[2] = Median[2 80 6] = Median[2 6 80] = 6 
y[3] = Median[80 6 3] = Median[3 6 80] = 6 
y[4] = Median[6 3 3] = Median[3 3 6] = 3 
so 
y = [2 6 6 3] 

Так вот, размер окна 3, так как вы смотрите на 3 пикселя в то время, и заменяя пиксель вокруг этого окна с медиана. Окно из 3 означает, что мы смотрим на первый пиксель перед и первым пикселем после пикселя, который мы сейчас оцениваем, 5 будет означать 2 пикселя до и после и т. Д.

Для mean filter вы делаете то же самое, кроме заменить пиксель вокруг окна со средним всех значений, т.е.

x = [2 80 6 3] 
y[1] = Mean[2 2 80] = 28 
y[2] = Mean[2 80 6] = 29.33 
y[3] = Mean[80 6 3] = 29.667 
y[4] = Mean[6 3 3] = 4 
so 
y = [28 29.33 29.667 4] 

Так что для вашей проблемы, y[3] это «означает, яркую точку».

Обратите внимание, как границы обрабатываются для y[1] (нет пикселей перед ним) и y[4] (без пикселей после него) - этот пример «реплицирует» пиксель возле границы. Поэтому мы обычно «накладываем» изображение с реплицированными или постоянными границами, свертываем изображение, а затем удаляем эти границы.

Это стандартная операция, которую вы найдете во многих вычислительных пакетах.

0

Ваша проблема походит на поиск самой длинной проблемы последовательности. как только вы сможете определить последовательность (начальную точку и длину), все, что остается, - найти медианную, которая является центральным элементом. для нахождения последовательности, должно быть указано определение яркого и темного, либо относительное -> предыдущее значение, либо пару предыдущих значений. absolute: фиксированный порог.

Смежные вопросы