Xử Lý Ảnh Trích Xuất Thông Tin Từ Chứng Minh Thư.pdf

19 1 0
Tài liệu đã được kiểm tra trùng lặp
Xử Lý Ảnh Trích Xuất Thông Tin Từ Chứng Minh Thư.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

TRƯỜNGĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠ KHÍ

BỘ MÔN CƠ ĐIỆN TỬ -* -

Giáo viên hướng dẫn: TS Mạc Thị Thoa

TS Phạm Đức An

Sinh viên thực hiện : Đặng Hoàng Long (20184513) Vũ Đức Tuyên (20141804)

Trang 2

BẢN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Giáo viên hướng dẫn:

Sinh viên thực hiện :

Lớp :

1 Nội dung ………

Trang 3

LỜI NÓI ĐẦU

“Xử lý ảnh” là môn học quan trọng đối với sinh viên ngành Cơ Điện Tử Đây là môn học khó đối với hầu hết nhiều sinh viên do yêu cầu kiến thức về toán và xác suất Với mục tiêu có thêm kiến thức cơ bản trong lĩnh vực về xử lý ảnh,nhóm em chọn đề tài “Trích xuất thông tin từ chứng minh thư ”.

Nghiên cứu một số thuật toán tiền xử lý ảnh: giới thiệu một số

thuật toán tiền xử lý ảnh thường được áp dụng trong hệ thống phân tích và nhận dạng ảnh tài liệu như nhị phân ảnh, căn chỉnh độ nghiêng, các toán tử hình thái Nghiên cứu phương pháp phân tích giấy chứng minh nhân dân: giới thiệu bài toán và các vấn đề cần giải quyết, từ đó áp dụng các kỹ thuật xử lý ảnh và phân tích tài liệu để phân tích ảnh chứng minh nhân dân Tiến hành cài đặt thử nghiệm để đánh giá hiệu quả của giải pháp đưa ra trên tập ảnh chứng minh nhân dân.

Qua bài tập lớn, em đã có thêm được cái nhìn chung về hệ thống nhận dạng ký tự Đồng thời em được củng cố thêm về tiền xử lý ảnh, có được hiểu biết tốt hơn về ứng dụng của kiến thức cơ bản trong các bài toán thực tế Dù rất cố gắng trong việctìm hiểu tài liệu, nhưng do thiếu sót về kiến thức cơ bản, hạn chế tầm hiểu biết mà bài báo cáo còn rất nhiều thiếu khuyết Kính mong nhận được những ý kiến góp ý để em hoàn thiện hơn.

Nhân dịp này, em xin gửi lời cảm ơn chân thành tới TS Mạc Thị Thoa và TS Phạm Đức An đã giảng dạy vànhiệt tình hướng dẫn góp ý giúp em hoàn thành báo cáo môn học này Em xin chân thành cảm ơn

Trang 4

I.Đặt vấn đề

- Bên cạnh các giấy tờ lưu hành văn bản điện tử được vào sử dụng trong tương lai thì hiện nay các giấy tờ, các loại thẻ,… lưu trữ thông tin dưới dạng văn bản hoặc chữ viết vẫn đang được sử dụng rất phổ biến Tuy nhiên, việc lưu trữ các thông tin bằng giấy tờ thông dụng thường không có độ tin cậy (bảo quản, độ bền ) và rất khó để kiểm soát (tra cứu, sao chép…) so với lưu trữ bằng phần mềm dưới dạng văn bản điện tử Chính vì vậy nhóm em quan tâm đến việc chuyển văn bản viết tay thành văn bản điện tử một cách thuận tiện và nhanh chóng hơn thay vì đánh máy, soạn thảo thông thường hiện nay.

- Chứng minh nhân dân cũng là một trong các thẻ lưu hành phổ biến có chứa các thông tin dưới dạng văn bản Để đọc được số lượng lớn thẻ chứng mình nhân dân với tốc độ và độ chính xác cao không thể bằng mắt thường mà phải dùng các thiết bị chuyên dụng (camera, hệ thống chiều sáng…) kết hợp với xử lý ảnh bằng phần mềm (thuật toán, lưu trữ ảnh…)

-Nếu như trước đây, khách hàng muốn mở tài khoản ngân hàng, mở thẻ ATM sẽ phải đến trực tiếp quầy giao dịch để thực hiện các thủ tục đăng kí, xác minh thông tin, thì giờ đây các thao tác này đều có thể thực hiện qua chiếc điện thoại

nhờ giải pháp định danh khách hàng điện tử (eKYC) Và bài toán Trích xuất

