Python-OpenCV 의 cv2.inpaint()함수 사용
4210 단어 OpenCVcv2.inpaint()
복 구 는 그림 플러그 인 입 니 다.디지털 복구 알고리즘 은 이미지 플러그 인,사진 복구,크기 조정 과 초 해상도 등에 서 광범 위 하 게 응용 된다.
대부분의 사람들 은 집에 오래된 퇴화 사진 을 놓 고 그 위 에 검 은 점,필획 등 이 있다.당신 은 그것 을 회복 할 생각 이 있 습 니까?우 리 는 간단하게 회화 도구 에서 그것들 을 지 울 수 없다.왜냐하면 그것 은 흰색 구조 로 검은색 구 조 를 간단하게 교체 하 는데 이것 은 쓸모 가 없 기 때문이다.이런 상황 에서 이미지 복구 라 는 기술 을 사용한다.기본 적 인 사 고 는 간단 합 니 다.이웃 의 픽 셀 로 나 쁜 표 시 를 교체 하여 이웃 처럼 보이 게 합 니 다.아래 에 표 시 된 그림 을 고려 하 십시오.
라 이브 러 리 함수
dst = cv2.inpaint(src,mask, inpaintRadius,flags)
매개 변 수 는:이 를 위해 몇 가지 알고리즘 을 설 계 했 고 OpenCV 는 두 가지 알고리즘 을 제공 했다.둘 다 같은 함수 로 접근 할 수 있 습 니 다.cv2.inpaint().
첫 번 째 알고리즘 은 Alexandru Telea 가 2004 년 에 발표 한'빠 른 진행 방법 을 바탕 으로 하 는 이미지 복원 기술'을 바탕 으로 한다.그것 은 빠 른 행진 방법 에 기초 하고 있다.그림 에서 복구 할 영역 을 고려 합 니 다.알고리즘 은 이 지역 의 경계 에서 시작 하여 지역 에 들 어가 경계 에 있 는 모든 내용 을 점차적으로 채 웁 니 다.그것 은 인근 픽 셀 주위 의 작은 이웃 지역 에서 복원 해 야 한다.이 픽 셀 은 이웃 에서 알 고 있 는 모든 픽 셀 의 정규 화 가중 권 과 대 체 됩 니 다.선택의 중요성 은 중요 한 문제 다.이 점 에 가 까 운 픽 셀,경계 에 가 까 운 법 선과 경계 윤곽 에 있 는 픽 셀 에 대해 더 많은 가중치 를 줍 니 다.픽 셀 이 복구 되면 다음 가장 가 까 운 픽 셀 로 빠르게 이동 합 니 다.FMM 은 이미 알 고 있 는 픽 셀 근처 의 픽 셀 을 먼저 복원 하여 수 동 시작 식 작업 처럼 작 동 하도록 확보 합 니 다.로고 cv2.INPAINT 사용 하기TELEA 에서 이 알고리즘 을 사용 합 니 다.
두 번 째 알고리즘 은 Bertalmio,Marcelo,Andrea L.Bertozzi 와 Guillermo Sapiro 가 2001 년 에 작성 한'Navier-Tokes,유체 동력학 과 이미지 와 영상 보수'라 는 글 을 바탕 으로 한다.이 알고리즘 은 유체 동력학 을 바탕 으로 편 미분 방정식 을 이용한다.기본 원칙 은 heurisitic 입 니 다.그것 은 먼저 알 고 있 는 지역 의 가장 자 리 를 따라 알 수 없 는 지역 으로 간다.사진 을 계속 기다 리 고 있 습 니 다.이 를 위해 유체 동력학 에서 온 방법 을 사용한다.색상 을 얻 은 후 색상 을 채 워 서 이 지역 의 최소 차 이 를 줄 입 니 다.로고 cv2.INPAINT 사용 하기NS 에서 이 알고리즘 을 사용 합 니 다.
코드
입력 한 그림 크기 와 같은 마스크 를 만들어 야 합 니 다.복구 할 영역 에 0 픽 셀 이 아 닙 니 다.다른 건 다 간단 해.내 그림 은 검은색 필획 으로 강등 되 었 다.나 는 Paint 도구 로 해당 하 는 터치 와 마스크 를 만 들 었 다.
import numpy as np
from matplotlib import pyplot as plt
import cv2
img = cv2.imread('OpenCV_Logo_B.png') # input
mask = cv2.imread('OpenCV_Logo_C.png',0) # mask
dst_TELEA = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
dst_NS = cv2.inpaint(img,mask,3,cv2.INPAINT_NS)
plt.subplot(221), plt.imshow(img)
plt.title('degraded image')
plt.subplot(222), plt.imshow(mask, 'gray')
plt.title('mask image')
plt.subplot(223), plt.imshow(dst_TELEA)
plt.title('TELEA')
plt.subplot(224), plt.imshow(dst_NS)
plt.title('NS')
plt.tight_layout()
plt.show()
이것 은 원본 파일 과 마스크 파일 입 니 다Pictures출력:
출력 입 니 다.첫 번 째 는 강 등 된 OpenCV 로고 이 고,두 번 째 그림 은 FMM 을 실행 하 는 데 필요 한 마스크 다.마지막 두 장의 사진 은 수리 한 결과 이다.확실 하지 않 지만,나 는 두 가지 수리 방법 사이 에는 아무런 차이 가 없다 고 생각한다.적어도 현재 입력 에 있어 서 는.
참조 링크:
1.OpenCV Image Inpainting 공식 문서https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_photo/py_inpainting/py_inpainting.html
2、 https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_reconstruction_Inpainting_Interpolation.php
Python-OpenCV 의 cv2.inpaint()함수 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 OpenCV cv2.inpaint()함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.