일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CSS
- C++
- 데이터베이스
- 데이터분석
- 컴퓨터비전
- pandas
- html/css
- JSP/Servlet
- 코딩테스트
- 정보처리기사실기
- 영어공부
- 혼공머신
- 머신러닝
- 자바
- 파이썬라이브러리
- SQL
- 데이터입출력구현
- 파이썬
- 정보처리기사필기
- 중학1-1
- 딥러닝
- 자바 실습
- CNN
- 컴퓨터구조
- numpy/pandas
- 정수와유리수
- 운영체제
- 연습문제
- 텍스트마이닝
- 중학수학
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
영상 처리 8 - 연습문제 풀기 3 : 문제 6~8번 본문
이어서 연습문제를 풀어보겠다. 한 문제를 푸는데 최소 40분 이상 걸리는 매우 어려운 문제들이다. 그래도 이 책에 나온 모든 문제를 다 풀어본 후에 다음 학습으로 진행하기로 다짐했었다.
문제를 풀며 개념과 이론을 더 확실하게 이해할 수 있었다.
연습문제 풀기 세 번째
문제 6번
그림 3-18의 1차원과 2차원 가우시안 함수를 그리는 파이썬 프로그램을 작성하시오.
우선 가우시안에 대해서 이해해야 이 문제를 풀 수 있다. 공부할 때는 무슨 말인지 모르고 넘어갔던 이 내용을 다시 처음부터 학습해 보겠다.
가우시안 함수는 통계와 이미지 처리에서 중요한 함수로, 평균 주변에서 최대값을 갖고 멀어질수록 값이 0에 가까워지는 종 모양의 분포를 가지고 있다.
1차원 가우시안 함수
1차원 가우시안 함수의 수식은 다음과 같다.
- : 위치
- σ : 표준편차 (값이 클수록 봉우리가 넓어짐)
- 루트 2π : 정규화 상수, 함수의 면적이 1이 되도록 함
2차원 가우시안 함수
2차원 가우시안 함수는 1차원에서 확장된 형태로 다음과 같다.
- 와 y : 좌표축의 위치
- σ : 표준편차, 값이 클수록 봉우리가 넓어짐
가우시안 함수의 특징과 활용
가우시안 함수는 중심에서 멀어질수록 값이 감소하지만 절대 0이 되지는 않는다. 디지털 필터에서는 일반적으로 중심에서 약 3배에서 6배의 표준편차까지 필터 크기를 한정하여 구현한다.
예를 들어 σ = 0.7일 때는 반경 4.2 정도까지 영향을 미치기 때문에, 5 x 5 크기의 필터를 사용해 이 범위를 포함한다.
가우시안 함수는 부드럽게 경계를 처리하는 특성 덕분에 이미지 블러링, 스케일 공간 구성, 변이 오토인코더 등 여러 분야에서 많이 사용된다.
그림 3-18의 그래프 설명
- 왼쪽 그래프 (1차원 가우시안 함수): 이 그래프는 1차원 가우시안 함수 g(x)의 형태를 보여준다. 함수의 값이 중심(0)에 가까울수록 높고, 멀어질수록 점차 감소하는 형태로, 종 모양의 곡선이다. 여기서 높이는 가우시안 분포의 봉우리 부분을 나타내며, 중심에서 떨어질수록 값이 0에 가까워진다. 이는 가우시안 필터의 핵심 특성으로, 멀리 떨어진 점일수록 영향력이 줄어드는 효과를 제공한다.
- 오른쪽 그래프 (2차원 가우시안 함수): 이 그래프는 2차원 가우시안 함수 g(x, y)를 3D로 표현한 것이다. 2차원에서는 중심 부분이 봉우리처럼 높고, 멀어질수록 원형으로 확산되며 낮아지는 형태를 보인다. 이는 중심에서 멀어질수록 값이 점점 0에 가까워지는 형태로, 이미지 처리에서 블러링(모서리를 부드럽게 처리) 등 다양한 필터링에 유용하게 사용된다.
이 두 그래프는 가우시안 필터의 작동 방식을 시각적으로 보여주며, 필터의 중심을 기준으로 얼마나 넓고 부드럽게 영향을 미치는지를 나타낸다.
문제 풀기
이제 1차, 2차 가우시안 함수를 그리는 파이썬 코드를 작성해 보겠다.
이렇게 가우시안 그래프 두 개가 모두 만들어졌다.
- 1차원 가우시안 함수 : gaussian_1d 함수는 입력값 x와 표준편차 sigma를 받아서 가우시안 함수 값을 반환한다. sigma=1.0은 표준 편차를 의미한다.
- 2차원 가우시안 함수: gaussian_2d 함수는 두 개의 입력값 x, y와 표준편차 sigma를 받아 2차원 가우시안 함수 값을 반환한다.
- 그래프 생성
- 1차원 함수는 matplotlib의 plot 함수를 이용해 2D 선 그래프로 나타낸다.
- 2차원 함수는 Axes3D 모듈을 사용해 3D 표면 그래프로 표현한다.
문제 7번
프로그램 3-7에서 10행은 필터 크기를 5 x 5, 9 x 9, 15 x 15로 바꾸어가며 가우시안 스무딩을 적용한다. 같은 크기의 필터로 메디안 스무딩을 추가로 적용해 가우시안 스무딩과 메디안 스무딩 결과를 서로 다른 윈도우에 디스플레이하시오. 두 스무딩 기법의 원리를 설명하고 효과 측면에서 어떻게 다른지 설명하시오.
원래 코드
이게 원래 코드이다. 이 코드에 메디안 스무딩을 추가하여 가우시안 스무딩과 메디안 스무딩 결과를 서로 다른 윈도우에 표시하는 예제를 작성해 보겠다.
가우시안 스무딩과 스무딩 결과 서로 다른 윈도우에 표시하기
가우시안 스무딩과 메디안 스무딩 비교 및 원리
1. 가우시안 스무딩 (Gaussian Smoothing)
- 원리 : 가우시안 블러는 이미지를 부드럽게 하기 위해 가우시안 분포를 기반으로 가중 평균을 적용하는 필터링 방법이다. 각 픽셀의 값을 주변 픽셀들과의 거리와 밝기 차이에 따라 가중치를 부여하여 평균화한다.
- 효과 : 엣지를 포함한 이미지 전체를 부드럽게 만드는 데 적합하지만, 엣지 부분에서도 약간의 블러가 발생하여 날카로운 엣지가 흐릿해질 수 있다.
2. 메디안 스무딩 (Median Smoothing)
- 원리 : 메디안 블러는 각 픽셀의 값이 주변 픽셀의 중간 값으로 대체되는 필터링 방법이다. 이는 픽셀의 값이 주변 값들과 동떨어진 경우(예: 노이즈)에 해당 픽셀이 중간 값으로 대체되어 이미지에 노이즈가 있는 부분을 효과적으로 제거한다.
- 효과 : 메디안 블러는 노이즈 제거에 뛰어나지만, 평균화보다는 엣지를 잘 보존합니다. 따라서 엣지 보존을 원하면서 노이즈가 많은 이미지에 적합하다.
가우시안 스무딩과 메디안 스무딩의 차이점
- 가우시안 스무딩은 전체적인 부드러운 흐름을 만들지만 엣지 부분에서도 블러가 발생할 수 있어 엣지를 어느 정도 희생하게 된다.
- 메디안 스무딩은 엣지를 잘 보존하면서 노이즈를 효과적으로 제거하므로 엣지가 선명하게 유지된다.
문제 8번
예시 3-4를 코딩해 히스토그램 평활화를 수행하는 함수 myEqualizeHist를 작성하시오. 프로그램 3-9에서처럼 myEqualizeHist와 openCV가 제공하는 myEqualizeHist의 계산 시간을 비교하시오.
원래 코드
예시 3-4에 따라 히스토그램 평활화를 수행하는 함수 myEqualizeHist를 작성하고, OpenCV의 equalizeHist 함수와 계산 시간을 비교하도록 코드를 작성해 보겠다.
히스토그램 평활화 함수와 OpenCV의 equalizeHist 함수로 계산 시간 비교
코드 설명
- myEqualizeHist 함수
- myEqualizeHist 함수는 이미지의 히스토그램을 계산하고 누적 분포 함수를 구하여 평활화를 적용한다.
- 히스토그램 평활화는 픽셀 값의 빈도를 균등하게 조정하여 명암 대비를 개선하는 방법이다.
- 먼저 히스토그램을 계산한 후, 누적 분포 함수를 구하여 값을 변환한다. 여기서 cdf_m에서 0 값을 마스킹하고, 히스토그램의 최대 및 최소값을 이용해 정규화한다.
- 비교
- OpenCV의 equalizeHist 함수는 같은 작업을 자동으로 수행하므로 계산 속도가 더 빠를 수 있다.
- myEqualizeHist와 equalizeHist의 성능 차이를 비교하기 위해 실행 시간을 측정한다.
학습을 마치고
연습문제가 이제 두 문제 남아있다. 문제를 풀면서 조금은 지루했던 컴퓨터 비전에 다시 흥미를 갖게 되는 계기가 되었다. 남은 두 문제도 마저 풀고 다음 단원으로 넘어가 보겠다.
'인공지능 > 컴퓨터 비전' 카테고리의 다른 글
에지와 영역 1 - 에지 검출 (0) | 2024.11.09 |
---|---|
영상 처리 9 - 연습문제 풀기 4 : 문제 9~10번 (2) | 2024.11.09 |
영상 처리 7 - 연습문제 풀기 2 : 문제 4~5번 (1) | 2024.11.09 |
영상 처리 6 - 연습문제 풀기 1 : 문제 1~3번 (0) | 2024.11.09 |
영상 처리 5 - 기하 연산과 OpenCV의 시간 효율 (0) | 2024.11.09 |