일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴퓨터비전
- 머신러닝
- 자바 실습
- 파이썬라이브러리
- 중학수학
- 데이터분석
- JSP/Servlet
- CSS
- 혼공머신
- html/css
- 코딩테스트
- CNN
- 정수와유리수
- 텍스트마이닝
- 데이터베이스
- 데이터입출력구현
- numpy/pandas
- 운영체제
- 정보처리기사실기
- 딥러닝
- 영어공부
- C++
- 컴퓨터구조
- 자바
- 정보처리기사필기
- SQL
- 파이썬
- 중학1-1
- pandas
- 연습문제
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
영상 처리 6 - 연습문제 풀기 1 : 문제 1~3번 본문
이제 3장을 마무리하는 연습문제를 풀어보려고 한다. 이번 장도 10문제나 되어 3번에 나누어서 문제를 풀어볼 것이다. 3장부터는 정말 어려워서 절반도 이해하지 못했지만 문제를 풀면서 고민하며 감이 좀 잡힐 것 같다.
연습문제 풀기
문제 1번
그림 3-5는 다양한 형태의 영상을 예시한다. 다음 영상이 차지하는 메모리 양을 바이트 단위로 제시하시오. (1)~(4)에서는 한 채널을 구성하는 화소 하나가 8비트(1바이트)로 표현된다고 가정한다.
(1) 512 x 512 컬러 영상
(2) 30초 분량의 256 x 256 컬러 동영상(30FPS를 가정)
(3) 256 x 256 x 128 CT 영상
(4) 512 x 512 크기의 8채널 다분광 영상
(5) 20,000개 점으로 구성된 점 구름 영상(한 점은 x, y, z는 각각 4바이트 실수로 표현)
가정
- 화소 하나가 8비트(1바이트)로 표현된다고 가정
- 실수(float)는 4바이트로 표현
1. 512 x 512 컬러 영상
컬러 영상은 RGB 3채널로 구성되므로, 각 화소는 3바이트이다.
512 × 512 × 3 = 786,432 바이트
2. 30초 분량의 256 x 256 컬러 동영상 (30FPS)
동영상은 30 FPS로 30초 동안 재생되며, 각 프레임은 256 x 256 해상도에 RGB 3채널로 구성된다.
256 × 256 × 3 × 30 × 30 = 176,947,200 바이트
3. 256 x 256 x 128 CT 영상
CT 영상은 256 x 256 해상도에 128개의 깊이 축을 가진 단일 채널 영상이다.
256 × 256 × 128 = 8,388,608 바이트
4. 512 x 512 크기의 8채널 다분광 영상
다분광 영상은 8개의 채널을 가지므로, 각 화소는 8바이트이다.
512 × 512 × 8 = 2,097,152 바이트
5. 20,000개 점으로 구성된 점 구름 영상
한 점은 x, y, z 3차원 좌표를 가지며, 각 좌표는 4바이트 실수로 표현된다.
20,000 × 3 × 4 = 240,000 바이트
문제 2번
그림 3-13 a의 입력 영상에 대해 다음 구조 영상에 대해 다음 구조를 이용해 팽창한 영상과 침식한 영상을 제시하시오.
팽창과 침식은 이미지의 형태학적 변환의 기본 연산이다. 이 연산들은 일반적으로 이진 이미지에서 객체의 형태를 조정하는 데 사용되며, 구조 요소라는 작은 커널을 사용하여 이미지를 변환한다.
- 팽창(Dilation)
- 팽창은 객체의 경계를 확장한다. 구조 요소의 중심이 이미지 내의 픽셀 위에 위치할 때, 구조 요소 내에 하나라도 1이 포함되면 중심 픽셀 값을 1로 변경한다.
- 즉, 객체의 크기를 늘리며, 잡음 제거나 객체의 구멍을 메우는 데 유용하다.
- 침식(Erosion)
- 침식은 객체의 경계를 축소한다. 구조 요소의 중심이 이미지 내의 픽셀 위에 위치할 때, 구조 요소 내의 모든 위치에 1이 포함되어야 중심 픽셀 값을 1로 유지한다. 그렇지 않으면 0으로 바뀐다.
- 객체의 크기를 줄이며, 노이즈를 제거하거나 객체의 경계를 깔끔하게 만드는 데 사용된다.
문제 풀기
# 구조 요소
0 1 0
1 1 1
0 1 0
# 입력 이진 영상
0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 0 0
0 1 1 1 0 0 0 0 0
1 1 0 1 1 1 0 0 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1
1 1 0 1 0 0 0 1 1
0 1 1 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
1은 객체를, 0은 배경을 나타낸다.
# 팽창하기
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
구조 요소가 1인 위치의 주변 픽셀 값이 1로 변하게 된다. 이는 객체가 확장되어 더 넓은 영역을 차지하도록 만든다.
# 침식하기
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0
0 0 0 1 1 0 0 0 0
0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
구조 요소의 형태대로 1이 포함되어 있는 영역만 남기고, 나머지를 0으로 바꾼다. 이를 통해 객체가 작아진다.
문제 3번
다음 5 x 5 영상에 대해 히스토그램 평활화를 수행하시오. 예시 3-4의 표와 그림 3-15를 제시하시오.
히스토그램 평활화는 이미지의 명암값 분포를 고르게 만들어 대비를 개선하는 기법이다. 5 x 5 영상에 대해 히스토그램 평활화를 수행하는 절차는 다음과 같다.
- 히스토그램 계산 : 주어진 5 x 5 영상에서 각 명암값(0~7)의 빈도를 계산하여 히스토그램을 만든다.
- 누적 히스토그램 계산 : 각 명암값에 대해 이전 명암값까지의 빈도를 누적하여 누적 히스토그램을 계산한다.
- 정규화된 누적 히스토그램 계산 : 누적 히스토그램 값을 전체 픽셀 수로 나눠 정규화된 값을 얻는다.
- 새로운 명암값 결정 : 정규화된 누적 히스토그램 값을 L-1(명암값의 최대 범위)을 곱해 새로운 명암값을 계산한다.
- 매핑 테이블 작성 : 원래 명암값을 새로 계산된 명암값으로 매핑하는 테이블을 작성한다.
- 평활화 적용 : 이 매핑 테이블을 사용하여 주어진 영상을 변환하여 평활화된 결과를 얻는다.
문제 풀기
주어진 5x5 영상에 대해 히스토그램 평활화를 수행해 보겠다.
1. 입력 영상
0 0 1 1 3
2 3 3 3 3
3 3 4 4 4
4 3 4 5 7
4 4 4 5 7
2. 히스토그램 계산
각 명암값의 빈도수를 계산하여 히스토그램을 만든다.
명암값빈도 (h) | 빈도(h) |
0 | 2 |
1 | 2 |
2 | 1 |
3 | 7 |
4 | 6 |
5 | 2 |
7 | 2 |
빈도는 명암값의 개수를 세면 된다.
3. 누적 히스토그램 (정규화 누적 히스토그램)
빈도를 누적하여 누적 히스토그램을 계산한 후, 각 누적 값을 전체 픽셀 수 (25)로 나누어 정규화한다.
명암값 | 빈도 (h) | 누적 히스토그램 (H) | 정규화 누적 히스토그램( h^) |
0 | 2 | 2 | 0.08 |
1 | 2 | 4 | 0.16 |
2 | 1 | 5 | 0.20 |
3 | 7 | 12 | 0.48 |
4 | 6 | 18 | 0.72 |
5 | 2 | 20 | 0.80 |
7 | 2 | 25 | 1.00 |
4. 새로운 명암값 계산 (L−1을 곱해 새 명암값을 결정)
정규화 누적 히스토그램에 L − 1 = 7을 곱하여 새로운 명암값 I'을 계산한다.
명암값 | h^ | h^ x 7 | 새 명암값 (반올림) |
0 | 0.08 | 0.56 | 1 |
1 | 0.16 | 1.12 | 2 |
2 | 0.20 | 1.4 | 2 |
3 | 0.48 | 3.36 | 3 |
4 | 0.72 | 5.04 | 5 |
5 | 0.80 | 5.6 | 6 |
7 | 1.00 | 7.0 | 7 |
5. 변환 테이블
원래 명암값을 새 명암값으로 매핑한다.
원래 명암값 I | 새 명암값 |
0 | 1 |
1 | 2 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 6 |
7 | 7 |
6. 변환된 영상
주어진 영상의 각 픽셀 값을 새 명암값으로 치환하여 변환된 영상을 얻는다.
1 1 2 2 3
2 3 3 3 3
3 3 5 5 5
5 3 5 6 7
5 5 5 6 7
이게 바로 문제의 답이다.
학습을 마치고
문제가 많이 어려워서 푸는데 한참의 시간이 걸렸다. 2번은 조금 헷갈리기는 했어도 그래도 어느 정도 이해했다. 공부할 때는 하나도 이해하지 못했던 부분인데 문제를 풀며 더 잘 알게 되었다.
하지만 오늘은 공부에 집중이 잘 되지 않는다.
'인공지능 > 컴퓨터 비전' 카테고리의 다른 글
영상 처리 8 - 연습문제 풀기 3 : 문제 6~8번 (1) | 2024.11.09 |
---|---|
영상 처리 7 - 연습문제 풀기 2 : 문제 4~5번 (1) | 2024.11.09 |
영상 처리 5 - 기하 연산과 OpenCV의 시간 효율 (0) | 2024.11.09 |
영상 처리 4 - 영역 연산 (2) | 2024.11.09 |
영상 처리 3 - 점 연산 (0) | 2024.11.09 |