thông tin từ chứng minh thư chính là bài toán nhỏ trong ứng dụng định danh

điện từ này

- Mục tiêu của nhóm là nhận dạng các ký tự quang học (chuyển hình ảnh có chữviết tay hoặc kí tự đánh máy thành tài liệu văn bản, viết tắt là OCR [1]) thông qua trình soạn thảo mã Visual Studio, thư viện mã nguồn mở OpenCV, thư viện Tesseract Công việc là dựa vào các kiến thức nền tảng về xử lý ảnh đã được học để vận dụng các thuật toán ứng dụng vào việc nhận diện thẻ chứng minh nhân dân.

Trang 5

II.Tổng quan đề tài

Hiện nay, máy tính đang phát triển mạnh mẽ, tốc độ xử lý khôngngừng được nâng lên Cùng với nó là sự ra đời của các phần mềm thôngmỉnh đã làm cho máy tính ngày một gần gũi với con người hơn Một trongnhững ứng dụng thành công của lĩnh vực nhận dạng mẫu là nhận dạng chữin (nhận dạng ký tự quang học OCR -Optical Character Recognition) Nhậndạng chữ là quá trình chuyển đổi từ dạng hình ảnh của một hay nhiều trangảnh chứa các thông tin văn bản thành tệp văn bản thực sự có thể soạn thảođược trên máy tính.OCR có rất nhiều ứng dụng hữu ích trong cuộc sốngnhư sắp xếp thư tín dựa vào việc nhận dạng mã bưu chính (Zipcode) hayđịa chỉ gửi tới, tự động thu thập dữ liệu từ các mẫu đơn/báo biểu hay từ cáchồ sơ lao động, tự động kiểm tra, xác nhận chữ ký trong ngân hàng, tựđộng xử lý các hóa đơn hay các yêu cầu thanh toán, nhập liệu tự động,kiểm tra thông tin trên passport

Hình 1.1 Thu nhận ảnh tài liệu

Trang 6

Trang ảnh tài liệu được đề cập ở đây là các file ảnh số hoá thu được bằngcách quét các trang tài liệu dùng máy scanner, máy ảnh số, hay nhận từ mộtmáy fax, file ảnh này được lưu trữ trong máy tính (Hình 1 1) Ảnh tài liệu cónhiều loại: ảnh đen trắng, ảnh màu, ảnh đa cấp xám với các phần mở rộng nhưTIF, BMP, PCX và ảnh tài liệu được đưa ra trong luận văn này là ảnh đacấp xám.

Quy trình chung của một hệ thống nhận dạng văn bản được thể hiện cụthể trên Hình 1 2 Ảnh tài liệu cần nhận dạng trước tiên sẽ được tiền xử lýnhằm tăng cường chất lượng, căn chỉnh độ nghiêng, nắnchỉnh hình ảnh Sauđó sẽ tiến hành phân tích nhằm xác định cấu trúc trang tài liệu đồng thời xácđịnh được các vùng thông tin cần nhận dạng trên ảnh đầu vào Bước tiếp theosẽ tiến hành nhận dạng các vùng thông tin văn bản đã được xác định Bướchậu xử lý cuối cùng sẽ thực hiện các thao tác kiểm lỗi chính tả và định dạng lại

cấu trúc trang văn bản

Hình 1.2 Quy trình chung của 1 hệ thống OCR

1.Bài toán nhận diện chứng minh thư

Đây là một bài toán không mới và cũng được coi đây như một dự án để thực hành kĩ năng xử lý với các mô hình Deep Learning Từ bài toán sẽ giúp chúng ta có điều kiện làm quen với nhiều loại mô hình khác nhau trong Deep Learning như Object Detection, Instance

Trang 7

Segmentation, Optical Character Recognition Các bước cơ bản của bài toán có thể giải quyết như sau đây:

Hình 1.3 Sơ đồ hệ thống phân tích bố cục và cấu trúc tài liệu

Tiền xử lý ảnh nhận đầu vào từ ảnh raw data Crop vùng chứachứng minh thư trong ảnh và xóa đi những vùng thông tin nhiễu

Detector được sử dụng để detect các thành phần trong ảnh như họ tên, ngày tháng năm sinh

Reader là một module OCR để đọc nội dung chữ viết từ các thành phần đã được crop.

Cuối cùng tổng hợp và sắp xếp lại ta được một bài toán nhận diện chứng minh thư hoàn chỉnh.

2.Một số thuật toán tiền xử lý ảnh

2.1Nhị phân ảnh

Nhị phân ảnh (hay còn gọi là phân ngưỡng) là thao tác chuyển từ ảnh mầu, ảnh đa cấp xám về ảnh nhị phân bằng cách tìm một ngưỡng: tổng quát hoặc cục bộ.

