2010-06-17 6 views
2

이것은 OpenCV2 질문입니다.순환 열 벡터를 부드럽게하는 방법

나는 닫힌 공간 곡선을 나타내는 행렬을 가지고 있습니다.

cv::Mat_<Point3f> points; 

부드럽게하고 싶습니다 (예 : 가우스 커널 사용).

나는 사용하여 시도했다 :

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

하지만 오류 얻을 :

Assertion failed (columnBorderType != BORDER_WRAP)

에서 OpenCV의 순환 벡터를 컨 볼브하는 가장 좋은 방법은 무엇입니까? ("최고"는 공간과 시간 요구 사항을 고려해야합니다.)

+0

나는 내 자신의 질문에 만족스럽게 대답했지만 이상적으로는 대답하지 않았습니다. 당신이 더 나은 대답을 가지고 있다면, 그것을 게시하십시오. 나는 기꺼이 받아 들인 대답을 바꿀 것입니다. – Geoff

답변

1

나는 길을 발견했습니다. 행렬을 반복하고 흐리게 처리 한 다음 범위를 추출합니다.

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을 확장하십시오. 그런 다음 추가 점수를 잘라냅니다. 이것은 위와 비슷하지만 공간과 시간을 낭비하지 않습니다.

관련 문제