2012-10-16 2 views
-3

적응 중 심의 코드를 작성하는 데 문제가있었습니다.Opencv C++의 적응 형 메디안 필터

최소 밝기 픽셀 최대 중간 값을 계산하는 가장 좋은 방법은 무엇입니까?

틸 지금은 직사각형 창에서 최대치 및 최소치에 대한 이미지

for (int y = 0; y < h; y++) 
{ 
    uchar *ptr = (uchar*)(img->imageData + y * step); 
    for (int x = 0; x < w; x++){ 
    printf("%u, ", ptr[x]); 
    } 
    printf("\n"); 
}  
+2

무엇이 문제입니까? – DaveHogan

+1

무엇이 문제입니까? 자세한 내용을 설명해 주시겠습니까? 알고리즘을 확인해 봤어? 뭐라구? 너는 무엇을 얻을 것으로 예상 했는가? 코드를 작성할 수 있습니까? – elyashiv

+0

특정 질문을하십시오. 어디에서 문제가 있습니까? 논리를 코드로 변환 할 사람을 찾고 있습니까? 그렇다면이 사이트는 해당 사이트가 아닙니다. –

답변

0

의 화소마다 값을 읽고, I는 계조 팽창이 최대 조작에 대응 같이 van Herk's dilation algorithm로보고, 계조 것 최소 연산자에 대한 침식 및 직사각형 구조 요소는 수직 및 수평선으로 분해 될 수있다.

메디안 필터링의 경우 moving histogram techniques으로 보입니다.

0

최소/최대 픽셀의 경우 첫 번째 픽셀의 값을 기록한 다음 서로 다른 픽셀을 비교하여 값이 더 낮거나 높은 경우 새 값을 각각 저장해야합니다. OpenCV는 이것을 쉽게 만들 수있는 cv::minmaxLoc을 제공합니다.

중간 값의 경우 모든 픽셀을 정렬하고 가운데 픽셀을 선택해야합니다 (한 번 정렬 한 후 최소/최대 값은 목록의 한쪽 끝에 있으므로 사소한 것임). 이것은 더 까다 롭습니다. 얼마나 멀리 있고 어떤 것이 작동하지 않습니까?