Как сгладить вектор циклического столбца - PullRequest
2 голосов
/ 18 июня 2010

Это вопрос OpenCV2.

У меня есть матрица, представляющая замкнутую пробел.

cv::Mat_<Point3f> points;

Я хочу сгладить его (используя, например, ядро ​​Гаусса).

Я пытался использовать:

cv::Mat_<Point3f> result;
cv::GaussianBlur(points, result, cv::Size(4 * sigma, 1), sigma, sigma, cv::BORDER_WRAP);

Но я получаю ошибку:

Утверждение не удалось (columnBorderType! = BORDER_WRAP)

Каков наилучший способ свертывания циклического вектора в OpenCV? («Лучший» должен учитывать требования к пространству и времени.)

1 Ответ

1 голос
/ 18 июня 2010

Я нашел способ. Я повторяю матрицу, затем размываю, затем извлекаю диапазон.

GaussianBlur(repeat(points, 3, 1), ret, cv::Size(0,0), sigma); 
int rows = points.rows;
result = Mat(result, Range(rows, 2 * rows - 1), Range::all());

Это требует дополнительной работы (и дополнительного места?).

Редактировать : теперь я вручную расширяю points, копируя (упаковывая) столько точек, сколько требуется ядру. Затем я обрезаю лишние очки. Это похоже на вышесказанное, но тратит меньше места и времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...