programing

이미지에서 차량 번호판 (ANPR)을 인식하는 방법은 무엇입니까?

nasanasas 2020. 11. 15. 11:23
반응형

이미지에서 차량 번호판 (ANPR)을 인식하는 방법은 무엇입니까?


사용자가 자동차 이미지를 업로드 할 수있는 웹 사이트가 있는데, 차량의 등록 번호판을 감지하고 흐리게 처리 할 수있는 프라이버시 필터를 설치하고 싶습니다.

블러 링은 문제가되지 않지만 사진 내에서 라이선스를 찾는 데 도움이되는 라이브러리 또는 구성 요소 (오픈 소스 선호)가 있습니까?

주의 사항

  1. 완벽한 것은 없으며 이러한 유형의 이미지 인식은 오 탐지 및 부정적 결과를 제공합니다.
  2. 사용자에게 흐리게 처리 할 영역을 선택하도록 요청할 수 있다는 점에 감사 드리며이 작업도 수행 할 것입니다.하지만 질문은 특히 해당 데이터를 프로그래밍 방식으로 찾는 것입니다. 그래서 '사람이 모든 이미지를 확인하도록하세요'와 같은 답변은 도움이되지 않습니다.
  3. 이 소프트웨어 방법은 영국에서 '자동 번호판 인식'이라고 불리지 만 라이브러리로 구현 된 것을 볼 수 없습니다.
  4. .Net이 선호되지만 모든 언어가 좋습니다.

JAVA ANPR을 기반으로 C # 버전을 코딩했지만 OpenCV로 awt 라이브러리 기능을 변경했습니다. http://anprmx.codeplex.com 에서 확인할 수 있습니다.


편집 : 나는 이것을 위해 Python 스크립트 를 작성했습니다.

목표가 흐릿 해짐 (개인 정보 보호를 위해), 기본적으로 첫 번째 단계로 높은 재현율 감지기 가 필요합니다 . 이를 수행하는 방법은 다음과 같습니다. 포함 된 코드 힌트는 Python과 함께 OpenCV를 사용합니다.

  1. 그레이 스케일로 변환합니다.
  2. 가우시안 블러를 적용합니다.

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

입력 이미지는 다음과 같습니다.

여기에 이미지 설명 입력

  1. 수직 가장자리를 감지하려면 Sobel 필터를 적용합니다.
  2. 엄격한 임계 값 또는 OTSU의 이진화를 사용하여 결과 이미지를 임계 값으로 설정합니다.

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. 적절한 구조 요소를 사용하여 형태 학적 폐쇄 작업을 적용합니다. (구조 요소로 16x4를 사용했습니다)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

5 단계 이후의 결과 이미지.

여기에 이미지 설명 입력

  1. 이 이미지의 외부 윤곽을 찾으십시오.

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. 각 윤곽선에 대해 minAreaRect()경계를 찾으 십시오.

  3. 가로 세로 비율, 최소 및 최대 영역, 수평 각도를 기준으로 직사각형을 선택합니다. (저는 2.2 <= 종횡비 <= 8, 500 <= 면적 <= 15000, 각도 <= 45도를 사용했습니다)

모든는 minAreaRect()주황색으로 표시되고 기준을 충족하는 항목은 녹색으로 표시됩니다.

여기에 이미지 설명 입력

  1. 이 단계 후에 오 탐지가있을 수 있으므로이를 필터링하려면 가장자리 밀도를 사용하십시오. 가장자리 밀도는 직사각형 의 흰색 픽셀 수 / 총 픽셀 수로 정의됩니다 . 가장자리 밀도에 대한 임계 값을 설정합니다. (0.5를 사용했습니다)

여기에 이미지 설명 입력

  1. 감지 된 영역을 흐리게합니다.

여기에 이미지 설명 입력

재현율과 정밀도를 높이는 데 적합하다고 생각되는 다른 필터를 적용 할 수 있습니다. HOG + SVM을 사용하여 탐지를 훈련하여 정밀도를 높일 수도 있습니다.


GitHub에는 미국 및 유럽 플레이트에 대한 ANPR을 수행하는 새로운 오픈 소스 라이브러리가 있습니다. 매우 정확 해 보이며 정확히 필요한 작업을 수행해야합니다 (플레이트 영역 인식). 다음은 GitHub 프로젝트입니다. https://github.com/openalpr/openalpr


나는 자바 javaANPR 로 작성된 이것을 발견했으며 , ac # 라이브러리도 찾고 있습니다.

I would like a system where I can point a video camera at some sailing boats, all of which have large, identifiable numbers on them, and have it identify the boats and send a tweet when they sail past a video camera.


I have done some googling about this a couple of months ago. There are quite a few papers about this topic, but I never found any concrete open-source implementation. There are a lot of commercial implementations though, but none of them with a price quote, so they're probably pretty expensive.


try this Simple Automatic Number Plate Recognition System

http://opos.codeplex.com/

Open source and written with C#


Have a look at Java ANPR. Free license plate recognition...


Yes I use gocr at http://jocr.sourceforge.net/ its a commandline application which you could execute from your application. I use it in a couple of my applications.


High performance ANPR Library - http://www.dtksoft.com/dtkanpr.php. This is commercial, but they provide trial key.


http://licenseplate.sourceforge.net Python (I have not tested it)


It maybe work looking at Character recoqnition software as there are many libraries out there that perform the same thing. I reading an image and storing it. Micrsoft office is able to read tiff files and return alphanumerics


The blurring is not a problem but is there a library or component (open source preferred) that will help with finding a licence within a photo?

정답 : CARMEN FreeFlow ANPR 소프트웨어 엔진 (상용)

참고 URL : https://stackoverflow.com/questions/981378/how-to-recognize-vehicle-license-number-plate-anpr-from-an-image

반응형