4. 영상 처리의 세 가지 기본 연산
영상 처리는, 화소 입장에서 새로운 값을 부여받는 것을 뜻한다.
새로운 값을 '어디서 취하느냐'에 따라 연산을 세 가지로 구분 할 수 있다.
- 점 연산Point Operation
어떤 화소가 자신의 값만 보고 새로운 값을 결정하는 경우 - 영역 연산Area Operation
이웃에 있는 몇 개의 화소들을 보고 새로운 값을 결정하는 경우 - 기하 연산Geometric Operation
일정한 기하학적 규칙에 따라 다른 곳에 있는 값을 취할 수 있는 경우
1. 점 연산
점 연산은 아래와 같은 식으로 쓸 수 있다.
출력 영상 f에서 화소(j, i)의 값은 k개의 입력 영상에서 같은 위치에 존재하는 화소의 값에 따라 정해진다.
대부분 k = 1인 한 장의 영상을 입력한다. (특정 화소의 좌표에 해당하는 값이 1개인)
위의 두 식은 양수 a를 더해서 밝게 만들거나, 반대로 빼서 어둡게 만드는 영상이다.
아래의 식은 어두운 곳은 밝게, 밝은 곳은 어둡게 반전시킨다.
이들은 모두 *선형 연산Linear Operation에 속한다.
*선형 연산은 변수들에 상수를 곱하고 그 결과를 더하는 계산을 말한다. 1차 방정식으로 표현되며 연산 과정을 기하학적으로 그려보면 선, 평면, 초평면에 머문다.
위의 식은 감마 수정Gamma Correction이라 부르는 비선형 연산Nonlinear Operation으로,
f(hat)은 [0, 1] 사이 값을 갖는 정규 영상이다.
감마 값이 1보다 작으면 밝아지고, 1보다 크면 어두워지는 효과가 나타난다.
감마가 1인 경우, 원본 영상에 해당하는데, 이러한 비선형 연산은 주로 모니터나 프린터의 색상을 조절할 때 사용한다. 장치의 외부에 있는 다이얼을 돌리면 내부의 감마값에 따라 변화가 일어난다.
앞서 배운 알고리즘에서 이진화를 위해 입력 영상을 분석하여 임계값 T를 정하고 그것보다 작은 화소는 흑, 큰 화소는 백으로 바꾸게 되는데, 이러한 함수를 계단 함수Step Function이라고 부른다.
해당 연산은 점 연산에 속한다. 또한 히스토그램 평활화Histogram Equalization도 점 연산에 속하며, 이때에는 누적 히스토그램이 변환 함수의 역할을 한다.
응용에 따라 영상의 개수 k가 2개 이상인 경우가 있다. 이를테면 컬러 영상을 명암 영상으로 변환하는 경우 R, G, B 세 채널이 입력이 되므로 k=3인 것이다.
또 다른 경우로 장면 디졸브Scene Dissolve라는 효과가 있다.
디졸브는 기존 영상 A가 새로운 영상 B로 서서히 전환되는 것이다.
위의 식처럼 f1(앞의 영상)이 서서히 뒤에 있는 f2(전환될 영상)으로 바뀌는 것이다.
2. 영역 연산
윈도우 u는 검출하려는 물체 영상이고, f는 입력 영상이다.
f의 어디에 윈도우 u가 존재하는 지 찾으려고 한다고 하자.
상관과 컨볼루션
문제를 해결하기 위해 u를 f의 위치 0, 1, 2, 3, ..., 9 각각에 씌워(윈도우의 중앙을 그 번호에 해당하는 위치에 맞추어) 곱의 합을 계산하고 그 결과를 새로운 영상 g에 기록한다.
곱의 합은 서로 대응되는 화소끼리 곱하여 그 결과를 더한다는 것이다.
위치 3에서 윈도우 u에 대한 곱의 합을 계산하게 되면
1 X 2 + 0 X 4 + 3 X 2 = 8이 된다.
이러한 곱의 합을 전체적으로 적어둔 것이 출력 영상 g의 상관 배열이다.
이 결과는 위치 6에서 최댓값을 가지게되는데 이때 해당 위치에 윈도우 u가 존재함을 알 수 있다.
반면, u와 많이 다른 곳일 수록 곱의 합은 낮은 값을 갖는다.
이처럼 물체를 표현하는 윈도우 u와 입력 영상 f가 얼마나 비슷한지 측정해주는 연산을 상관Correlation이라고 부른다. 대표적인 영역 연산으로 물체의 크기나 회전 변환이 없다고 가정한다. 상관은 매칭에 사용할 수 있는 기본 연산이지만 제한 조건을 만족하는 특별한 상황을 제외하고는 잘 작동하지 않는다. 왜냐하면 현실에서는 물체가 크기, 회전, 밝기에서 큰 변화를 나타내기 때문이다.
컨볼루션Convolution은 상관과 비슷한데, 윈도우를 적용하기 전에 뒤집는 것이 다르다.
위치3 의 컨볼루션 적용 결과는 1 X 3 + 0 X 4 + 2 X 2 = 7이다. (윈도우를 뒤집어서 곱의 합을 구한다)
이처럼 윈도우를 사용하는 연산은 가장자리 처리에 주의를 기울여야 한다.
위의 이미지에서 위치 0과 9에서 윈도우는 밖을 벗어나기 때문에 해당 위치에서 값을 구하지 않았다.
또한 바깥쪽으로 필요한 개수만큼 화소를 덧대고 0또는 가장자리 화소의 값으로 채우기도 한다.
또하나 주의할 점은 결과를 입력 영상 f자체에 바로 기록하는 제자리in-place 방식으로 프로그래밍할 수 없다는 것이다. 다음 화소를 계산할 때 이전 화소의 값이 바뀌어 있으면 안 되므로 f와 다른 별도의 영상 g에 기록해야 한다. 보통 윈도우의 크기는 편의상 홀수로 한다.
1차원 윈도우를 2차원으로 확장해보자.
한 점만 1을 갖고 나머지는 모두 0인 단순한 입력 영상(단위 임펄스Unit Impulse)에서 상관과 컨볼루션이 어떻게 다른지 살펴보면,
상관의 경우엔 윈도우가 뒤집어진 모양이 나타나는 반면에, 컨볼루션의 경우에는 윈도우가 그대로 나타난다. 따라서 컨볼루션에서는 임펄스 함수에 그대로 반응한다는 뜻에서 윈도우를 임펄스 반응 함수Impulse response function이라고 부르기도 한다.
상관과 컨볼루션은 윈도우를 뒤집는다는 것이 이외에는 같다.
윈도우가 대칭인 경우에는 상관과 컨볼루션의 결과가 같다. 그럼에도 이 둘을 구분하는 이유는 각각의 쓰임새가 분명하기 때문이다.
매칭하여 물체를 검출할 때에는 상관을, 신호처리 분야에서는 연산의 특성과 동작을 분석하기 위해서 임펄스 반응이라는 성질을 사용하는데, 이때에는 컨볼루션을 사용하게 된다.
많은 문헌과 연구자들이 상관 대신 컨볼루션이라는 용어를 주로 사용하기 때문에, 상관이 컨볼루션으로 불린다. 이 점을 주의해야 한다. 또한 윈도우는 마스크mask, 커널kernel, 템플릿template, 필터filter라고도 부른다.
컨볼루션은 일반적인Generic 연산이다. 이 자체보단 마스크의 모양, 크기가 정해지면 특성 목적이 결정된다.
- 박스 마스크
단순히 9개 화소의 평균을 구하고, 마스크 화소값을 모두 합하면 1이 되도록 정규화 한다. 정규 마스크Nomalized mask라고 부르는데, 결과 영상의 화소값이 원래 영상과 비슷한 범위를 가진다. - 가우시안 마스크
표준 편차가 0.5일 때이고, 박스와 달리 화소로부터 거리에 따라 가중치를 부여한다.
박스 마스크와, 가우시안 마스크 연산을 스무딩Smoothing 연산이라고 부르며, 주로 영상 향상Image Enhancement 작업에 많이 사용한다. 영상에 나타난 잡음은 주로 어떤 화소가 이웃에 비해 아주 크거나 작은 경우인데, 이 화소와 이웃 화소의 차이를 줄여주어 보다 평탄한 영상으로 만들어주기 때문이다.
- 샤프닝 마스크
스무딩과 반대로 작용한다. 스무딩은 에지를 뭉개는 효과가 있는데, 샤프닝은 강조하는 효과를 준다. - 에지 마스크
일종의 미분 연산자이다. 즉, 아주 좁은 지역에서 값의 변화를 측정한다. 수평 에지 마스크는 y-방향의 미분값, 수직 에지 마스크는 x-방향의 미분값을 측정한다. - 모션 마스크
모션 효과를 생성한다.
비선형 영상
컨볼루션은 선형이다. 상수를 변수에 곱하고, 그것들을 단순히 합하기 때문이다.
여기에서 상수는 마스크 내에 있는 계수들이고, 변수는 입력 영상에 있는 화소값이다. 이와 달리 변수에 제곱을 취하여 더하거나, 어떤 비선형 규칙을 적용해 결과값을 정한다면 비선형 영상이 된다.
이러한 연산은 컨볼루션이 아니며, 이들을 지칭하는 용어는 따로 없고 비선형 연산Nonlinear operation이라 부른다. 대표적인 비선형 연산은 메디안median 필터이다. 메디안은 여러 개 값을 정렬했을 때 가운데에 위치한 값을 말한다. (EX. [9 6 3 1 7]을 정렬하여 [1 3 6 7 9]에서의 6이 메디안)
메디안 필터는 화소(j, i)에서 h X w 크기의 마스크(필터)를 씌우고, 그 속에 있는 화소들의 메디안을 결과로 취한다. 메디안 필터는 가우시안 필터와 마찬가지로 스무딩 효과를 준다.
이웃과 차이가 큰 잡음이 있을 경우, 이웃 화소의 메디안을 취하여 차이를 줄여주기 때문이다. 메디안 필터는 특히 *솔프페퍼 잡음salt-and-pepper noise 제거에 매우 효과적이다.
- 영상에 임의로 흩뿌려진 형태의 잡음이 하얀 종이 위에 후추를 뿌리고 검은 종이 위에 소금을 뿌린 것과 비슷하다고 하여 솔트페퍼 잡음이라 부른다.
가우시안 필터와 메디안 필터를 스무딩한 결과는 무엇이 다를까?
둘을 세밀하게 관찰해보면 물체의 경계 부근에 차이가 있음을 알 수 있다. 가우시안의 경우 경계 부근의 대비가 훼손되어 나타나지만 메디안은 상대적으로 대비를 잘 유지한 것을 볼 수 있다. 또한 가우시안에서 잡음이 덜 제거된 경우 더 제거하고 싶으면 필터의 크기를 키우면 된다. 하지만 에지가 뭉개지는 현상이 더욱 심해지게 된다. 이러한 특성 때문에 메디안은 에지 보존edge preserving 스무딩 필터라고 부르기도 한다. 잡음을 제거하기 위해 스무딩이 필요하지만, 에지가 뭉개지는 부작용을 감당하기 어려운 응용에서는 메디안 필터를 적용하면 효과적이다.
보다 뛰어난 에지 보존 필터에는 양방향 필터bilateral filter나 쿠와하라 필터Kuwahara filter가 있다.
3. 기하 연산
영상을 회전시키거나 특정 영역을 크게하는 등의 작업이 필요한 경우에는 멀리 떨어져 있는 화소의 값을 사용해야 한다. 이 경우 기하 연산을 적용하여 해결한다.
동차 좌표와 동차 행렬
기하 변환은 동차 좌표homogeneous coordinate와 동차 행렬homogeneous matrix로 표현한다. 이 표현에서 2차원 상의 점 x = (y,x)는 세 개의 값을 가진 3차원 벡터로 표현된다.
단순히 차원을 하나 늘리고, 그것을 1로 설정하면 된다.
동차 좌표에서는 세 요소에 같은 값을 곱하면 같은 좌표가 된다. 예를 들어,
(3, 5, 1), (6, 10, 2), (0.3, 0.5, 0.1)이 모두 점 (3.5)를 나타낸다.
동차 좌표 x' = (y x 1)
왜 2차원 변환을 하는 데 3차원 동차 좌표와 동차 행렬을 사용할까?
그 이유는 행렬은 곱셈에 대해 결합 법칙이 성립하므로 미리 계산해 둔 기하 변환 행렬을 각 점에 곱하게 되면 한 번의 행렬 곱셈으로 모든 변환을 처리할 수 있게 된다. 이것을 복합 변환Composite transformation이라고 부른다. k단계의 변환이 이뤄지는 상황에서 복합 변환을 활용하면 k배 만큼 빨라진다. 이것이 동차 좌표를 사용하는 이유이다.
회전 변환은 물체를 원점을 중심으로 회전시킨다. 이때 임의의 점을 중심으로 삼고 싶다면, 회전 중심을 이동 변환을 사용하여 원점으로 옮긴 후 회전 변환을 적용하고, 다시 이전 위치로 이동시키면 된다.
이처럼 크기 변환도 도형의 크기를 바꿀 뿐아니라 위치도 이동시킨다. 이러한 변환들을 어파인 변환Affine transformation이라고 부른다. 이 변환은 직선을 구부러뜨리지 않으며, 평행인 선을 평행으로 유지한다. 변환 행렬의 마지막 열이 항상 [0 0 1]을 가지는데, 이 조건이 깨지면 어파인 변환이 아니다.
영상에 기하 변환 적용
영상에서 변환하려는 위치의 좌표가 (8.6962, 3.0622)라고 치자. 이것을 어떻게 취급할 것인가? 반올림하여 (9, 3)으로 변환을 시키게 된다면, 어떠한 좌표는 변환될 값을 받지 못하는 경우가 생긴다.
이를테면 (a)의 전방 변환에서 ?에 해당하는 좌표가 그렇다. 위의 사진과 같이 (b)에서는 target이미지가 source를 보고 직접 자신의 좌표에 해당하는 값을 찾아나서는 연산(역변환 행렬)을 사용한다.
영상 처리 과정에서 인공적으로 발생하는 시각적으로 불만족스러운 현상을 통틀어 에일리어싱aliasing이라 부르며, 이러한 현상을 해소하려는 노력을 안티 에일리어싱anti-aliasing이라고 한다.
양선형 보간
앞서 나온 방식에서, 목표 영상의 여러 점이 원래 영상의 같은 점을 참조할 수 있으므로 에일리어싱 현상은 여전히 발생할 가능성이 있다. 이 문제를 해결하는 더 효과적인 안티 에일리어싱 방법은 보간Interpolation이다. 목표 영상의 한 점을 기하 변환했을 때 입력 영상의 어디에 떨어지는지를 보고, 입력 영상의 어떤 점으로부터 값을 취할 지를 결정하는 것이다.
미리 사용했던 후방 기하 변환과 같이, 좌표를 반올림으로 처리하는 방식은 최근접 이웃Nearest Neighbor 방법이라고 부른다. 하지만 여전히 심한 에일리어싱 현상이 발생한다.
가장 가까운 네 개의 점을 구하여 위의 식에 대입하여 f(y', x')을 구하게 되면, 최근접 이웃 방법보다 계산 시간은 더 걸리지만 영상의 품질은 더 뛰어나다. 이 기법은 선형 보간Linear Interpolation을 이용하는데, 두 방향에 걸쳐 수행하므로 양방향 선형 보간bilinear interpolation 방법이라고 부른다.
비선형 보간 방법으로서 양 3차 보간bicubic interpolation 기법도 있다. 이 기법은 16개의 이웃 화소와 3차 함수를 이용하여 보간한다.
'IT > Graphics' 카테고리의 다른 글
컴퓨터 비전 스터디 6주차 : 21.05.09 (0) | 2021.05.22 |
---|---|
컴퓨터 비전 스터디 5주차 : 21.04.25 (0) | 2021.05.02 |
컴퓨터 비전 스터디 3주차 : 21.04.04 (0) | 2021.04.10 |
컴퓨터 비전 스터디 2주차 : 21.03.28 (0) | 2021.03.27 |
컴퓨터 비전 스터디 1주차 : 21.03.21 (0) | 2021.03.21 |
댓글