Numpy의 인덱싱 기능을 활용하면 영상의 특정 영역에 원하는 값을 대입하여 인공적인 영상을 생성할 수 있다. 이는 의료 영상 처리에서 마스크(Mask)를 만들거나 특정 관심 영역(ROI)을 설정할 때 필수적인 기술이다.
1. 가로/세로 그라데이션 영상 만들기
np.zeros를 통해 빈 영상을 생성한 후, 행과 열의 범위를 지정하여 서로 다른 밝기 값을 입력한다.
[실습 코드: 가로 및 세로 단계별 영상 생성]
Python
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
w, h = 512, 512
image = np.zeros(shape=(h, w), dtype=np.uint8)
img = np.zeros(shape=(h, w), dtype=np.uint8)
# 가로 방향 단계별 밝기 설정
image[0:129] = 240
image[129:255] = 200
image[255:383] = 100
image[383:512] = 0
cv2_imshow(image)
# 세로 방향 단계별 밝기 설정
img[:, 0:129] = 240
img[:, 129:255] = 200
img[:, 255:383] = 100
img[:, 383:512] = 0
cv2_imshow(img)

2. 복합 패턴 영상 및 테두리 설정
인덱싱의 슬라이싱 기능을 활용하면 체스판 형태의 패턴이나 영상의 테두리(Border)를 손쉽게 그릴 수 있다.
[실습 코드: 사분면 패턴 및 테두리 생성]
Python
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
w, h = 512, 512
image = np.zeros(shape=(h, w), dtype=np.uint8)
# 각 사분면별 기본 밝기 설정
image[0:255, 0:255] = 70
image[255:512, 0:255] = 200
image[0:255, 255:512] = 130
image[255:512, 255:512] = 240
# 특정 간격(Step)을 이용한 점 패턴 생성
image[0:255:5, 0:255:5] = 250
image[255:512:5, 255:512:5] = 0
# 영상의 테두리를 특정 값으로 설정
image[:10, :] = image[502:, :] = image[:, :10] = image[:, 502:] = 160
cv2_imshow(image)

3. 의료 영상 정보 표시 (Graphic Annotation)
numpy.shape를 통해 얻은 영상의 구조 정보를 영상 위에 직접 텍스트로 출력하여 데이터 정보를 시각화한다.
[실습 코드: 영상 정보 출력하기]
Python
import cv2
# 의료 영상 데이터 읽기
image = cv2.imread("/content/drive/MyDrive/의료 상대이타/chest.bmp") # 2번째 인수가 없으면 color 형으로 read
color = (0, 255, 0) # green, BGR
color1 = (0, 255, 255) # yellow, BGR
# 이미지에 문자 출력 : 문자열, 위치, 크기, 색, 두께
cv2.putText(image, "Bin Th: 128", (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.6, color, 1)
cv2.putText(image, "image width 512", (20, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.6, color, 1)
cv2.putText(image, "image height 512", (20, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.6, color, 1)
cv2.putText(image, "image bytes/pixel 3", (20, 100), cv2.FONT_HERSHEY_SIMPLEX, 0.6, color, 1)
# 이미지에 사각형 출력: 시작위치, 종료위치, 색, 두께
cv2.rectangle(image, (10, 10), (330, 120), color1, 1)
from google.colab.patches import cv2_imshow
cv2_imshow(image)

'영상처리' 카테고리의 다른 글
| Part 6 : Gabor 및 가우시안 필터 (0) | 2026.02.25 |
|---|---|
| Part 5: 히스토그램 분석부터 다중 주파수 선명화까지 (0) | 2026.02.25 |
| Part 4 : Sigmoid 함수 변환 (0) | 2026.02.25 |
| Part 3 : 영상 이진화와 멱함수 변환 (0) | 2026.02.25 |
| Part 1 : OpenCV 의료 영상 처리 기초 (0) | 2026.02.25 |