линейное моделирование многомерного массива

В этом примере они говорят о конкретной известной скорости. Например, если вы знаете, что автомобиль движется влево с 2 пикселями на кадр. Можно сделать видео, которое размывает все, кроме этой машины.

Вот идея: начните с кадра 0 видео. На каждый пиксель посмотрите один кадр в будущем и оставьте 2 пикселя. Вы будете смотреть на ту же часть движущейся машины. Теперь представьте, что вы берете среднее значение цвета между вашим текущим пикселем и усилением; будущий пиксель (оставшийся 2 пикселя и 1 кадр в будущем). Если ваш пиксель находится на движущейся машине, оба пикселя будут одинакового цвета, поэтому взятие среднего значения не имеет никакого эффекта. С другой стороны, если это НЕ на движущейся машине, они будут разных цветов, и поэтому среднее значение будет иметь эффект размытия между ними.

Таким образом, пиксели автомобиля останутся неизменными, но остальная часть видео получит размытие. Повторите для каждого кадра. Вы также можете включить больше кадров в свой фильтр; например Вы можете посмотреть 2 кадра в будущем и 4 пикселя влево или 1 кадр в прошлом и 2 пикселя вправо.

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

8
задан Michael Myers 24 March 2009 в 19:49
поделиться

2 ответа

Конечно. Просто расширение Вашего примера дает x + y*width + z*width*height + w*width*height*depth + ...

Другими словами, dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

7
ответ дан 5 December 2019 в 20:20
поделиться

А, если Вы хотите некоторый код... :-) C является достаточно агностиком языка, ya?

Примите вход: местоположение [размеры]

Предположите, что таблица существует maxBound [размеры], который содержит максимальные границы каждого размера таблицы.

int index = 0;
int multiplier = 1;
for (int i = 0;i < dimensions;i++)
{
  index += location[i] * multiplier;
  multiplier *= maxBound[i];
}

Ваш индекс окажется в индексном поле.

Test:
location = [3,4,5]
maxBound = [10,20,30]
loop initial: index = 0, multiplier = 1.
loop i=0: index = 3, multiplier = 10.
loop i=1: index = 43, multiplier = 200.
loop i=2: index = 1043, multipler = 6000.

Я думаю, что это имеет смысл, но это просто выходит из вершины моей головы.

1
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: