나뭇잎 교과서

행렬로 나타낸 이미지

디지털 이미지는 작은 네모 점(픽셀)이 바둑판처럼 늘어선 것입니다. 픽셀마다 밝기를 수로 적으면 이미지는 행렬이 되고, 색 이미지는 빨강·초록·파랑의 세 행렬이 됩니다. 이 절에서는 이미지를 행렬로 직접 만들어 보고, 인공지능이 사진을 어떤 수로 받는지 확인합니다.

먼저 알면 좋은 것 행렬의 뜻과 성분
본문

행렬로 나타낸 이미지

본문

휴대폰으로 찍은 사진을 아주 크게 확대하면 작은 색 사각형들이 바둑판처럼 늘어서 있다. 컴퓨터는 사진을 '고양이'로 기억하는 것이 아니라 이 사각형 하나하나의 밝기와 색을 숫자로 기억한다. 사진은 어떤 숫자 표로 바뀌며, 그 표의 크기는 얼마나 될까?

그림 1. 왼쪽은 8 × 8 픽셀의 흑백 이미지, 오른쪽은 각 픽셀의 밝기(0 검정 ~ 255 흰색)를 적은 행렬이다. 기준값을 정하면 기준 이상은 1, 미만은 0인 0과 1의 행렬로 바뀐다.
먼저 알아야 할 것행렬의 뜻과 성분(공통수학1), 이진법(정보).

3.1.1픽셀과 행렬

디지털 이미지는 픽셀이라는 작은 사각형들이 가로세로로 늘어선 것이다. 흑백 이미지에서는 각 픽셀의 밝기를 하나의 수로 나타내는데, 보통 0(검정)부터 255(흰색)까지 256단계를 쓴다. 256은 \(2^8\)이므로 픽셀 하나에 8비트가 든다. 세로 \(m\)개, 가로 \(n\)개 픽셀의 밝기를 그대로 적으면 \(m \times n\) 행렬이 된다.

정리 3.1.1 이미지와 행렬

세로 \(m\)픽셀, 가로 \(n\)픽셀인 흑백 이미지는 \((i, j)\) 성분이 \(i\)행 \(j\)열 픽셀의 밝기인 \(m \times n\) 행렬로 나타낸다. 컬러 이미지는 빨강(R), 초록(G), 파랑(B)의 세기를 각각 담은 \(m \times n\) 행렬 세 개로 나타낸다.

그림 1의 슬라이더로 기준값을 정해 보자. 기준을 128로 하면 밝은 고리 모양만 1로 남고 나머지는 0이 된다. 기준을 높이면 1인 칸이 줄어든다. 이렇게 0과 1만으로 나타낸 이미지를 이진 이미지라 하며, 글자 인식처럼 모양만 중요할 때 쓴다. 이진 이미지는 픽셀 하나에 1비트면 되므로 저장 공간도 8분의 1로 줄어든다.1

3.1.2컬러 이미지

화면의 픽셀 하나는 빨강, 초록, 파랑의 아주 작은 빛 세 개로 이루어져 있고, 세 빛의 세기를 섞어 모든 색을 낸다. 세 값이 모두 255이면 흰색, 모두 0이면 검정, (255, 0, 0)이면 빨강, (255, 255, 0)이면 노랑이다. 세 값이 같으면 회색이 된다. 각 값이 256단계이므로 표현할 수 있는 색은 \(256^3\), 약 1677만 가지이다. 그래서 컬러 이미지는 같은 크기의 행렬 세 장을 겹친 것으로 볼 수 있다. 컬러 사진을 흑백으로 바꿀 때는 세 값의 가중평균을 쓰는데, 사람의 눈이 초록에 가장 민감하므로 초록에 가장 큰 가중치를 준다.

R, G, B 행렬 세 장각 성분 0 ~ 255픽셀 하나 = 24비트
그림 2. 컬러 이미지는 빨강, 초록, 파랑의 세기를 담은 행렬 세 장을 겹친 것이다.

3.1.3예제 풀이

예제 3.1.2

가로 1920픽셀, 세로 1080픽셀인 컬러 사진을 압축하지 않고 저장하면 몇 바이트가 필요한가? (1바이트 = 8비트) 같은 크기의 흑백 사진이면 얼마인가?

픽셀 수는 \(1920 \times 1080 = 2\,073\,600\)개이다. 컬러는 픽셀마다 R, G, B 각 8비트, 곧 3바이트이므로 \(2\,073\,600 \times 3 = 6\,220\,800\)바이트, 약 6.2 MB이다.

흑백은 픽셀마다 1바이트이므로 \(2\,073\,600\)바이트, 약 2.1 MB이다. 실제 사진 파일이 이보다 훨씬 작은 것은, 이웃한 픽셀의 값이 비슷하다는 점을 이용해 압축하기 때문이다. 이 사진을 인공지능에 넣는다는 것은 600만 개가 넘는 수를 입력하는 것과 같다.

