영상처리_자동차 번호판 인식-준비단계

메카 2017-04-06 (목) 22:47 2년전 6902  

6장 자동차 번호판 인식

 

  지금까지 영상처리의 기초에 대해서 기술하였다. 이번 장에서는 고급 단계에 해당하는 실제적인 영상처리가 이용되는 자동차 번호판 인식을 통하여 좀 더 깊이 있게 알아보자. 번호판 판별 과정은 다음과 같다.

 

1) 전처리 과정 - 칼라영상을 그레이 영상으로, canny() 에지 이용, 이진화 처리

2) 윤곽선 검출

2) 라벨링을 수행

3) 라벨링된 영역 검증

    i) 원본 이미지를 통해 테두리는 휜색, 내부는 녹색 같은 형태로 검증.

    ii) 검증 과정을 거쳐서 잡영 제거

4) 번호판의 꼭지점 추출

5) 번호판 추출 후 글자를 정렬한다.

6) 글자를 맵핑하여 우선순위가 높은 글자 아스키 코드로 정의 내린다.

 

6.1 파이썬 설치 및 테스트

  본 강좌에서 사용하는 프로그램은 파이썬 2.7이며, 아래의 순서에 의해 필요 프로그램을 설치한다.

1) 이미 인스톨 되어진 3.x 혹은 2.x 버전은 uninstall한다. "고급시스템 및 설정" 에서 PATH에 작성된 3.x 혹은 2.x도 제거한다. 재부팅을 한다.

 

2) 다운로드 OpenCV 3.0.0

 

3) "C:\OpenCV-3.0.0"폴더를 만든다. 그리고 다운로드 받은 OpenCV 압축 파일을 여기에 푼다.

 

4) Python 2,7.10 다운로드 및 Install한다.

 

5) "고급시스템 및 설정" 에서 PATH"C:\Python27\"를 추가한다.

 

6) 재부팅

 

7) Python 2.x와 매칭되는 NumPy를 다운로드 받아 설치한다.

 

8) 재부팅

 

9) IDLE 다운로드 그리고 설치. 여기서는 PyCharm Community Edition을 사용하였음.

 

10) "C:\OpenCV-X.X.X\opencv\build\python\2.7\x86" 폴더의 "v2.pyd""C:\Python27\Lib\site-packages" 에 복사한다.

 

11) 재부팅

 

12. 파이썬 에디터 Pycharm을 열고 아래 소스코드를 cannyStill.py로 저장한다.

 

 # CannyStill.py

##################################################################

import cv2

import numpy as np

import os

 

def main():

imgOriginal = cv2.imread("image.jpg") # open image

 

if imgOriginal is None: # if image was not read successfully

print "error: image not read from file \n\n"

# print error message to std out

os.system("pause") # pause so user can see error message

return # and exit function (which exits program)

 

# convert to grayscale

imgGrayscale = cv2.cvtColor(imgOriginal, cv2.COLOR_BGR2GRAY)

imgBlurred = cv2.GaussianBlur(imgGrayscale, (5, 5), 0) # blur

imgCanny = cv2.Canny(imgBlurred, 100, 200) # get Canny edges

 

# create windows, use WINDOW_AUTOSIZE for a fixed window size

cv2.namedWindow("imgOriginal", cv2.WINDOW_AUTOSIZE)

 

# or use WINDOW_NORMAL to allow window resizing

cv2.namedWindow("imgCanny", cv2.WINDOW_AUTOSIZE)

 

cv2.imshow("imgOriginal", imgOriginal) # show windows

cv2.imshow("imgCanny", imgCanny)

 

cv2.waitKey() # hold windows open until user presses a key

 

cv2.destroyAllWindows() # remove windows from memory

 

return

##################################################################

if __name__ == "__main__":

main()

 

13. 15번 결과 보기에서 원 영상 자동차 번호판 영상 “image.jpg"를 다우로드해서 소스프로그램과 같은 폴더에 둔다.

 

14. Pycharm 프로그램에서 Run(shift+F10)를 클릭한다.

 

15. 결과 보기

 

576ec4c57aeccb922e1e2767aa87562d_1491486

                     (a) 원영상

576ec4c57aeccb922e1e2767aa87562d_1491486

                    (b) 결과 영상

 

16 코드 설명

     입력 영상을 불러온 후, 컬러 영상을 그레이영상으로 변환한다. 그리고 5x5 가우시안 블러를 실행하며, 블러 영상을 Canny() 함수에 넣어서 최종 canny edge영상을 얻는다



 




 

메이크쉐어 PC버전 로그인
로그인 해주세요.

회원가입

쪽지

포인트

스크랩
기초강좌(배우고)
부품사용법(익히고)
게시판
사고팔고
메이크쉐어 PC버전 로그인