Các bước nhị phân hóa ảnh

1 Biến đổi ảnh màu (color) sang ảnh xám (grayscale) hoặc đọc ảnh lên bằng cờ ảnh xám.

2 Thiết lập ngưỡng (threshold) để nhị phân hóa ảnh.

3 Áp dụng ngưỡng vào ảnh xám để tạo ảnh nhị phân hoặc áp dụng giải thuật nhị phân hóa ảnh Các pixel có giá trị lớn hơn ngưỡng ta thiết lập bằng 255 (hoặc 1), nhỏ hơn ngưỡng ta thiết lập bằng 0.

Trang 8

2.2 Crop vùng chứa CMND

Theo tìm hiểu nhóm có 2 cách để Crop vùng chứa chứng minh thư trong ảnh là sử dụng thuật toán HouglinesP và FindContours-FindContours

Contour là gì

Có thể hiểu contour là “tập các điểm-liên-tục tạo thành một đường cong (curve) (boundary), và không có khoảng hở trong đường cong đó, đặc điểm chung trong một contour là các các điểm có cùng /gần xấu xỉ một giá trị màu, hoặc cùng mật độ Contour là một công cụ hữu ích được dùng để phân tích hình dạng đối tượng, phát hiện đối tượng và nhận dạng đối tượng”.

Để tìm contour chính xác, chúng ta cần phải nhị phân hóa bức ảnh Các kỹ thuật nhị phân hóa ảnh ở xử lý ảnh cơ bản có thể liệt kê đến là đặt ngưỡng, hoặc candy edge detection

Trong opencv, việc tìm một contour là việc tìm một đối tượng có màu trắng trên nền đen

Sử dụng contour trong opencv

Opencv hỗ trợ cho chúng ta hàm để tìm contour của một bức ảnhmodifiedImage, contours, hierarchy = cv2.findContours(binaryImage, typeofContour, methodofContour)

binaryImage: Ảnh nhị phân gốc Một chú ý quan trọng ở đây là sau khi sử dụng hàm findContours thì giá trị của binaryImage cũng thay đổi theo, nên khi sử dụng bạn có thể áp dụng binaryImage.copy() để không làm thay đổi giá trị của binaryImage

typeofContour: có các dạng sau: RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE, RETR_FLOODFILL.

methodofContour: Có các phương thức sau: CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE, CHAIN_APPROX_TC89_L1,

Opencv hỗ trợ chúng ta hàm để vẽ contour lên bức ảnh, giúp chúng ta nhìn rõ ràng hơn

Trang 9

cv2.drawContours(image, contours, contourIndex, colorCode, thickness)Với:

imgage: ảnh, có thể là ảnh grayscale hoặc ảnh màu.

contours: danh sách các contour, là vector, nếu bạn muốn vẽ một contour, thìbạn phải cho nó vào trong một list.

contourIndex Vị trí của contor, thông thường chúng ta để -1

colorCode: Giá trị màu của contour chúng ta muốn vẽ, ở dạng BGR, nếu bạn muốn vẽ contour màu xanh lá cây thì set là (0,255,0).

thickness : độ dày của đường contour cần vẽ, giá trị thickness càng lớn thì đường contor vẽ càng bự

Sau đó lấy ra 4 góc của ảnh thông qua thuật toán tìm diện tích lớn nhất trong ảnh.

Hình 1.3

Phương pháp này có ưu điểm là đơn giản, ít xảy ra lỗi, tốc độ xử lý nhanh, tuy nhiên với đa số các loại giấy tờ như CMND, BLX, thẻ HSSV,… thì đều có các góc

Trang 10

bo tròn nên việc lấy 4 góc của ảnh sẽ lệch đi 1 chút làm cho bước trải ảnh, ảnh sẽ bị cắt lẹm vào thẻ như trên hình 1.3 trên.

Trang 11

ρ = x.cosθ + y.sinθ (ρ đ c là ro, còn đ c θ là theta nhé)ọọ

Với ρ là khoảng cách từ đường thẳng tới gốc tọa độ, còn θ là góc giữa trục hoànhvà đoạn thẳng ngắn nhất nối tới gốc tọa độ (đơn vị là radian).

Hình minh họa trong hệ tọa độ Đề Cát

Hình minh họa sử dụng trong OpenCV

Lưu ý: Hệ tọa độ trên máy tính có gốc tọa độ ở góc trên bên trái

