이 글에서는 예제를 통해 Matplotlib의 imshow() 함수가 M×N×4 형태의 입력 배열에서 알파 채널을 어떻게 처리하는지 살펴보겠습니다.
RGBA 배열과 알파 채널의 이해
M×N×4 형태의 배열은 각 픽셀이 R(빨강), G(초록), B(파랑), A(알파) 네 가지 성분으로 구성됨을 의미합니다. 이 중 마지막 차원인 알파 채널은 투명도를 결정하며, 0은 완전히 투명, 255는 완전히 불투명을 나타냅니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
- numpy의 ones()를 사용해 지정된 크기와 데이터 타입으로 1로 채워진 새로운 배열을 생성한 뒤, 255를 곱해 최대 밝기로 만듭니다.
- 초록(G) 채널에 linspace()로 그라데이션 값을 적용하고, 알파 채널은 255로 유지하여 완전히 불투명하게 처리합니다.
- imshow()를 사용해 데이터를 2D 정규 래스터 이미지로 표시합니다.
- show() 메서드를 호출해 그림을 화면에 출력합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True d = np.ones((100, 100, 4), dtype=np.uint8)*255 d[:, :, 1] = np.linspace(0, 255, num=100) plt.imshow(d) plt.show()
실행 결과


결과 해석
위 코드에서는 모든 픽셀의 알파 값을 255로 설정했기 때문에 이미지 전체가 완전히 불투명하게 표시됩니다. 반면 초록 채널의 값이 왼쪽에서 오른쪽으로 0에서 255까지 선형적으로 변하기 때문에, 결과 이미지는 자홍색(magenta)에서 흰색으로 이어지는 그라데이션을 보여줍니다.
만약 알파 채널의 값을 낮추면 해당 영역은 배경과 함께 섞여 반투명하게 렌더링되며, 0으로 설정하면 완전히 투명해집니다. 이처럼 imshow()는 M×N×4 입력에서 네 번째 채널을 알파(투명도) 정보로 인식하고, 이를 이미지 렌더링 과정에 그대로 반영합니다.