관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

에지와 영역 8 - 연습문제 풀기 1 : 문제 1번 본문

인공지능/컴퓨터 비전

에지와 영역 8 - 연습문제 풀기 1 : 문제 1번

huenuri 2024. 11. 10. 19:37

이제 연습문제를 풀며 단원을 마무리해볼 것이다. 문제가 많이 어려운데 과연 풀 수 있을지 의문이 들지만 할 수 있는데까지 최선을 다해볼 것이다.


 

 

 

연습문제 풀기

 

문제 1번

 

 

이 문제를 풀기 위해서는 예제 4-1을 이해해야 한다. 

 

 

 

이 자료에서는 소벨 연산자를 적용하는 과정과 그 결과로 얻어지는 그래디언트 방향과 크기를 설명하고 있다. 소벨 연산자는 이미지에서 엣지(경계)를 검출하기 위해 사용되는 미분 연산자 중 하나이다. 이를 통해 이미지 내의 픽셀 밝기 변화 정도와 방향을 계산할 수 있다.

 

1. 소벨 연산자란?

소벨 연산자는 엣지 검출을 위해 이미지의 밝기 변화율(미분)을 구하는 연산자로, 수평과 수직 방향으로 각각 적용된다. 소벨 연산자는 두 방향(수평과 수직)에서 이미지의 밝기 차이를 계산하여 각각

 

라는 미분 값을 얻는다. 이를 통해 해당 위치의 밝기 변화 정도(엣지 강도)와 변화 방향을 구할 수 있다.

 

 

 

2. 소벨 연산자 적용 과정

주어진 그림에서는 가상의 이미지에 소벨 연산자를 적용하는 과정이 설명되어 있다. 이 예제에서는 소벨 연산자를 통해 (3, 4) 위치에서의 밝기 변화량과 방향을 계산한다.

(3, 4) 위치에서의 미분 값 계산

 

이 두 값을 통해 그래디언트 벡터를 구할 수 있다. 

 

 

 

3. 엣지 강도 s(3, 4)

 

즉, (3, 4) 위치에서의 엣지 강도는 8.485이다. 이 값이 클수록 해당 위치에서의 밝기 변화가 크다는 것을 의미하며, 엣지일 가능성이 높다.

 

 

 

4. 엣지 방향 d(3, 4)

엣지 방향 d(3, 4)는 밝기 변화의 방향을 의미하며, 아크탄젠트 함수를 통해 계산할 수 있다.

 

이 결과는 (3, 4) 위치에서의 밝기 변화가 -45도 방향으로 발생한다는 것을 의미한다. 이는 그래디언트 벡터의 방향을 나타내며, 이 방향이 엣지의 방향과 수직을 이루게 된다.

 

 

 

5. 그림에서의 설명

그림에서는 다음과 같은 요소들이 표시되어 있다.

 

그래디언트 방향이 밝기 변화의 방향이라면, 엣지 방향은 이와 수직이 된다. 그림에서 에지 방향이 중심으로 모이는 형태로 나타난 이유는 에지 방향을 시각적으로 보여주기 위해 설정된 것이다.

 

 

 

6. 소벨 연산자와 32비트 실수 형식

소벨 연산자에 의해 계산된

엣지 강도 맵과 엣지 방향 맵은 음수 값을 포함할 수 있다. 따라서 이 값을 표현할 때, 정수형이 아닌 32비트 실수형(cv.CV_32F)으로 지정하는 것이 적절하다.


 

 

 

 

하지만 소벨 연산자 적용 과정이 잘 이해가 되지 않았다. 이 부분을 좀더 학습해보기로 했다.

 

 

이 값은 소벨 연산자를 사용하여 구해진 것으로, 각 픽셀의 밝기 변화율을 계산하여 수평 방향과 수직 방향의 밝기 변화량을 나타낸다. 여기서는 이미지의 (3, 4) 위치에서 fx′(3, 4) = 6fy′(3, 4) = −6이 구해졌는데, 이러한 값은 소벨 커널을 적용하여 얻어진다.

 

소벨 연산자의 커널

소벨 연산자는 보통 3x3 커널을 사용하여 각 방향의 미분을 계산한다. 소벨 커널은 x 방향과 y 방향에서의 밝기 변화를 구하기 위해 각각 다음과 같은 값을 사용한다.

 

이 커널을 (3, 4) 위치의 주변 3x3 픽셀 영역에 적용하여, fx′fy'값을 계산할 수 있다.

 

 

 

(3, 4) 위치에서의 계산 과정

 


 

 

 

문제 풀기

 

문제를 풀 때는 조금 전에 소개했던 x 방향과 y 방향의 소벨 커널을 사용한다. 그럼 (1)번 문제부터 풀어보겠다. 이 문제는 손으로 직접 풀어보았다.

 

 

 

 

 

 

 

 

무척 어려운 문제였지만 이 문제를 푸는 방법을 배워서 직접 혼자서 풀어보았다. chatgpt에게 물어보니 계속 틀린 답을 제시해서 그냥 혼자 푸는 게 훨씬 더 나을 것 같았다. 그러면서 정말 많은 것들을 배웠다.

 


 

 

 

학습을 마치고

이 문제 하나 푸는데 한 시간이나 걸렸다. 2번 문제도 정말 어려운 문제라 다음 포스트에 기록해보기로 했다. 컴퓨터 비전에는 정말 많은 수식과 미적분, 행렬, 함수 등 수학적인 지식이 필요한 내용이 많다.

수학을 잘 모른다고 생각했는데 문제를 풀면서 수학적인 사고력이 많이 올라가는 것을 느낄 수 있었다.