Có 2 cách để xác định 1 đường thẳng, người ta chọn cách thứ 2 vì chỉ cần 2 tham số (ρ, θ) tiện cho tính toán hơn Vì θ được tính bằng radian nên có giá trị trong khoảng [0;π] (hay là [0;3.14]) Khi θ bằng 0 hoặc bằng 3.14 thì đường thẳng dựng đứng, còn θ bằng 1.57 (π/2) là nằm ngang.

MÔ TẢ CÁCH HOẠT ĐỘNG CỦA THUẬT TOÁN

Vì mỗi đường thẳng được xác dịnh bởi 2 giá trị (ρ, θ) nên thuật toán tạo 1 mảng 2 chiều Dòng ứng với ρ và cột ứng với θ, kích thước của mảng phụ thuộc vào bạn chọn, và tất nhiên là mảng càng lớn thì càng chính xác và tính toán càng lâu, còn mảng nhỏ thì nhanh hơn nhưng không chính xác bằng.

Khi sử dụng người dùng sẽ truyền giá trị ρ và θ họ mong muốn Thuật toán sẽ vẽρ x θ đường thẳng trên ảnh, với mỗi đường thẳng thuật toán đếm số pixel nằm

Trang 12

trên đường thẳng đó, cứ mỗi pixel tìm thấy thì cộng thêm giá trị vào ô ứng với (ρ, θ).

Trong ảnh trên: bên trái là các điểm trong ảnh, bên phải là mảng 2 chiều

Sau quá trình tính toán thì mỗi ô sẽ có giá trị là số pixel nằm trên đường thẳng đó.

SỬ DỤNG HÀM HOUGHLINES TRONG OPENCV

Hàm houghlines() sử dụng ảnh nhị phân để xử lý, bạn cần phân ngưỡng trước khi gọi hàm.

