2014-11-24 3 views
1

이미지의 y 미분을 구현하고 싶습니다.이미지의 y 미분 계산

result_i_want

지금 내가없이 자신에 의해 그것을 구현해야합니다

Sobel(gray_input_picture, y_derivative_picture, CV_32FC1 , 0, 1, 3, BORDER_DEFAULT);

그것과 같은 방법을 예를 들어 있습니다 : 감안할 때 는 소벨 연산자를 사용하여 다음과 같은 OpenCV의 기능입니다 이 sobel 함수를 사용하여.

나는 여기에 도움이 발견 : 지금 구현 무엇 Gradient direction computation

했다 :

for(int x=0; x<gray_input_picture.rows; x++) 
{ 
    for(int y=0; y<gray_input_picture.cols; y++) 
    { 
     if(x == gray_input_picture.rows-1 || x == 0) 
     { 
      y_derivative.at<Vec3b>(x,y) = gray_input_picture.at<Vec3b>(x,y); 
     } 
     else 
     { 
      Vec3b color; 
      color[0] = gray_input_picture.at<Vec3b>(x+1,y)[0] - gray_input_picture.at<Vec3b>(x-1,y)[0]; 
      color[1] = gray_input_picture.at<Vec3b>(x+1,y)[1] - gray_input_picture.at<Vec3b>(x-1,y)[1]; 
      color[2] = gray_input_picture.at<Vec3b>(x+1,y)[2] - gray_input_picture.at<Vec3b>(x-1,y)[2]; 
      y_derivative_picture.at<Vec3b>(x,y) = color; 
     } 
    } 
} 

bitwise_not (y_derivative_picture, y_derivative_picture2); 

X 및 Y 스위치가 OpenCV의에서 비롯됩니다. 그것이 조금 다른 이유입니다. 내가 이해할 수없는 것은 내가 변환해야하는 그림을 얻는다는 것입니다 (검은 색에서 흰색, 검은 색에서 흰색으로).

결과가 약간 다릅니다.

enter image description here

사람은 내가 (이 소벨 기능 비슷한 모양)은 y 유도체 잘 구현할 수있는 방법을 알고 : 그것은 파란색 영역이 있습니다? 아니면 구현에 문제가있는 사람이 있습니까?

감사합니다.

+1

한 가지는 당신이 서명되지 않은 문자를 뺀 것입니다. 그것은 문제를 요구하고 있습니다. – DarenW

+0

또한 위와 아래의 픽셀 값의 차이를 픽셀에 할당하는 것은 실제로 소벨이하는 것과 다릅니다. –

답변

1

나는 당신이 아마 소벨 연산자는 여기에 무엇을 확인해야합니다 생각 : 나는 알

http://en.wikipedia.org/wiki/Sobel_operator

+0

나는이 [사이트] (http://www.programming-techniques.com/2013/03/gaussian-blurring-using-separable.html?m=0)의 도움으로 마침내 내 문제를 해결했다. – tommeeyy