22개정 인공지능 수학 · Unit 3 · 이미지를 행렬로 다루는 방법
픽셀과 행렬로 이미지 표현하기
컴퓨터가 보는 이미지는 연속적인 그림이 아니라 위치마다 밝기와 색을 기록한 수의 배열입니다. 픽셀의 위치, 채널 순서와 값의 범위를 정하면 한 장의 그림을 행렬 계산의 대상으로 바꿀 수 있습니다.
이번 강의의 목표
픽셀 좌표와 행렬 원소를 연결하고, 흑백과 컬러 이미지의 배열 모양을 정확히 설명합니다.
흑백 이미지
높이가 \(H\), 너비가 \(W\)인 한 채널 이미지는 행이 세로 위치, 열이 가로 위치인 \(H\times W\) 행렬로 나타낼 수 있습니다.
색 이미지
RGB 이미지는 같은 위치의 빨강·초록·파랑 강도를 기록한 세 행렬 또는 길이 3인 픽셀 벡터의 격자입니다.
해상도와 데이터량
이미지 한 장에 들어 있는 성분 수는 높이, 너비와 채널 수의 곱이며 비트 깊이까지 알아야 원시 데이터량을 계산할 수 있습니다.
래스터 이미지와 픽셀
래스터 이미지는 직사각형 격자에 놓인 픽셀(pixel)의 모음입니다. 픽셀은 ‘작은 색 사각형’으로 보이지만 계산에서는 한 개 이상의 숫자로 저장됩니다.
벡터 그래픽처럼 선과 도형의 수식을 저장하는 방식과 달리 래스터 이미지는 해상도를 크게 확대하면 각 픽셀 격자가 드러납니다.
좌표와 행렬 첨자는 순서가 다르게 보일 수 있다
이 강의에서는 왼쪽 위를 \((x,y)=(0,0)\)으로 두고 오른쪽으로 \(x\), 아래쪽으로 \(y\)가 증가한다고 약속합니다. 배열에서는 행을 먼저 쓰므로 같은 픽셀을 \(I[y,x]\)로 읽습니다.
\((x,y)\)
가로 위치를 먼저 말함\(I[y,x]\)
행(세로)을 먼저 기록함도구마다 좌표·채널 관례가 다를 수 있으므로 문서에서 축 순서를 확인해야 합니다. 특히 일부 도구는 RGB가 아니라 BGR 순서로 읽습니다.
행렬은 \(H=4\)개의 행과 \(W=5\)개의 열을 갖습니다. 예를 들어 화면 좌표 \((2,1)\)의 밝기는 세 번째 열, 두 번째 행이므로 \(I[1,2]=255\)입니다.
한 채널 행렬을 읽고 계산하기
이 행렬에는 \(4\times5=20\)개의 밝기값이 있습니다. 전체 평균 밝기는 다음과 같습니다.
평균은 전체 밝기를 하나의 수로 요약하지만 픽셀이 어디에 놓였는지는 잃습니다. 서로 전혀 다른 그림도 같은 평균 밝기를 가질 수 있습니다.
비트 깊이와 표현 가능한 값
한 채널에 \(b\)비트를 사용하면 이론적으로 \(2^b\)개의 정수 단계를 표현할 수 있습니다. 부호 없는 8비트라면 0부터 255까지입니다.
값의 단계가 적으면 부드러운 명암 변화가 띠처럼 보일 수 있습니다. 비트 깊이와 실제 파일 형식이 지원하는 범위는 구분해야 합니다.
계산을 위한 정규화
8비트 값을 255로 나누면 밝기 비율을 \([0,1]\) 범위로 옮길 수 있습니다.
정규화는 픽셀의 위치나 상대적인 순서를 바꾸지 않습니다. 모델이 학습할 때 사용한 범위와 실제 입력의 범위가 반드시 같아야 합니다.
RGB 이미지는 세 행렬의 묶음
다음 2×2 이미지는 빨강, 초록, 파랑, 노랑 픽셀로 만들었습니다. 각 픽셀을 \((R,G,B)\) 벡터로 쓰거나 R·G·B 행렬 세 장으로 분리할 수 있습니다.
이 예제에는 픽셀 4개와 채널 성분 \(2\times2\times3=12\)개가 있습니다. 라이브러리에 따라 배열을 \((H,W,C)\) 또는 \((C,H,W)\)로 둘 수 있으므로 모양(shape)을 확인해야 합니다.
RGBA와 투명도
알파 채널 A는 색이 배경 위에 얼마나 불투명하게 놓이는지를 나타냅니다. 8비트 알파 \(A\)를 \(\alpha=A/255\)로 바꾸면 단순 합성은 다음과 같습니다.
흰 배경 255 위에 검정 0을 \(\alpha=0.5\)로 놓으면 결과 밝기는 \(127.5\), 반올림하면 약 128입니다. 알파는 또 하나의 ‘색’이 아니라 합성에 사용하는 비율입니다.
이미지 여러 장은 4차원 텐서
같은 크기의 RGB 이미지 \(N\)장을 묶으면 흔히 배치, 높이, 너비, 채널 순서의 배열을 사용합니다.
예를 들어 32장의 180×180 RGB 배치는 \(32\times180\times180\times3=3{,}110{,}400\)개의 성분을 갖습니다. 여기서 \(N\)은 이미지 수이지 색 채널 수가 아닙니다.
원시 데이터량 계산하기
압축하지 않은 1920×1080 RGB 이미지가 채널마다 8비트를 사용한다고 합시다.
이 값은 픽셀 성분만 센 이론적인 원시 크기입니다. 실제 PNG나 JPEG 파일 크기는 압축 방식, 품질 설정과 메타데이터에 따라 달라집니다. JPEG는 일반적으로 투명도 채널을 그대로 보존하는 형식도 아닙니다.
크기를 맞출 때 생기는 정보 변화
목표 가로·세로에 강제로 맞춤
종횡비가 바뀌면 형태가 찌그러질 수 있음종횡비를 유지하고 일부 제거
가장자리의 중요한 대상이 사라질 수 있음종횡비를 유지하고 빈 영역 추가
새 테두리 값이 모델의 단서가 될 수 있음예를 들어 400×200 이미지는 종횡비가 2:1입니다. 이를 200×200으로 강제 변경하면 1:1이 되어 물체 모양이 달라집니다. 학습·검증·실제 입력에 동일한 크기 변경 규칙을 적용해야 합니다.
행렬이 담지 못하는 것과 책임 있는 사용
픽셀 배열만으로 촬영 의도나 장면의 맥락이 자동으로 결정되지는 않습니다.
얼굴, 이름표, 위치 정보와 파일 메타데이터가 포함되는지 확인하고 필요한 동의를 받습니다.
조명, 피부색, 카메라, 배경과 촬영 각도가 일부 조건에 치우치면 다른 조건에서 오류가 커질 수 있습니다.
인터넷에서 볼 수 있다는 사실이 학습·배포·변형 허가를 뜻하지 않습니다. 이미지별 라이선스와 출처를 기록합니다.
활동 1 · 행렬과 좌표 읽기
행렬 \(A=\begin{bmatrix}0&100&200\\50&150&250\end{bmatrix}\)의 높이와 너비를 쓰고, 화면 좌표 \((2,1)\)의 값과 전체 평균 밝기를 구하세요.
정답과 해설 보기
2행 3열이므로 \(H=2,W=3\)입니다. \((2,1)\)은 \(A[1,2]=250\)이고 평균은 \((0+100+200+50+150+250)/6=125\)입니다.
활동 2 · 모양과 저장량 계산
64×48 RGBA 이미지 10장을 채널당 8비트로 저장할 때 배열 모양 \((N,H,W,C)\), 전체 성분 수와 압축 전 바이트 수를 구하세요.
정답과 해설 보기
모양은 \((10,48,64,4)\), 성분 수는 \(10\times48\times64\times4=122{,}880\)입니다. 성분당 8비트는 1바이트이므로 원시 데이터량은 122,880바이트입니다.
공개 자료 참고 및 저작권 안내
개념과 배열 관례의 정확성을 확인하기 위해 다음 공개 문서와 오픈소스 구현을 참고했습니다.
- TensorFlow · Load and preprocess images와 image_dataset_from_directory — 이미지 크기, RGB·RGBA 채널 및 배치 텐서 구조 확인. TensorFlow 문서는 별도 표시가 없는 한 본문 CC BY 4.0, 코드 Apache 2.0으로 안내됩니다.
- OpenCV · Operations with images — 행·열 인덱싱, 픽셀 강도와 채널 순서 확인. OpenCV 4.5 이상은 Apache 2.0 라이선스로 공개됩니다.
- Pillow Handbook · Concepts — 래스터, 좌표계, 밴드, L·RGB·RGBA 모드와 비트 깊이 개념 확인.
- NumPy · About — 이미지 계산에 사용하는 다차원 배열의 오픈소스 생태계 확인. NumPy는 수정 BSD 라이선스로 공개됩니다.
외부 자료의 문장, 코드, 이미지, 데이터나 표를 복제하지 않았습니다. 4×5 밝기 행렬, 2×2 RGB 예제, 계산 문제, 설명과 SVG 픽셀 그림은 이 강의를 위해 독립적으로 작성했습니다. 외부 이미지나 코드를 직접 사용할 때에는 각 항목의 최신 라이선스와 출처 표시 조건을 확인하세요.
학습 원칙
계산 결과만 제시하지 않고 사용한 데이터, 수학적 가정, 평가 기준과 적용 한계를 함께 설명합니다. 개인정보와 편향 가능성을 확인하고 인공지능의 출력을 확정된 사실로 해석하지 않습니다.
교육과정 구성 근거
국가교육과정정보센터의 2022 개정 교육과정, 한국과학창의재단 수학과 교육과정 개발 연구, 부산광역시교육청 고교학점제 과목 안내를 과목 성격과 내용 범위 확인에 참고했습니다. 단원 구성, 강의명, 설명과 예시는 이 사이트의 학습 흐름에 맞게 독립적으로 작성했습니다.
가로 320, 세로 240인 8비트 RGB 이미지의 배열 모양 \(H,W,C\), 전체 채널 성분 수, 압축 전 비트 수와 바이트 수를 구하세요. 이어 화면 좌표 \((12,7)\)이 배열에서 어떤 첨자로 접근되는지 쓰고, 같은 이미지를 RGBA로 바꾸면 성분 수가 얼마나 증가하는지 설명하세요.