| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 시작하기
- 리사이즈
- resize
- 이미지서버
- 게임서버
- 좌표
- 지하철역
- Thumbnail
- 화소
- ProudNet
- AWS
- S3
- 아날로그영상
- 이미지프로세싱
- lightsail
- 프라우드넷
- Sharp
- 데이터
- Bucket
- 튜토리얼
- multiparty
- streaming
- 디지털영상
- 이미지
- 샘플링
- Node
- 버킷
- nodejs
- 스트리밍서버
- 노선
- Today
- Total
Deep Studying
[이미지 프로세싱] 디지털 신호란? 디지털 영상과 샘플링 본문
아날로그와 디지털
아날로그가 뭘까?
여러 신호 중에 우리가 직접 관찰할 수 있는 빛의 세기, 소리의 크기와 같은 것들은 연속적인 값을 가진 신호 입니다. 이러한 신호는 아날로그 신호라고 하며 이를 표현하기 위해 그래프나 함수식을 사용하죠.

예를 들어 y=2x 라는 함수로 표현되는 신호가 있다고 해봅시다.

이 신호는 그림처럼 가로축의 길이를 10에서 1로, 1에서 0.01로 아무리 확대해봐도 연속일 것입니다. 이렇게 연속적인 신호를 아날로그 신호라고 합니다. 그렇다면 디지털이란 무엇일까요?
디지털이란?
|
디지털(digital)은 아날로그를 연속적인 실수가 아닌, 특정한 최소 단위를 갖는 이산적인 수치를 이용하여 처리하는 방법이다. |
예를 들어 위의 y=2x 라는 신호를 그래프로 표현한다고 했을 때, '기울기가 2이고 (0,0)을 지나는 직선을 그려야겠군' 이라고 생각하는 것이 아니라

x가 0일 때 y는 0,
x가 1일 때 y는 2,
x가 2일 때 y는 4,
...
x가 99일 때 y는 198
'이렇게 점을 100개쯤 찍어놓으면 전체적으로 봤을 때 y=2x같은 직선이 나오겠네!' 하고 생각하는 것입니다.
컴퓨터는 0과 1로 이루어진 기계이기 때문에 함수나 그래프를 이용하여 의미를 기억하거나, 그때그때 복잡한 계산을 하는 것을 어려워합니다. 하지만 많은 숫자를 기억하는 아주 잘 할 수 있죠. 그렇기 때문에 컴퓨터는 디지털로써 신호를 저장하고 처리합니다.
문제점?
물론 이런 접근법에는 몇 가지 문제가 있습니다. 위와 같이 100개의 점으로 표현된 신호는 아래 그림처럼 확대하면 연속된 선처럼 보이지 않을 뿐더러 'x는 200일때 y는?' 혹은 'x는 0.5일 때 y는?' 같은 물음에 답하지 못한다는 점입니다.

하지만 컴퓨터가 저장하고 처리하기에 수월하며, 필요에 따라 신호를 저장하는 간격만 잘 조절해준다면 훨씬 효율적으로 사용할 수 있기 때문에 디지털 신호가 나쁜 것만은 아닙니다. ( 집에 수백 개의 오르골, 혹은 수백 개의 LP판을 가져다 놓는 것 보다 그 노래들을 컴퓨터나 스마트폰에 저장하는 것이 더 효율적인 것처럼 말이죠 )
영상과 샘플링 ( sampling )
아날로그 영상
우리가 눈으로 보는 것들은 모두 분자라는 작은 알갱이로 되어있습니다. '그림을 본다' 거나 '책을 본다' 라는 것은 사물을 구성하고있는 수많은 분자들의 덩어리를 눈으로 인지하는 것이죠. 하지만 이 분자는 너무나도 작아서 우리가 사물을 아무리 확대해봐도 연속적인 것 처럼 보입니다. 그렇기 때문에 우리가 눈으로 보는 세상은 엄밀히 따지자면 디지털 신호지만 아날로그라고 말할 수 있을 정도로 디테일합니다.
샘플링과 디지털 영상
하지만 컴퓨터에 영상을 저장하기 위해서는 분자 단위로 색이나 밝기를 기억할 필요는 없기 때문에 위에서 설명한 것 처럼 기준을 나누어 사진을 디지털화 시켜서 저장합니다.
> '카메라 렌즈에 비치는 모습을 가로 1920칸, 세로 1080칸으로 나눠서 Red, Blue, Green 별로 밝기 값을 따로 저장해야지!'
> '카메라 렌즈에 비치는 모습을 가로 400칸, 세로 300칸으로 나눠서 흑백 밝기 값만 저장해야지!'
이런 것이 디지털 영상이 되기 전에 세우는 기준이 될 수 있으며, '화이트 밸런스가 몇이었는지도 저장해야지' 같이 얼마든지 디테일한 기준을 세울 수도 있습니다. 이러한 과정을 거쳐 아날로그 영상이 디지털 영상으로 변환 되는 것을 샘플링 ( sampling )이라고 합니다.
이 때, 기준이 되었던 가로 1920칸 x 세로 1080칸, 또는 가로 400칸 x 세로 300칸 은 해상도( Resolution )라고 하며 나누어진 각각의 사각형 모양의 칸을 화소( Pixel ) 라고 부릅니다. 또한 밝기의 종류를 각각 채널 ( Channal ) 이라고 부릅니다. 3색의 RGB 이미지는 Red, Green, Blue의 3개의 채널을 가진 셈이고, 흑백 사진은 단색의 밝기 채널 하나만을 가지고 있는 것 입니다.
정리해볼까요?
- 샘플링 (Sampling): 아날로그 영상을 디지털 영상으로 변환하는 것을 말합니다.
- 화소 (Pixel): 아날로그 영상을 가로 방향으로 N개, 세로 방향으로 M개의 점으로 샘플링하면 각각의 점을 화소라고 부릅니다.
- 해상도 (Resolution): 영상의 크기, 즉 화소의 개수를 말합니다. 위의 M과 N에 대해 M x N이 해상도입니다.
- 채널 (Channel): 밝기의 종류 입니다. 흔히 사용하는 채널에는 Red, Blue, Green, Alpha가 있습니다.
다음 포스트에서는 샘플링과 비슷한 이미지 리사이징 (Resizing)에 대해 알아보고 직접 코드를 작성해보도록 하겠습니다.
'컴퓨터비전' 카테고리의 다른 글
| [이미지 프로세싱] python과 openCV로 이미지 픽셀 수정하기 1 - 리사이징 (4) | 2019.06.26 |
|---|---|
| [이미지 프로세싱] 양자화와 리사이징 (0) | 2019.06.26 |