Gradient, Jacobian 행렬, Hessian 행렬, Laplacian

수학 이야기 2014.04.15 12:19

Gradient(그레디언트), Jacobian(야코비언) 행렬, Hessian(헤시안) 행렬, Laplacian(라플라시안) ...


문득 정리의 필요성을 느껴서 적어봅니다.

이들을 함께 보는 이유는? 그냥 왠지 이들은 세트로 함께 봐야 할 것 같은..


참고한 자료는 제가 항상 애용하는 위키피디아입니다.

- Gradient(그레디언트): http://en.wikipedia.org/wiki/Gradient

- Jacobian(야코비언) 행렬: http://en.wikipedia.org/wiki/Jacobian_matrix

- Hessian(헤시안) 행렬: http://en.wikipedia.org/wiki/Hessian_matrix

- Laplacian(라플라시안): http://en.wikipedia.org/wiki/Laplace_operator



1. Gradient, Jacobian, Hessian, Laplacian 요약


- Gradient(그레디언트)



- Jacobian(야코비언) 행렬



- Hessian(헤시안) 행렬



- Laplacian(라플라시안)




2. Gradient(그레디언트)


어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 gradient(그레디언트)는


 --- (1)


와 같이 정의됩니다.


즉, gradient(그레디언트)는 위 식과 같이 각 변수로의 일차 편미분 값으로 구성되는 벡터입니다. 그리고 이 벡터는 f의 값이 가장 가파르게 증가하는 방향을 나타냅니다. 또한 벡터의 크기는 그 증가의 가파른 정도(기울기)를 나타냅니다.


예를 들어, f(x,y) = x2 + y2의 gradient(그레디언트)를 구해보면


--- (2)


이므로, (1,1)에서 f값이 최대로 증가하는 방향은 (2,2), 그 기울기는 ∥(2,2)∥= sqrt(8) 입니다.


<그림 1> f(x,y) = x2 + y2 그래프


또한 반대로 gradient(그레디언트)에 음수를 취하면 즉, -▽f는 f값이 가장 가파르게 감소하는 방향을 나타내게 됩니다.


이러한 gradient의 특성은 어떤 함수를 지역적으로 선형근사(linear approximation)하거나 혹은 gradient descent 방법(Gradient Descent 탐색 방법 글 참조)처럼 함수의 극점(최대값, 최소값 지점)을 찾는 용도로 활용될 수 있습니다.


Gradient를 이용한 다변수 scalar 함수 f의 점 p 근처에서의 선형 근사식은 다음과 같습니다 (first order Taylor expansion).


 --- (3)



영상처리에서 gradient(그레디언트)는 영상의 edge 및 edge 방향을 찾는 용도로 활용될 수 있습니다. 이미지 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 각 픽셀 위치에서 gradient의 크기와 방향을 구하면 해당 픽셀이 얼마나 edge에 가까운지, 그리고 edge의 방향이 어디인지 쉽게 알 수 있습니다.


 --- (4)



<그림 2> gradient를 이용한 영상 edge 검출



3. Jacobian(야코비언) 행렬


어떤 F:Rn→Rm 함수 F(x1,...,xn) = (f1(x1,...,xn), ..., fm(x1,...,xn))에 대한 Jacobian(야코비언) 행렬은


 --- (5)


로 정의됩니다.


예를 들어, F(x,y) = (2x+y, xy) 인 F:R2→R2 함수라면


 --- (6)


가 됩니다.


즉, Jacobian(야코비언)은 어떤 다변수 벡터함수(vector-valued function of multiple variables)에 대한 일차 미분(first derivative)으로 볼 수 있습니다.


☞ 앞서 나온 gradient(그레디언트)나 Jacobian(야코비언)이나 모두 함수에 대한 일차 미분(first derivative)을 나타낸다는 점에서는 동일합니다. 다만, 그레디언트는 다변수 스칼라 함수(scalar-valued function of multiple variables)에 대한 일차 미분인 반면 Jacobian(야코비언)은 다변수 벡터 함수(vector-valued function of multiple variables)에 대한 일차미분입니다. 즉, 그레디언트는 통상적인 일변수 함수의 일차미분을 다변수 함수로 확장한 것이고, Jacobian(야코비언)은 이를 다시 다변수 벡터함수로 확장한 것입니다.