아래 탐구 카드에서 그림을 숫자 행렬로 바꾸고, 컬러 사진을 행렬 세 장으로 나누어 보자.

  1. 흑백 변환의 기준값을 사람이 정하는 대신, 밝기 분포를 보고 두 무리를 가장 잘 가르는 값을 자동으로 고르는 방법도 있다. 문서 사진을 스캔할 때 글자와 바탕을 나누는 데 쓰인다.
마무리

디지털 이미지는 픽셀의 바둑판이며, 흑백 이미지는 각 픽셀의 밝기(0~255)를 성분으로 하는 행렬, 컬러 이미지는 R, G, B의 세 행렬로 나타낸다. 기준값을 정하면 0과 1만의 이진 행렬로 바꿀 수 있다. 그래서 처음 질문의 사진은 픽셀 수만큼의 성분을 가진 숫자 표로 바뀌며, 보통의 컬러 사진은 수백만 개의 수가 된다.

탐구 1

그림을 숫자로 된 표, 곧 행렬로 바꿀 수 있을까?

행렬로 나타낸 이미지 · 만들기

            

  1. 질문사진을 확대하면 작은 네모 점(픽셀)이 보인다. 컴퓨터는 이 점들을 어떻게 기억하고, 인공지능은 어떻게 사진을 읽을까?
  2. 복원\(m\)개의 행과 \(n\)개의 열로 수를 늘어놓은 것을 \(m \times n\) 행렬이라 하고, \(i\)행 \(j\)열의 수를 \((i, j)\) 성분이라 한다.
  3. 설명흑백 이미지는 픽셀마다 밝기를 0(검정)부터 255(흰색)까지의 정수로 나타내, 픽셀의 배치 그대로 행렬에 담는다. 가로 8, 세로 8픽셀이면 \(8 \times 8\) 행렬이고, 성분 하나에 1바이트(\(2^8 = 256\)가지)를 쓰면 64바이트이다. 인공지능은 이 행렬을 입력으로 받아 계산한다.
  4. 연결다음 카드에서는 색이 있는 이미지를 빨강, 초록, 파랑 세 행렬로 나타내고, 다음 절에서는 행렬 연산으로 이미지를 바꾼다.
  5. 적용픽셀을 칠해 글자나 무늬를 만들고 행렬이 어떻게 바뀌는지 보자. 그리고 휴대폰 사진(가로 4000, 세로 3000픽셀)의 흑백 행렬은 성분이 몇 개일지 계산해 보자.
  6. 판단행렬의 행 번호는 위에서 아래로, 열 번호는 왼쪽에서 오른쪽으로 센다. 좌표평면의 \((x, y)\)와 순서와 방향이 다르므로 헷갈리지 않도록 해야 한다.

확인조건이 달라지면

가로 640, 세로 480픽셀인 흑백 이미지를 행렬로 나타내면 크기와 성분 수는?

탐구 2

색이 있는 사진은 행렬 몇 개로 나타낼까?

RGB 행렬 · 조작

            

해바라기를 흉내 낸 6×6 가상 이미지이다.

  1. 질문흑백 사진은 행렬 하나로 나타냈다. 노란 해바라기처럼 색이 있는 사진은 어떻게 수로 나타낼까?
  2. 복원같은 크기의 행렬끼리는 같은 위치의 성분끼리 비교하거나 더할 수 있다.
  3. 설명화면의 색은 빛의 삼원색인 빨강(R), 초록(G), 파랑(B)을 섞어 만든다. 그래서 색 이미지는 픽셀마다 세 값(각 0~255)을 갖고, 같은 크기의 세 행렬로 나타낸다. R과 G가 크고 B가 작으면 노랑, 셋 다 크면 흰색, 셋 다 0이면 검정이며, 한 픽셀이 나타낼 수 있는 색은 \(256^3 \approx 1678\)만 가지이다.
  4. 연결인공지능의 이미지 입력은 보통 세로 × 가로 × 3의 수 묶음이다. 사진 편집 앱의 채도나 색온도 조절도 세 행렬을 계산으로 바꾸는 것이다.
  5. 적용채널을 하나씩 꺼 보며 파랑을 끄면 하늘이 어떻게 보이는지 확인해 보자. 그리고 픽셀을 골라 세 값을 바꿔 원하는 색을 만들어 보자.
  6. 판단물감을 섞으면 어두워지지만(빼기 혼합), 빛을 섞으면 밝아진다(더하기 혼합). 화면의 RGB는 빛의 혼합이라서 R과 G를 섞으면 노랑이 된다.

확인조건이 달라지면

가로 100, 세로 50픽셀인 색 이미지를 RGB 행렬로 나타낼 때 필요한 수의 개수는?

AI 출제 문항연습문제 풀어보기14문항
Esc

↑↓ 고르기Enter 열기