일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이미지서버
- 버킷
- 좌표
- 샘플링
- 이미지프로세싱
- 화소
- Bucket
- 데이터
- Thumbnail
- 튜토리얼
- nodejs
- S3
- 지하철역
- streaming
- resize
- 스트리밍서버
- 아날로그영상
- ProudNet
- 노선
- 리사이즈
- AWS
- Sharp
- 게임서버
- multiparty
- 프라우드넷
- lightsail
- 디지털영상
- Node
- 이미지
- 시작하기
- 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 |