나는 입력 이미지 품질을 최적화하려고해야한다는 견해에 동의한다.
번호판 흐림은 모션 블러의 일반적인 예입니다. 흐리게 처리 할 수있는 정도는 흐림 반경의 크기에 따라 다릅니다. 일반적으로 차량 속도가 빠르면 흐림 반경이 더 커지므로 복원하기가 더 어렵습니다.
다소 효과가있는 간단한 솔루션은 이미지의 디인터레이싱입니다. 그것은 단지 약간 더 읽을하여 입력 이미지보다 것을
참고. 여기에 나는 모든 다른 라인을 떨어 PIL/베개를 사용하여 절반 크기로 이미지 크기를 조정할 이것은 내가 무엇을 얻을 있습니다 :
from PIL import Image
img=Image.open("license.jpeg")
size=list(img.size)
size[0] /= 2
size[1] /= 2
smaller_image=img.resize(size, Image.NEAREST)
smaller_image.save("smaller_image.png")
다음과 형식적인 접근 방식은 디컨 볼 루션입니다.
이미지의 컨볼 루션 (convolution)을 사용하여 흐림 효과를 얻으므로 흐림 제거는 이미지의 컨벌루션 또는 디콘 볼 루션의 역함을 수행해야합니다. 위너 디콘 볼 루션 (deconvolution), 리차드슨 루시 (Richardson-Lucy) 방법, 라돈 변환 및 몇 가지 유형의 베이지안 필터링과 같은 다양한 종류의 디컨 볼 루션 알고리즘이 있습니다.
이 code을 사용하여 위너 디콘 볼 루션 알고리즘을 적용 할 수 있습니다. 각도, 직경 및 신호 대 잡음비로 연주하고 개선점이 있는지 확인하십시오.
skimage.restoration
모듈은 또한 unsupervised_wiener
및 richardson_lucy
deconvolution의 구현을 제공합니다.
아래 코드에서 두 구현을 모두 보여 주었지만 어느 것이 더 적합한 지 psf를 수정해야합니다.
import numpy as np
import matplotlib.pyplot as plt
import cv2
from skimage import color, data, restoration
from scipy.signal import convolve2d as conv2
img = cv2.imread('license.jpg')
licence_grey_scale = color.rgb2gray(img)
psf = np.ones((5, 5))/25
# comment/uncomment next two lines one by one to see unsupervised_wiener and richardson_lucy deconvolution
deconvolved, _ = restoration.unsupervised_wiener(licence_grey_scale, psf)
deconvolved = restoration.richardson_lucy(licence_grey_scale, psf)
fig, ax = plt.subplots()
plt.gray()
ax.imshow(deconvolved)
ax.axis('off')
plt.show()
은 불행하게도 이러한 디컨 볼 루션 alogirthms의 대부분은 사전에 (포인트 확산 기능 일명 PSF 일명)을 블러 커널을 알고 있어야합니다.
여기서는 PSF를 모르기 때문에 맹목적인 디콘 볼 루션을 사용해야합니다. 블라인드 디콘 볼 루션은 블러 커널에 대한 지식없이 원본 이미지를 추정하려고 시도합니다.
내가 여기 당신의 이미지와 함께이 시도하지만하지 않은 블라인드 디컨 볼 루션 알고리즘의 파이썬 구현 : 효과적인 범용 블라인드 디컨 볼 루션 알고리즘이 아직 발견되지 않았 음을 https://github.com/alexis-mignon/pydeconv
주 및 연구의 활동 분야이다 . 이진화 된 커널 강화 된 이미지와
큰 덩어리의 블러를 이용하여 커다란 커널로'오픈 '을 시도 할 수 있습니다. 당신이 얻은 결과를 알려주세요 .. –
"큰 커널에서 열어보기"라는 뜻은 – VICTOR
입니다. 형태학적인 작동 즉, '침식'과 '확장'을 의미합니다. 대형 커널로 시도하고 다른 크기로 실험 해보십시오. –