* Spatial Domain Filtering (공간 영역 필터링)
공간 영역 필터링은 이미지의 픽셀 값을 직접적으로 처리하여 이미지의 특성을 변화시키는 기법이다.
각 픽셀의 새로운 값을 계산하기 위해 해당 픽셀과 주변 픽셀들의 값을 활용하며, 이를 통해 노이즈 제거, 블러링 등 다양한 효과를 구현할 수 있다.
대표적인 공간 영역 필터링 기법으로는 아래와 같다.
- 스무딩 필터링(Smoothing Filtering): 노이즈를 제거하고 부드러운 이미지를 생성.
- 샤프닝(Sharpening): 이미지의 세부 사항을 선명하게 강조.
- 가장자리 검출(Edge Detection): 경계를 강조하여 객체의 윤곽을 탐지.
* Smoothing Filtering (스무딩 필터링)
스무딩 필터링은 공간 영역 필터링 중 하나로, 특히 이미지의 노이즈를 감소시키고 부드러운 이미지를 생성하기 위해 사용된다. 스무딩 필터링은 이미지의 로컬 특성(Local Features)을 활용하여 각 픽셀 값을 주변 픽셀 값과 결합함으로써 전반적인 블러링 효과를 제공한다.
스무딩 필터링은 다양한 크기의 커널(Kernal)을 사용하여 컨볼루션 연산(Convolution Operation)을 수행하여 구현한다.
커널(Kernel)은 작은 크기의 행렬로, 필터(Filter), 윈도우(Window), 또는 마스크(Mask)라고도 불린다. 일반적으로 3x3, 5x5와 같은 정사각형 형태로 구성되며, 커널의 크기는 필터링 범위를 결정하고, 크기가 클수록 부드러운 결과를 생성한다.
컨볼루션 연산은 커널 또는 필터를 사용하여 이미지를 변환하는 기본적인 이미지 처리 기법이다. 이미지와 커널을 겹치게 하여 커널 내 요소와 대응하는 입력 이미지 픽셀 값의 곱을 합산해 새로운 출력 이미지를 생성한다.
컨볼루션 연산 과정은 아래와 같다.
① 커널과 원본 이미지의 특정 영역과 겹친다.
② 커널의 각 요소와 대응하는 이미지의 픽셀 값을 곱한다.
③ 곱해진 모든 값을 더해 새로운 픽셀 값을 생성한다.
④ 계산된 값은 출력 이미지의 해당 위치에 저장된다.
⑤ 커널이 한 픽셀씩 이동하며 이지 전체 픽셀에 대해 연산을 반복한다.
스무딩 필터링의 대표적인 방법으로는 평균 필터링(Average Filtering), 가우시안 필터링(Gaussian Filtering), 미디언 필터링(Median Filtering) 등이 있다.
* Average Filtering (평균 필터링)
평균 필터링은 영상의 각 픽셀 밝기 값을 주변 픽셀들 평균으로 대체하여 노이즈를 줄이고 부드러운 이미지를 생성하는 스무딩 필터링(Smoothing Filtering) 기법이다.
일반적으로 정사각형 형태의 커널(예: 3x3, 5x5)을 사용하여 중앙 픽셀을 기준으로 이웃 픽셀들의 값을 평균 내어 부드러운 이미지를 생성한다. 이 과정은 컨볼루션 연산을 통해 수행되며, 커널 내 모든 픽셀에 동일한 가중치를 부여한다.
* Gaussian Filtering (가우시안 필터링)
가우시안 필터링은 가우시안 분포를 기반으로 한 가중치를 사용하여 노이즈를 줄이고 블러링 효과를 제공하는 스무딩 필터링(Smoothing Filtering) 기법이다.
중심에서 멀어질수록 가중치가 감소하는 가우스 커널을 사용하여 중앙 픽셀 값에 더 큰 가중치를 부여하여 평균을 계산한다.
가우시안 커널은 가우스 함수로부터 유도된 값들로 구성되며, 중심으로 거리가 멀어질수록 값이 점진적으로 감소하는 특징이 있다. 중심 픽셀이 가장 높은 가중치를 부여받으며, 중심으로부터 거리가 멀수록 가중치가 점점 작아지며 픽셀 값에 미치는 영향이 줄어든다.
이러한 가중치 분포는 이미지의 노이지를 효과적으로 제거하면서 중요한 경계와 디테일을 더 잘 보존하도록 설계되었다.
특징 | 평균 필터 | 가우시안 필터 |
가중치 | 모든 이웃 픽셀에 동일한 가중치 | 중심에 가까운 픽셀에 더 큰 가중치 |
잡음 제거 | 전반적인 노이즈 감소에 효과적 | 가우시안 노이즈에 특히 효과적 |
경계 보존 | 가장자리 흐림 현상 심함 | 경계 보존 효과 우수 |
구현 | 매우 간단 | 평균 필터보다 다소 복잡 |
커널 구조 | 정사각형 구조로 동일 값 적용 | 가우스 분포 기반, 중심에서 멀어질수록 값 감소 |
* Sharpening Filtering (샤프닝 필터링)
이미지의 경계와 디테일을 강조하여 더 선명하고 뚜렷한 이미지를 생성하는 필터링 기법이다. 이는 고주파 성분을 강조하는 방식으로 동작하며, 이미지에서 변화가 급격히 발생하는 부분(즉, 경계선이나 세부 구조)을 부각하는 데 초점을 맞춘다.
이미지의 각 픽셀은 그 주변 픽셀 값들과의 관계를 기반으로 새로운 값을 계산한다. 샤프닝은 고주파 성분을 강조하여 이미지의 급격한 변화(예: 경계선)를 더 두드러지게 한다. 이를 위해 샤프닝 필터는 주로 라플라시안(Laplacian) 필터와 같은 고주파 필터를 사용하거나, 원본 이미지에서 저주파 성분(스무딩 된 이미지)을 제거하여 구현된다.
고주파 성분은 이미지에서 밝기 변화가 급격히 이루어지는 부분, 즉 경계나 세부적인 패턴을 나타낸다.
샤프닝 필터링은 이러한 고주파 성분을 강조하거나 원본 이미지에 더하여 경계를 선명하게 만든다.
Sobel 필터는 이미지에서 1차 미분을 사용하여 픽셀 값의 변화율(기울기)을 계산하는 경계 검출 필터이다. 가로 방향과 세로 방향의 기울기를 각각 계산하고, 두 방향의 기울기를 조합하여 경계의 강도를 계산한다.
라플라스 필터는 이미지에서 2차 미분을 사용하여 픽셀 값의 변화율이 급격히 변하는 지점을 검출한다. 라플라스는 아래와 같은 고정된 커널을 사용한다.
* 주요 코드
1. Average and Gaussian Filtering (평균, 가우시안 필터링)
1) 컨볼루션 연산 함수
① 마진 계산 (margin): 필터 커널의 중심에서 가장자리까지의 거리로, 필터를 적용할 때 이미지 경계 부분을 처리하는 데 사용된다.
② 입력 이미지의 모든 픽셀에 대해 반복: 이미지의 각 픽셀에 대해 필터를 적용하기 위해, 전체 이미지 영역을 순회한다. 외부 루프는 행 방향(iii)으로 이동, 내부 루프는 열 방향(jjj)으로 이동한다.
③ 필터 영역 반복: 각 픽셀 주변의 필터 크기 영역에 대해 반복하면서, 필터 커널 값을 곱해 결과를 계산한다. x와 y 루프는 필터 커널의 모든 요소를 순회한다.
④ 경계 처리: 이미지 경계를 넘어가는 경우, 경계를 반사하는 방식으로 처리하여 값이 잘못 계산되지 않도록 한다.
⑤ 필터 적용: 필터 커널의 각 요소와 해당 픽셀 값을 곱한 후, 이를 모두 합산하여 결과 값을 계산한다. 결과 값은 출력 이미지 배열(image2)에 저장된다.
⑥ 결과값 클리핑: 계산된 결과 값이 0 미만이면 0, 255를 초과하면 255로 제한한다. 이는 픽셀 값이 8비트 이미지의 범위(0~255)를 벗어나지 않도록 하기 위함이다.
2) 가우시안 필터와 평균 필터 커널
- 3x3 가우시안 필터: 필터 중심(4.0/16)에 더 큰 가중치를 부여하며, 주변 값(2.0/16 및 1.0/16)으로 갈수록 가중치가 감소한다.
- 3x3 평균 필터: 모든 커널 요소가 동일한 가중치(1/9)를 가지며, 주변 모든 픽셀 값이 동일하게 영향을 미친다.
2. Sharpening Filtering (샤프닝 필터링)
1) 컨볼루션 연산 함수 (위 코드와 동일)
2) 마스크 생성 함수
- Sobel Y (case 0): 수직 방향의 엣지를 검출하는 마스크
- Sobel X (case 1): 수평 방향의 엣지를 검출하는 마스크
- Prewitt Y (case 3): Sobel과 유사하게 수직 방향의 엣지를 검출하지만, 중심 값의 가중치가 Sobel보다 작아 더 단순화된 마스크.
- Prewitt X (case 4): Sobel과 유사하게 수평 방향의 엣지를 검출하지만, 가중치가 낮아 상대적으로 단순한 연산을 수행.
- Laplace 1 (case 9): 2차 미분 기반의 엣지 검출로, 이미지의 모든 방향에서의 밝기 변화 정도를 계산.
- Laplace 2 (case 10): Laplace 1보다 강한 엣지 검출이 가능하며, 좀 더 세밀한 경계 검출.
- checkMask 값에 따라 선택된 마스크를 생성한다. 사용자가 적절한 필터를 선택하지 않을 경우 에러 메시지를 출력하고 프로그램 종료되며, 각 마스크는 3×3 크기 배열로 정의되며, Mask 배열에 복사된다.
* 결과 영상
1. 평균 스무딩 필터링 vs 가우시안 스무딩 필터링
평균 필터링과 가우시안 필터링 모두 노이즈를 제거하기 위한 스무딩 필터이기에 두 필터를 비교해 보았다.
평균 스무딩 결과가 더 밝고 경계 부분이 흐릿하게 나타났다. 가우시안 스무딩은 약간 더 어두운 느낌을 주면서 경계가 더 선명하게 보존되는 특성을 보인다. 두 필터링 결과는 매우 유사하지만, 세부적인 차이에서 이러한 차이가 드러난다.
특징 | 평균 필터 | 가우시안 필터 |
가중치 | 모든 이웃 픽셀에 동일한 가중치 | 중심에 가까운 픽셀에 더 큰 가중치 |
잡음 제거 | 전반적인 노이즈 감소에 효과적 | 가우시안 노이즈에 특히 효과적 |
경계 보존 | 가장자리 흐림 현상 존재 | 경계 보존 효과 우수 |
구현 | 비교적 간단 | 평균 필터보다 다소 복잡 |
커널 구조 | 정사각형 구조로 동일 값 적용 | 가우스 분포 기반, 중심에서 멀어질수록 값 감소 |
2. 샤프닝 필터링
샤프닝 필터링은 경계 강조와 디테일 향상을 위해 유용하며, Sobel Gx와 Gy로 개별 방향의 경계를 분석하고 Gradient Magnitude로 전체적인 경계를 확인할 수 있다. 위 결과는 소벨 연산자를 사용한 결과이다.
전체적으로 두꺼운 경계선 정보들을 보여주며 이러한 특성은 1차 미분의 특성에 의한 결과이다. 그리고 오른쪽은 둘 결과를 합한 크기 값이다.
Sobel Gx는 이미지의 수평 방향(가로 방향) 변화(기울기)를 강조하는 필터로, 이미지의 가로 경계와 구조적인 디테일이 높게 나타난다. 세로 방향의 경계는 상대적으로 덜 강조되어 뚜렷하지 않다.
Sobel Gy는 이미지의 수직 방향(세로 방향) 변화(기울기)를 강조하는 필터로, 이미지의 세로 경계와 구조적인 디테일이 두드러지게 나타난다 이미지의 세로 경계와 구조적인 디테일이 두드러지게 나타난다. 가로 방향 경계는 상대적으로 덜 강조되어 나타난다.
Gradient Magnitude는 Sobel Gx와 Gy의 결과를 조합하여 전체 경계 강도(기울기 크기)를 표현한다. 가로와 세로 방향 모두에서 강한 경계선이 두드러지며, 이미지의 모든 주요 경계와 세부 사항이 강조되었다.
결과적으로 모자의 윤곽, 머리카락의 세부 결, 얼굴의 윤곽이 매우 선명하게 나타났다.
'전공수업 > 영상처리(C언어)' 카테고리의 다른 글
[영상처리] 히스토그램 매칭(Histogram Matching) (0) | 2024.11.18 |
---|---|
[영상처리] 히스토그램 평활화(Histogram Equalization) (0) | 2024.11.18 |
[영상처리] Binary Image (OpenCV, C언어) (0) | 2024.10.07 |
[영상처리] 모자이크 처리 (OpenCV, C언어) (0) | 2024.09.30 |
[C] 2차원 배열 동적 할당 (1) | 2024.09.21 |
댓글