OpenCV/OpenCV 강좌
OpenCV Python inpaint 함수 : 손상된 이미지 복원(Image Inpainting)
webnautes
2024. 4. 4. 21:33
반응형
inpaint 함수는 이미지에서 손상된 부분을 제거하고 그 자리를 자연스럽게 채워 넣어줍니다.
2024. 4. 4 최초작성
왼쪽 이미지가 원본 깊이 이미지입니다. 검은색으로 된 부분이 손상된 부분입니다. 오른쪽은 inpaint 함수를 사용하여 손상된 검은색 부분을 주변 픽셀로 메꾸어 자연스럽게 바꾼 결과입니다.
전체 코드입니다.
import cv2 # 이미지를 로드합니다. img_color = cv2.imread('fall-01-cam0-d-001.png') # 그레이 스케일 이미지로 변환합니다. img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY) # 검은색 영역을 마스크로 사용하기 위해 임계값을 설정합니다. # cv2.THRESH_BINARY_INV를 사용하여 검은색 영역이 흰색이 되고, 나머지가 검은색이 되게 합니다. _, mask = cv2.threshold(img_gray, 1, 255, cv2.THRESH_BINARY_INV) # inpaint 함수를 사용하여 검은색 부분을 주변 색상으로 채웁니다. inpainted_image = cv2.inpaint(img_gray, # 손상된 원본 이미지 mask, # 손상된 부분 또는 수정하고 싶은 영역을 나타내는 마스크 이미지입니다. 손상된 부분은 흰색(255)이고 나머지 부분은 검은색(0)이어야합니다. 3, # 손상된 픽셀을 위해 고려할 주변 픽셀의 반경입니다 cv2.INPAINT_TELEA # 인페인팅 알고리즘을 선택합니다. cv2.INPAINT_TELEA 또는 cv2.INPAINT_NS ) # 결과를 화면에 표시합니다. img_result = cv2.hconcat([img_gray, inpainted_image]) cv2.imshow('result', img_result) cv2.waitKey(0) cv2.destroyAllWindows() |
위 코드에서 사용한 hconcat 함수 사용법은 아래 포스트를 참고하세요.
OpenCV Python – 이미지 연결하는 hconcat, vconcat 예제
https://webnautes.tistory.com/1903
이미지 출처
http://fenix.ur.edu.pl/~mkepski/ds/uf.html
링크에 있는 Depth data 이미지를 다운로드 받아서 이미지 한장을 사용했습니다.
반응형