이미지 복원 : TELEA

김성빈·2024년 5월 22일
0

Modern Computer Vision

목록 보기
40/117

OpenCV의 손상 복원 알고리즘인 TELEA 을 이용하여 전처리 한 이미지를 복원한다.

# 손상된 사진을 불러옵니다.
image = cv2.imread('images/abraham.jpg')
imshow('원본 손상된 사진', image)

# 손상된 영역을 표시한 사진을 불러옵니다.
marked_damages = cv2.imread('images/mask.jpg', 0)
imshow('손상된 영역 표시', marked_damages)

# 흰색이 아닌 모든 색을 검은색으로 변경하여 마스크를 만듭니다.
ret, thresh1 = cv2.threshold(marked_damages, 254, 255, cv2.THRESH_BINARY)
imshow('이진화', thresh1)

# 마스크를 두껍게 만듭니다.
# 이진화로 인해 마스크가 약간 좁아졌으므로 팽창(dilate)을 수행합니다.
kernel = np.ones((7,7), np.uint8)
mask = cv2.dilate(thresh1, kernel, iterations = 1)
imshow('팽창된 마스크', mask)
cv2.imwrite("images/abraham_mask.png", mask)

# 이미지 복원을 수행합니다.
restored = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)

imshow('복원된 이미지', restored)
  1. 손상된 이미지 로드
cv2.imread('images/abraham.jpg')


2. 이미지는 손상된 영역을 표시

cv2.imread('images/mask.jpg', 0)

손상된 영역을 표시하기 위해 그레이스케일

3. 손상된 영역 표시

cv2.threshold(marked_damages, 254, 255, cv2.THRESH_BINARY)

손상된 영역을 표시한 마스크 이미지에서 임계값을 기준으로 이진화를 수행

임계값 이상의 값은 흰색(255)으로 설정

4. 손상 영역 팽창(dilate)

cv2.dilate(thresh1, kernel, iterations = 1)

마스크의 경계를 부드럽게 하여 복원 작업을 더 자연스럽게 만들기 위함이다.

5. 손상 복원 알고리즘 : TELEA

cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)

손상된 이미지와 마스크를 입력으로 받아 손상된 영역을 복원

TELEA 알고리즘을 사용하여 복원을 수행하며, 이웃 픽셀의 반경은 3으로 설정

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글