voidHoughLines(InputArray image,OutputArray lines,doublerho,

image – ảnh input nhị phân (ảnh có thể bị thay đổi khi tính toán)lines – Output là vector chứa các đường thẳng Mỗi đường thẳng chứa 2 giá trị (ρ, θ)

rho – Khoảng cách của các đường thẳng tính bằng pixelstheta – Khoảng cách góc của các đường thẳng tính bằng radiansthreshold – Số lần được tìm thấy phải vượt qua ngưỡng mới lấysrn – Dùng cho multi-scale

stn – Cũng dùng cho multi-scale

Hàm PROBABILISTIC HOUGH

Hàm HoughLines() phải tính toán quá nhiều để tìm đường thẳng, còn Probabilistic Hough ít tính toán hơn Nó không kiểm tra tất cả các pixel mà chỉ lấy 1 số cụm pixel vừa đủ để tìm ra đường thẳng.

Nhược điểm thứ 2 là HoughLines() không xác định được điểm đầu và điểm cuối của đoạn thẳng Do đó chúng ta dùng HoughLinesP() để khắc phục nhược điểmThuật toán này có thêm 2 tham số nữa:

minLineLength – Độ dài tối thiểu của đường thẳng

maxLineGap – Nếu 2 đường thẳng có khoảng đứt gãy ở giữa ngắn hơn maxLineGap thì được xem là 1 đường thẳng

Phương pháp này có ưu điểm là khắc phục được nhược điểm của

Findcontours, khi t có thể lấy được 4 góc của ảnh và trải ra mà không bị lẹm vào ảnh.

Trang 13

Ảnh gốc

Biến đổi ảnh bằng hàm Canny

Sau đó tìm đường thẳng và vẽ

Trang 14

III.Thuật toán phân tích ảnh chứng minh nhân dân

Giấy chứng minh nhân dân hay chứng minh thư (CMT) là một loại giấy tờ tùy thân của công dân Việt Nam, đ ợc xác nhận bởi cơ quan nhà n ớc có thẩmƣ ƣquyền về lý lịch của ng ời được cấp.ƣ CMT là yêu cầu bắt buộc trong rất nhiều các giao dịch cũng nh các thủ tục hành chính,… Ví dụ, khiƣ chúng ta muốn mởmột tài khoản ở ngân hàng hay đăng ký một thuê bao điện thoại, chúng ta cần photo CMT, đến các địa điểm giao dịch và điền thông tin cá nhân của mình vào các biểu mẫu có sẵn Việc này mất rất nhiều thời gian và phiền phức cho những ng ời đi làm thủ tục đó Cùng với quá trình tin họcƣ hoá, đơn giản các thủ tục hành chính, một yêu cầu đặt ra là: cần có một hệ thống tự động tách và nhậndạng các tr ờng thông tin trên CMT để điền vào các biểu mẫu có sẵn Nh ƣ ƣvậy cần tách chính xác các tr ờng thông tin yêu cầu tr ớc khi chuyển cho ƣ ƣphần nhận dạng, tuy nhiện việc này gặp một số vấn đề

Trong quá trình sửa dụng, CMT có thể bị ố, mốc, nhàu, nát,… nét chữ bị mờ, nhoè,…

Ở mặt tr ớc, trong một số tr ờng hợp hoa văn nền khá rõ nét trong khi nét ƣ ƣchữ lại quá mờ, khó có

thể phân biệt đâu là nét chữ đâu là hoa văn nền.

Ở mặt sau, trong khá nhiều tr ờng hợp dấu mầu đỏ đè cả lên phần Ngày cấp ƣvà Nơi cấp, làm mờ đi một phần thông tin trên hai tr ờng này.ƣ

Yêu cầu của bài toán: Từ ảnh CMT mầu đ ợc quét bằng máy quét với độ ƣphân giải 300 dpi, tách lấy các tr ờng thông tin: ƣ Số CMT, Họ tên, Ngày sinh, Nguyên quán, Nơi thường trú, Dân tộc, Ngày cấp và

Nơi cấp

III.1Tiền xử lý ảnh

Hinh 3 1 Tiền xử lý ảnh mặt trước CMTCrop vùng chứa ảnh CMND

Trang 15

Sử dụng phương pháp HouglinesP Và WrapImage đề trải đều ảnh CMNDTrước khi trải ảnh ta cần xắp xếp 4 góc ảnh lại theo đúng thứ tự để ảnh đầu ra không bị biến dạng bằng cách so sánh tổng giá trị tọa độ các điểm với nhau

Trang 17

Phân vùng thông tin

Tìm contours của chữ và sử dụng retangle để lấy đường bao vùng thông tin

Trang 18

Cuối cùng đưa các ảnh thông tin cắt được qua OCR để thu được thông tin và lưu trữ dưới dạng file TXT

IV.Thử nghiệm và đánh giá

Trong chương này sẽ mô tả một cách chi tiết quá trình cài đặt thử nghiệmthuật toán, cũng như đánh giá các kết quả đạt được trên các bộ dữ liệu khác nhau.

Thuật toán thử nghiệm được cài đặt bằng ngôn ngữ lập trình C/C++ (Microsoft Visual Studio 2019), sử dụng thư viện xử lý ảnh Leptonica cho việc đọc/ghi ảnh và các thao tác xử lý ảnh cơ bản.

Thuật toán đưa ra tách được gần như 100% các trường thông tin yêu cầu Một số trường hợp các có thể bị mất một phần thông tin hoặc coi nhiễu như một phần thông tin của trường Thuật toán chỉ thất bại trong trường hợp các trường thông tin bị mờ do thời gian, nhận diện thông tin chính xác 90%

Trang 19

Tìm hiểu được một số thuật toán xử lý ảnh hay được dùng trong bước tiền xử lý của một hệ thống nhận dạng hoàn chỉnh Đó là các phương pháp nhị phân ảnh, căn chỉnh độ nghiêng của trang văn bản, các toán tử hình thái Trên cở sở hiểu biết đó có thể vận dụng được vào các bài toán khác.

Tìm hiểu và tổng quát hoá các ph ơng pháp phân tích ảnh tài liệu, ƣcũng nh nắm được các ưuƣ nhược điểm của từng phương pháp Từ đó đưa ra được các giải pháp cho bài toán đặt ra

Đã áp dụng thành công các kiến thức tìm hiểu được vào cài đặt thử nghiệm chương trình phân tích ảnh CMT Kết quả của ch ơng trình đạt ƣđ ợc là tốt và có thể áp dụng vào thực tế ƣ

Tuy nhiên, do thời gian làm bài tập lớn hạn chế, trong khi khối lượng công việc lớn nên còn nhiều vấn đề tồn tại chưa được giải quyết:

Chương trình mới dừng lại ở bước thử nghiệm, chưa phải là một chương trình hoàn chỉnh, đầy đủ các tính năng

Thuật toán mới chỉ dừng lại ở việc phân tích ảnh CMT, chưa khái quá hoá cho các ảnh thẻ bất kỳ.

Hướng phát triển tiếp theo là, tiếp tục nghiên cứu hoàn thiện chương trìnhđể có thể áp dụng vào thực tế.

Mở rộng các tính năng của chương trình (như thêm phần nhận dạng, kiểm lỗi chính tả) để thành một chương trình hoàn chỉnh Khái quát hoá thuật toán để có thể xử lý được ảnh thẻ bất kỳ

Ngày đăng: 29/05/2024, 18:31