Jacobian(야코비언)이나 그레디언트나 모두 함수에 대한 일차미분이기 때문에 미분이 가지고 있는 의미나 성질은 모두 동일하게 적용됩니다. 즉, 어떤 함수의 지역적인 변화특성을 파악할 때, 지역적인 함수의 변화를 선형근사할 때 또는 함수의 극대(극소)를 찾을 때 활용될 수 있습니다.


예를 들어, 점 p∈Rn 근처에서 F를 선형근사할 때 Jacobian(야코비언)을 다음과 같이 활용할 수 있습니다 (first order Taylor expansion).


 --- (7)


Jacobian(야코비언)이 비선형 연립방정식의 해를 구하는 목적으로 활용되는 예에 대해서는 [기계학습] - 뉴턴법/뉴턴-랩슨법의 이해와 활용(Newton's method) 글을 참조하기 바랍니다.



4. Hessian(헤시안) 행렬


어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 Hessian 행렬은


 --- (8)


와 같이 정의됩니다.


앞서 설명한 gradient(그레디언트), Jacobian(야코비언)이 모두 함수에 대한 일차미분(first derivative)를 나타내는 반면 Hessian은 함수의 이차미분(second derivative)를 나타낸다는 점에서 차이가 있습니다.


즉, Hessian은 함수의 곡률(curvature) 특성을 나타내는 행렬로서 최적화 문제에 적용할 경우 Hessian을 이용하면 다음 식과 같이 p 근처에서 함수를 2차 항까지 근사시킬 수 있습니다 (second-order Taylor expansion)


 --- (9)


또한 Hessian은 critical point의 종류를 판별하는데 활용될 수 있습니다. 어떤 함수의 일차미분이 0이 되는 되는 점을 critical point (또는 stationary point)라 부르는데 함수의 극점(극대, 극소), saddle point 등이 여기에 해당됩니다 (쉽게 생각하면, 고교수학 미분에서 f'(x) = 0이 되는 지점).


어떤 (다변수) 함수를 최적화시키기 위해 극점(극대, 극소)을 찾기 위해서는 먼저 그 함수의 일차미분인 gradient(그레디언트)가 0이 되는 지점(critical point)을 찾습니다. 그런데, 이렇게 찾은 critical point가 극대점인지 극소점인지, 아니면 saddle point(말안장처럼 방향에 따라서 극대, 극소가 바뀌는 점)인지 구분하기 위해서는 이차미분값을 조사해야 하는데 이 때 바로 Hessian을 사용할 수 있습니다.


그 구체적인 방법은, 어떤 함수의 critical point에서 계산한 Hessian 행렬의 모든 고유값(eigenvalue)이 양수(positive)이면 해당 지점에서 함수는 극소, 모든 고유값이 음수이면 극대, 음의 고유값과 양의 고유값을 모두 가지면 saddle point인 것으로 판단합니다 (고교수학에서 f''(x)의 부호에 따라서 아래로 볼록, 위로 볼록 여부를 구분하는 것과 같은 이치).


이러한 구분의 핵심에는 Hessian 행렬의 고유벡터(eigenvector)는 함수의 곡률이 큰 방향벡터를 나타내고 고유값(eigenvalue)은 해당 고유벡터(eigenvector) 방향으로의 함수의 곡률(curvature, 이차미분값)을 나타낸다는 점에 있습니다.


☞ Hessian 행렬은 대칭행렬(symmetric matrix)이므로 [선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector) 글에서 설명한 바와 같이 항상 고유값 분해가 가능하며 서로 수직인 n개의 고유벡터를 가집니다 (단, Hessian이 대칭행렬이 되기 위해서는∂x∂y = ∂y∂x와 같이 편미분의 순서가 바뀌어도 그 결과가 동일해야 하는데 그러려면 f가 해당 지점에서 2차 미분이 가능하고 또한 2차 미분한 함수가 연속이어야 한다고 합니다: https://en.wikipedia.org/wiki/Symmetry_of_second_derivatives 참조)


참고로 이미지에서의 Hessian은 그레디언트의 경우와 마찬가지로 이미지 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 다음과 같이 계산할 수 있습니다.


 --- (10)




5. Laplacian(라플라시안)


어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 Laplacian(라플라시안)은


 --- (11)


와 같이 각 변수로의 2차 편미분 값의 합으로 정의됩니다.


Laplacian은 여러 물리적 의미를 담고 있다고 합니다만 제가 물리에 대해서는 아는 바가 없으니 영상처리 쪽에서의 응용에 대해서만 살펴보겠습니다.


이미지에서의 Laplacian은 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 다음과 같이 계산할 수 있습니다.


 --- (12)


<그림 3> Laplacian (가운데)과 |gradient| (오른쪽) 비교


☞ Laplacian은 +,- 값을 갖기 때문에 0 ~ 255 사이로 스케일을 맞추어 이미지로 표시하면 <그림 3>의 가운데 그림처럼 보여집니다.


Gradient의 크기(그레디언트 벡터의 크기)와 Laplacian이 언뜻 서로 비슷해 보이지만 둘 사이에는 큰 차이가 있습니다.


--- (13)


|Gradient|는 영상의 밝기 변화가 급격할수록 큰 값을 가집니다. 하지만 Laplacian은 영상의 밝기변화의 변화가 심할수록 큰 값을 가집니다. 즉, 아무리 밝기 변화가 크더라도 그 변화속도가 일정하다면 Laplacian은 0에 가까운 값을 갖습니다.


이미지 관점에서 보면 이미지 내의 두 영역의 경계(edge)에서는 급격한 밝기 변화가 일어나기 때문에 |gradient|나 Laplacian 모두 큰 값을 나타냅니다. 하지만 동일한 영역 내부에서 점진적인 밝기 변화가 일어날 때는 그 밝기변화 정도에 따라서 |gradient|는 큰 값을 가질 수 있지만 Laplacian은 작은 값을 나타내는 차이가 있습니다.


즉, Laplacian은 영상의 밝기 변화가 평면형(planar)을 이룰 때 최소의 절대값을 가지고 극대, 극소점처럼 모든 방향으로 밝기 변화가 심할 때 최대의 절대값을 가집니다. 따라서, Laplacian은 영상에서 blob을 찾거나 코너점(corner point)를 찾는 용도로 활용될 수 있습니다.


☞ 이상으로 gradient, Hessian, Jacobian, Laplacian에 대한 글을 마무리합니다. 원래 영상 특징점 추출 방법을 정리하다 보니 gradient, Hessian, Laplacian 등의 개념이 필요하여 같이 정리하게 되었습니다. 하면 할수록 할게 많아지고.. 꼬리에 꼬리를 무는게 공부인것 같습니다..



by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고
  • ㅠㅠ 2014.04.21 01:43 신고 ADDR 수정/삭제 답글

    정말 감사합니다! 큰 도움이 되었습니다.!

  • 서니 2014.06.03 00:56 신고 ADDR 수정/삭제 답글

    개념이 한눈에 들어오네요. 좋은글 감사합니다.

  • 담아갈게요~~감사합니다

  • 유니스트 2014.11.15 03:36 신고 ADDR 수정/삭제 답글

    도움이 많이 되었습니다
    정말 이 블로그 정독하고 싶네요
    그런데 하나 틀린부분이 있습니다
    야코비안에서 F(x,y) = (2x+y, xy) 가 F(x,y) = (2x+y, 2xy) 로 바뀌어야 합니다

    • BlogIcon 다크pgmr 2014.11.15 08:31 신고 수정/삭제

      안녕하세요. 댓글 감사합니다. 그런데, 말씀하신 부분(수식 6)은 제가 봤을 때에는 틀린 부분이 없는 것 같은데.. 혹시 그 이유를 설명 부탁드려도 될까요?

    • 학생 2016.10.01 01:27 신고 수정/삭제

      수식 6번을 보면서 저도 조금 이상하다는 생각을 했었는데, 수식6에 나와있는 행렬을 보니 (x; y)를 F(x,y)로 매핑하는 것 같아요! 그래서 유니스트님께서 말씀하신대로 xy에서 2xy로 바뀌어야 하는게 맞는거 같아요!

    • BlogIcon 다크pgmr 2016.10.01 08:00 신고 수정/삭제

      제가 볼 때는 틀린 부분이 없는데, 두 분이나 동일하게 틀렸다고 하니 난감하네요.. 제가 놓치고 있는 부분이 어떤 부분일까요? 참 궁금합니다.. 좀더 구체적으로 꼭 좀 설명을 부탁드립니다. 말씀하신 것처럼 F(x,y) = (2x+y, 2xy)로 잡으면 F의 자코비언 행렬은 J = (2 1; 2y 2x)가 되어야 합니다. 그리고 수식 6의 J는 (x;y)를 F(x,y)로 매핑하는 행렬이 아니라 그냥 F의 자코비언 행렬입니다. 그리고 F는 (x, y)를 (2x + y, xy)로 매핑하는 함수입니다.

    • cb 2017.07.27 14:44 신고 수정/삭제

      적혀있는게 맞는것 같은데..
      f2(x) = xy 를 각각
      x와 y에 대해 편미분하면
      y 와 x 가 되니 틀린부분이 없어보입니다.

      -수정-
      달고보니 2014년...댓글이군요;

    • arumdri 2017.07.31 09:40 신고 수정/삭제

      아무래도 '유니스트'님과 '학생'님께서는 J함수를 원함수인 2x+y와 xy에 대한 행렬표기로 생각하셔서 그런것 같습니다. 저도 처음엔 그렇게 생각했었거든요 ㅋㅋ

  • 학생 2014.12.21 12:34 신고 ADDR 수정/삭제 답글

    안녕하세요 항상 감사합니다. 근데 각각의 요소 x,y 로 total derivative 하면 gradient = df(x,y)/dx + df(x,y)/dy 되어야 하는거 아닌가요? 왜 그 크기를 구하는거죠? 그 기울기는 ∥(2,2)∥= sqrt(8) 라고 하셨는데 2+2 = 4 가 안되는 이유를 알 수 있을까요?

    • BlogIcon 다크pgmr 2014.12.22 09:46 신고 수정/삭제

      f의 x축 방향으로 변화가 df/dx이고, y축 방향으로의 변화가 df/dy라면 xy평면에서 f의 주(main) 변화 방향은 (df/dx, df/dy)이고 그 크기는 sqrt((df/dx)*(df/dx)+(df/dy)*(df/dy))입니다.

  • k2 2015.03.30 16:46 신고 ADDR 수정/삭제 답글

    벡터 외적에 대한 답변 감사합니다.
    Gradient descent 에 대한 질문이 있는데요. step size같은 것이 관건인거 같은데. step size만 다시 러닝 시키거나 아니면 좀더 적당한 step size를 찾는 방법이 있을까요??
    line search 방식이 있던데요. 혹시 아신다면 쉬운 설명을 부탁 드려도 될까요.
    라플라시안을 활용한 regularization이 있는거 같은데요 이부분에 대해서 혹시 아시는 바가 있으신지요. regularization term으로 이용하는 것을 보았는데 도통 이게 어떤 이유때문에 사용됬는지가 이해가 잘 안가네요.
    감사합니다.

    • BlogIcon 다크pgmr 2015.04.02 06:53 신고 수정/삭제

      네, 이동하고자 하는 방향을 따라서 일정 구간에 대해 실제 함수값의 변화를 구해봄으로써 얼마나 이동해야 함수값이 가장 최소화가 될지를 결정하는 방식이 line search로 알고 있습니다.
      라플라시안 regularization에 대해서는 저도 잘 모릅니다. 혹시 나중에 알게되면 다시 답변을 드리겠습니다.

  • BlogIcon sh 2015.09.10 22:18 신고 ADDR 수정/삭제 답글

    잘 정리해주셔서 감사합니다! 매우 유용하네요 ㅎㅎ

  • dj 2015.10.14 00:47 신고 ADDR 수정/삭제 답글

    설명 감사드립니다. Laplacian 을 영상처리에 적용할때 discrete하게 식12)와 같이 나타낼 수 있는 것 같은데 그 부분을 잘 모르겠습니다. gradient 같은 경우(식4))는 좌우, 상하 픽셀 값을 이용한 기울기 정도로 이해가 가는데요..

    • BlogIcon 다크pgmr 2015.10.14 10:03 신고 수정/삭제

      I'은 I에 대한 미분값으로 I'(x) = {I(x+1) - I(x)}/{(x+1)-x} = I(x+1) - I(x)와 같이 근사적으로 계산할 수 있습니다. 또는 식(4)처럼 I'(x) = {I(x+1)-I(x-1)}/{(x+1)-(x-1)}로 근사할 수도 있습니다. 후자가 좌우를 모두 고려하여 근사한 것이기 때문이 전자보다는 조금더 정확한 근사식으로 사용됩니다.
      그런데, 라플라시언의 I''은 I'에 대한 미분값이기 때문에 I''(x) = I'(x+1) - I'(x) = {I(x+1)-I(x)} - {I(x)-I(x-1)} = I(x+1) + I(x-1) - 2I(x)와 같은 근사적 계산이 가능해집니다. I'(x+1)을 이용할 때는 [x,x+1] 구간을 이용했고, I'(x)를 계산할 때는 [x-1,x] 구간을 이용해서 최종적으로는 좌우 구간을 모두 이용한 형태로 만든 것입니다.

  • BlogIcon 호에에 2015.10.15 11:30 신고 ADDR 수정/삭제 답글

    헤시안이 대칭행렬이라고 하셨는데 이는 f_xy랑 f_yx가 같을 때만 성립하는거 아닌가요? f_x나 f_y가 연속이 아닐때는 성립하지 않을수도 있다고 알고있습니다

    • BlogIcon 다크pgmr 2015.10.15 12:08 신고 수정/삭제

      감사합니다. 본문 내용을 수정하였습니다. ^^

  • LEO JINSOL KIM 2015.11.25 12:16 신고 ADDR 수정/삭제 답글

    좋은 내용 정말 감사합니다.

  • 김크램 2015.11.28 19:45 신고 ADDR 수정/삭제 답글

    안녕하세요 좋은 글 보고 갑니다.
    제가 이번에 대학원에 진학하게 되었는데요.
    문과라서 수학을 본격적으로 공부해 봐야겠다는 생각이 드네요.
    위에 정리해주신 개념들을 포함해서 수학적 베이스를 쌓으려면 어떤 책을 보는게 좋을까요?
    책 추천좀 부탁드립니다. (공업수학, 미적분학같은 쌩기초는 예~~~전에 들은 기억이 있네요)
    tserry@naver.com
    좋은 글 감사합니다~~

    • BlogIcon 다크pgmr 2015.11.29 01:06 신고 수정/삭제

      기초라는건 그만큼 모든 것의 기본이 되는 중요한 내용이라는 의미가 됩니다. 공업수학, 미적분학이 기초로 느껴진다면 굳이 다른 수학 공부는 필요없지 않나 생각됩니다 ^^. 영상처리 분야에서는 선형대수학이 가장 실용적으로 많이 쓰이고 그외 확률론도 도움이 됩니다.

  • 서건창 2016.04.19 10:37 신고 ADDR 수정/삭제 답글

    reference 남기고 퍼가도 될까요

  • 밝은달 2016.11.28 00:40 신고 ADDR 수정/삭제 답글

    항상 감사합니다! 머신러닝을 공부 중인데 매번 도움 받고 있습니다.

  • 8ㅅ8 2017.02.15 16:27 신고 ADDR 수정/삭제 답글

    안녕하세요!
    라플라시안에대한 내용중에서 가운데 그림 같은 결과물을 얻으려면 어떻게 해야하나요?ㅠㅠ
    매트랩을 사용해서 라플라시안 마스크를 적용하고 결과물 이미지를 보면 오른쪽그림처럼 까맣게 나오더라구요..ㅠㅠ

    • BlogIcon 다크pgmr 2017.02.15 16:47 신고 수정/삭제

      결과 이미지의 밝기 스케일을 조절해 주면 됩니다. 결과 이미지의 픽셀 최대값을 maxv, 최소값을 minv, 원래 라플라시안 결과 이미지를 I라면, (I - minv) / (maxv - minv) * 255와 같이 하면 밝기 범위가 0 ~ 255로 rescale됩니다.

    • 8ㅅ8 2017.02.17 13:43 신고 수정/삭제

      헉 그렇군요!ㅠㅠㅠㅠ알려주셔서 감사합니다. 항상 좋은 일만 생기길 바랄게요!!!ㅎㅎ

  • darkjjang 2017.07.24 13:40 신고 ADDR 수정/삭제 답글

    (9)번식에서 테일러식 전개시 (x-p)^(T)가 뭔지모르겟습니다. T가 의미하는바는 무엇인가요
    ㅠㅠ T를 포함한 그 2차 부분식이 이해가되질 않습니다.ㅠㅠ

    • BlogIcon 다크pgmr 2017.07.24 13:54 신고 수정/삭제

      행렬이나 벡터에 윗첨자로 T(또는 t)를 사용하면 transpose(전치)를 나타냅니다. 즉, m x n 행렬은 n x m 행렬이 되고, 행벡터는 열벡터로, 열벡터는 행벡터로 바뀝니다. http://darkpgmr.tistory.com/103 글에서 전치행렬 부분을 한번 읽어보시기 바랍니다.

    • darkjjang 2017.07.25 15:10 신고 수정/삭제

      네 전치행렬 개념은 아는데 제가 생각하기에는 1/2H(X)(X-P)^(2)의 형태가 되어야 하는거 같은데 왜 갑자기 전치행렬이 나오는지 이해가가지 않습니다. ㅠㅠ

    • BlogIcon 다크pgmr 2017.07.25 17:36 신고 수정/삭제

      네.. 어려운 부분입니다. 저도 잘 아는 것은 아니지만 일단 x는 열벡터이고 벡터는 곧바로 제곱할 수 없습니다. 그리고, 열벡터 x와 대칭행렬 H에 대해서 1/2*(x-p)^T*H*(x-p)를 한번 미분하면 (x-p)^T*H가 되고 이것을 다시 한번 더 x로미분하면 H가 됩니다. 즉, 원래 함수의 2차 미분인 H가 나왔기 때문에 1/2*(x-p)^T*H*(x-p)이 올바른 식임을 확인할 수 있습니다. 벡터미분에 대해서는 http://darkpgmr.tistory.com/141 글을 참조하시기 바랍니다.

  • cb 2017.07.27 14:46 신고 ADDR 수정/삭제 답글

    최근들어 머신러닝에 입문한 실무자입니다. 공부해야 할게 depth를 알수 없는 tree 처럼 내려가는데 뭔가 한글로 구글하면 이 블로그가 나오네요
    도움 많이 받고 있습니다 감사합니다 :)

    • BlogIcon 다크pgmr 2017.07.27 17:35 신고 수정/삭제

      depth를 알수 없는 tree란 말에 깊이 공감이 갑니다. ^^

    • 다크팬 2017.08.04 05:43 신고 수정/삭제

      depth를 알수 없는 treeㅋㅋㅋㅋㅋㅋㅋㅋ

  • wintrover 2017.08.09 15:56 신고 ADDR 수정/삭제 답글

    그래디언트와 라플라시안의 관계는 마치 속도와 가속도를 보는 듯 하군요.

  • 대학생 2017.08.10 22:26 신고 ADDR 수정/삭제 답글

    안녕하세요. 올리신 글보고 최적화에 대해서 많이 배우고 갑니다 혹시 3번식에서 llx-pll 앞에 o는무엇을 뜻하는 건지 알 수 있을까요??

    • BlogIcon 다크pgmr 2017.08.11 08:22 신고 수정/삭제

      그건 little-o입니다. f = o(g)라는 표현은 f는 g에 점근한다는 의미인데, g보다는 느린 속도로 점근한다는 의미입니다. 유사한 표현으로 big-O가 있는데 f = O(g)는 f는 g에 점근하는데 g보다는 크지는 않지만 유사한 속도로 점근한다는 의미입니다. 용어가 낯설고 혼란의 여지가 있어서 본문의 표현을 단순하게 수정했습니다. 관련 설명은 https://stackoverflow.com/questions/1364444/difference-between-big-o-and-little-o-notation 글을 참조하세요. 감사합니다.

  • Western Tiger 2017.08.16 01:30 신고 ADDR 수정/삭제 답글

    헤시안에서 픽셀 밝기 나타내는 함수에서
    Ixx(x,y) = I(x+1,y) + I(x-1,y)-2I(x,y)
    이관계가 어떻게 성립하는지 조금 더 자세히 풀어 설명해주실 수 있나요ㅕ?

    • BlogIcon 다크pgmr 2017.08.16 17:53 신고 수정/삭제

      네, 일단 Ix(x,y) = I(x+1,y) - I(x,y)입니다. 이것을 한번 더 x로 미분하면, Ixx(x,y) = Ix(x+1,y) - Ix(x,y) = (I(x+1,y)-I(x,y)) - (I(x,y)-I(x-1,y)) = I(x+1,y) + I(x-1,y) - 2I(x,y)가 됩니다. 참고로, Ix(x,y)를 계산하는 방법은 Ix = I(x+1,y)-I(x,y), Ix = I(x,y)-I(x-1,y), Ix = (I(x+1,y)-I(x-1,y))/2 이렇게 3가지 방법이 가능합니다.