Bài luận này tiếp tục nghiên cứu, cải tiến, bổ sung và phát triển thêm chức năng, dựa trên kết quả đã đạt được của những bài luận văn tốt nghiệp trước đó - sử dụng opencv để xử lý ảnh và
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
DANH THIẾP CHO ĐIỆN THOẠI THÔNG MINH
Sinh viên thực hiện : Danh Trân
Mã số : B1400466 Khóa : 40
Cần Thơ, 09/2018
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
DANH THIẾP CHO ĐIỆN THOẠI THÔNG MINH
Giáo viên hướng dẫn: Sinh viên thực hiện: TS.Trần Nguyễn Minh Thư Danh Trân
Mã số: B1400466 Khóa : 40
Cần Thơ, 12/2017
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN
-
Trang 4LỜI CẢM ƠN
Với tình cảm chân thành và lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới:
Tất cả các giảng viên, cán bộ trường đại học Cần Thơ, khoa công nghệ thông tin và truyền thông, đã tận tình giảng dạy, tạo mọi điều kiện thuận lợi và giúp đỡ em trong suốt quá trình học tập
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến cô Trần Nguyễn Minh Thư, người đã tận tình hướng dẫn, giúp đỡ em trong quá trình học tập và hoàn thành luận văn tốt nghiệp này
Đồng thời em xin gửi lời cảm ơn đến gia đình, anh chị, bạn bè đã động viên, khích lệ và giúp đỡ em trong quá trình học tập, rèn luyện tại đại học Cần Thơ
Tuy đã có nhiều cố gắng trong quá trình thực hiện luận văn này, vẫn không thể tránh khỏi những thiếu sót Em rất mong nhận được sự góp ý từ quý Thầy, Cô và tất
cả các Bạn để luận văn hoàn thiện hơn
Em xin chân thành cảm ơn!
Cần Thơ, ngày 01 tháng 12 năm 2018 Người viết
Danh Trân
Trang 5
DANH TRÂN_B1400466 1
MỤC LỤC
PHẦN GIỚI THIỆU 7
1 Đặt vấn đề 7
2 Lịch sử giải quyết vấn đề 7
3 Mục tiêu đề tài 9
4 Đối tượng và phạm vi nghiên cứu 9
5 Phương pháp nghiên cứu 9
6 Kết quả đạt được 9
7 Bố cục luận văn 10
PHẦN NỘI DUNG 11
CHƯƠNG 1: MÔ TẢ BÀI TOÁN 11
1 Mô tả chi tiết 11
2 Vấn đề và giải pháp liên quan đến bài toán 14
2.1 Giải thuật xử lý ảnh liên quan đến bài toán 14
2.1.1 Chuyển ảnh màu sang ảnh xám 14
2.1.2 Chuyển ảnh xám sang ảnh nhị phân 15
2.1.3 Giải thuật phát hiện biên 16
2.1.4 Các Phép biến đổi hình học áp dụng vào bài tóan 17
2.2 Các công nghệ hỗ trợ xây dựng ứng dụng 18
2.2.1 Môi Trường phát triển ứng dụng 18
2.2.2 Thư viện xử lý ảnh 20
2.2.3 Thư viện nhận dạng ký tự quang học 21
CHƯƠNG 2 22
THIẾT KẾ ỨNG DỤNG 22
1 Các chức năng ứng dụng 22
2 Kiến trúc ứng dụng 23
3 Luồng xử lý chính của quá trình nhận dạng danh thiếp 23
4 Thiết Kế Giải Thuật 24
4.1 Giải thuật khoanh vùng danh thiếp 24
4.1.1 Đối với ảnh chụp từ camera 24
4.1.2 Đối với ảnh được chọn từ Gallery 29
4.2 Giải thuật tìm text line 32
4.3 Giải thuật phân loại thông tin 35
Trang 6DANH TRÂN_B1400466 2
4.3.1 Giải thuật tìm tên 37
4.3.2 Giải thuật tìm email 38
4.3.3 Giải thuật tìm số điện thoại 39
4.3.4 Giả thuật tìm địa chỉ 40
4.3.5 Giải thuật tìm Cơ Quan 40
CHƯƠNG 3 41
GIỚI THIỆU DEMO 41
1 Các chức năng của ứng dụng 41
2 chức năng quản lý danh bạ 41
3 chức năng quản lý danh thiếp 42
4 Chức năng nhận dạng danh thiếp được chụp trực tiếp từ camera 43
5 Chức năng nhận dạng danh thiếp từ ảnh trong gallery 43
6 Chức năng cấu hình ứng dụng 44
PHẦN KẾT LUẬN 45
1 Kết quả đạt được 45
2 Hướng phát triển 45
TÀI LIỆU THAM KHẢO 46
Trang 7DANH TRÂN_B1400466 3
DANH MỤC HÌNH
Hình 1 Ảnh chụp màn hình ứng dụng ABBYY Business Card Reader 7
Hình 2 Ứng dụng camcard 8
Hình 3 Các mẫu danh thiếp 11
Hình 4 Ảnh đã được phân vùng 12
Hình 5 Ảnh bị hiệu ứng mắt chim 13
Hình 6 Mất thông tin khi áp dụng phuong pháp Otsu 13
Hình 7 Sai lệch tìm text line 13
Hình 8 Hệ tọa độ cực 17
Hình 9 Biến đổi Homgraphy 18
Hình 10 Minh họa gọi camera bằng intent 19
Hình 11 Các bảng của contacts API 20
Hình 12 Use case các chức năng ứng dụng 22
Hình 13 Các module ứng dụng 23
Hình 14 Luồng xử lý quá trình nhận dạng 24
Hình 15 Minh họa mô hình YUV 25
Hình 16 Tổ chức dữ liệu DataStream 25
Hình 17Vị trí các vùng ảnh 26
Hình 18 Giải thuật phân vùng danh thiếp đối với ảnh chụp từ camera 28
Hình 19 Tương quan dòng chữ và đường thẳng song song 29
Hình 20 Kết quả của từng giai đoạn 29
Hình 21 đoạn thẳng được xem là " nhiễu" 30
Hình 22 Hình chữ nhật bao quanh countour 32
Hình 23 Lưu đồ giải thuật phân loại thông tin 36
Hình 24 Lưu đồ giải thuật tìm tên 37
Hình 25 Lưu đồ giải thuật tìm email 38
Hình 26 Lưu đồ giải huật tìm số điện thoại 39
Hình 27 Lưu đồ giải thuật tìm địa chỉ 40
Hình 28 Lưu đò giải thuật tìm cơ quan 40
Hình 29 Màn hình giao diện chính của ứng dụng 41
Hình 30 Giao diện màn hình danh bạ 42
Hình 31 Giao diện chức năng quản lý danh thiếp 42
Hình 32 Giao diện quá trình nhận dạng danh thiếp chụp từ camera 43
Hình 33 Quá trình nhận dạng danh thiếp chọn từ galery 43
Hình 34 Giao diện cấu hình ứng dụng 44
Trang 8DANH TRÂN_B1400466 4
Trang 9DANH TRÂN_B1400466 5
ABSTRACT
Business cards are a convenient item used by many people to communicate with each other With the continuous development of society, people tend to expand their relationships in many areas of life As a result, People have more and more business cards The storage and preservation a number of business cards sometimes face many difficulties Hence, they need effective methods and tools to store business cards This is the reason for the launch of the business card extracting applications to save personal information into contacts of mobile device There are many applications that have been successful as Camcard, ABBYY Business Card Reader However, these applications do not support Vietnamese
Wishing to develop a business card extracting application for the Vietnamese This thesis continues to study, improve, supplement and develop more functionalities, based on the results obtained from previous graduate theses - use opencv for image processing and Tesseract for character recognition This thesis improve the accuracy
of the identification process by identify each region of text line Additional zoning features of business cards.Increases the ability to extract information (names, phone numbers, etc.) by adding location attributes, the size of each text line to reduce analysis time and increase accuracy Add business card photo storage function and improve user interface In general, the essay has achieved its purpose, greatly improving the accuracy of the identification process, enhancing the user experience However, due to limited development time, application processing time is not really optimized
Trang 10auto-DANH TRÂN_B1400466 6
TÓM TẮT
Danh thiếp là một vật phẩm tiện lợi được nhiều người sử dụng, để trao đổi thông tin liên lạc với nhau Cùng với sự phát triển không ngừng của xã hội, mỗi người luôn có xu hướng mở rộng mối quan hệ của mình trong nhiều lĩnh vực đời sống Cũng
vì thế số lượng danh thiếp mọi người nhận được ngày càng nhiều Việc lưu trữ và bảo quản số lượng lớn danh thiếp đôi khi gặp nhiều khó khăn Do đó cần có phương pháp
và công cụ lưu trữ hiệu quả Đây là nguyên nhân dẫn đến sự ra đời của các ứng dụng trích xuất nội dung danh thiếp lưu vào danh bạ các thiết bị di động Có nhiều ứng dụng đã gặt hái được thành công, được nhiều người tin tưởng và sử dụng như Camcard, ABBYY Business Card Reader…Tuy nhiên những ứng dụng này chưa hỗ trợ tốt tiếng Việt
Với mong muốn phát triển ứng dụng nhận dạng danh thiếp cho người Việt Bài luận này tiếp tục nghiên cứu, cải tiến, bổ sung và phát triển thêm chức năng, dựa trên kết quả đã đạt được của những bài luận văn tốt nghiệp trước đó - sử dụng opencv để
xử lý ảnh và Tesseract để nhận dạng ký tự Bài luận đã cải tiến độ chính xác của quá trình nhận dạng bằng việc nhận dạng từng vùng chứa dòng ký tự Bổ sung thêm chức năng tự động khoanh vùng ảnh chứa danh thiếp Tăng khả năng trích xuất thông tin( họ tên, số điện thoại…) bằng việc bổ sung thêm thuộc tính vị trí, kích thước của từng text line, nhằm giảm thời gian phân tích và tăng độ chính xác Thêm chức năng lưu trữ ảnh của danh thiếp và cải thiện giao diện người dùng Nhìn chung bài luận đã đạt được mục đích đề ra, cải tiến đáng kể độ chính xác của quá trình nhận dạng, nâng cao trải nghiệm người dùng Tuy nhiên do thời gian phát triển ứng dụng có hạn nên thời gian xử lý của ứng dụng chưa thật sự được tối ưu
Trang 11Thế kỷ thứ 17 tại châu Âu, danh thiếp chỉ được sử dụng ở tầng lớp thượng lưu
và họ thường để lại danh thiếp của mình khi đến nhà ai đó Dần dần danh thiếp được chú trọng và trở thành phương tiện trao đổi thông tin liên lạc hữu ích Ngày nay với
sự phát triển của xã hội, danh thiếp đã trở nên quen thuộc với mọi người đặc biệt trong giới kinh doanh Cũng vì thế số lượng danh thiếp mỗi người nhận được ngày càng tăng lên
Với sự phát triển bùng nổ của các thiết bị di động, cũng như sự tiện lợi trong liên lạc mà nó mang lại Mọi người có xu hướng lưu trữ các danh thiếp nhận được vào các thiết bị này Quá trình lưu này được thực hiện thủ công bằng việc nhập các thông tin liên lạc cần thiết vào danh bạ điện thoại Cách làm này thường gây nhàm chán, tốn thời gian và khó quản lý Đây là vấn đề thật sự với những người có lượng danh thiếp lớn
2 Lịch sử giải quyết vấn đề
Ứng dụng công nghệ thị giác máy tính để tự động chuyển thông tin từ danh thiếp vào danh bạ điện thoại, không phải bài toán mới trên thế giới Đã có nhiều sản phẩm đưa ra thị trường và được sự ủng hộ của người dùng Trong đó nổi bật nhất là ABBYY Business Card Reader, camcard có độ chính xác cao, số lượng người dùng lớn và hỗ trợ nhiều ngôn ngữ
Hình 1 Ảnh chụp màn hình ứng dụng ABBYY Business Card Reader
ABBYY là công ty công nghệ nổi tiếng với bộ sản phẩm nhận dạng và xử lý
ký tự trong hình ảnh Một trong bộ sản phẩm của họ là Business Card Reader đây là
Trang 12DANH TRÂN_B1400466 8
phần mềm nhận dạng danh thiếp được nhiều người sử dụng – trên 500 000 lược tải trên google play store Ứng dụng sử dụng camera của điện thoại để thu ảnh của danh thiếp, người dùng có thể lựa chọn hai chế độ – tự động nhận dạng vùng ảnh chứa danh thiếp hoặc là do người dùng canh theo đường biên rồi ấn nút chụp ảnh.Với chế
độ tự động người dùng đợi tương đối lâu, máy mới có thể khoanh vùng được danh thiếp Ngoài ra người dùng còn có thể chọn ảnh từ gallery, đã chụp từ trước ,để tiến hành xử lý Sau quá trình thu nhận ảnh, người dùng có thể điều chỉnh vùng ảnh sao cho phù hợp nhất để bước vào quá trình nhận dạng Ứng dụng mất khoảng 3 – 4s cho quá trình nhận dạng ký tự và trích xuất thông tin với độ chính xác cao Tuy hỗ trợ nhiều ngôn ngữ nhưng hiện nay ứng dụng vẫn chưa hỗ trợ tiếng Việt
Camcard là một ứng dụng nhận dạng danh thiếp tương tự như ABBYY business card reader Đây là ứng dụng có lượt tải về khủng trên Play Store với hơn
Với mong muốn xây dựng ứng dụng nhận dạng danh thiếp, hỗ trợ tiếng Việt
Đã có nhiều luận văn, dự án nghiên cứu đã được tiến hành trong cả nước Gần đây nhất là bài luận văn của tác giả Nguyễn Thị Cẩm Xuân sinh viên K39 - Khoa công nghệ thông tin - Đh Cần Thơ, đồ án tốt nghiệp của tác giả Trần Đức Hải - sinh viên trường đại học Bách Khoa Hà Nội, ứng dụng nhận dạng danh thiếp trên android và
Trang 13DANH TRÂN_B1400466 9
ios của nhóm sinh viên đại học FPT….nhìn chung tất cả vẫn dừng lại ở nghiên cứu vẫn chưa có sản phẩm được dùng rộng rãi
3 Mục tiêu đề tài
Với mong muốn xây dựng ứng dụng nhận dạng danh thiếp cho người Việt
Đề tài tập trung nghiên cứu cải tiến độ chính xác, giảm thời gian xử lý của quá trình nhận dạng bằng việc nhận dạng từng vùng chứa dòng ký tự ( text line) Bổ sung thêm khả năng tự động phân vùng ảnh chứa danh thiếp, chức năng quản lý danh thiếp đồng thời cải tiến giao diện người dùng
4 Đối tượng và phạm vi nghiên cứu
- Lập trình ứng dụng trên hệ điều hành Android
- Sử dụng thư viện xử lý ảnh openCV
- Sử dụng thư viện nhận dạng ký tự quang học OCR tesseract
5 Phương pháp nghiên cứu
- Đọc tài liệu chuyên ngành về xử lý ảnh, thị giác máy tính…
- Xây dựng giải thuật và thiết kế chương trình
- Lập trình và kiểm thử
6 Kết quả đạt được
Xây dựng được ứng dụng nhận dạng danh thiếp với các với các đặc tính sau:
- Khả năng tự động phân vùng ảnh chứa danh thiếp tương đối chính xác
- Ứng dụng có khả năng xử lý những dòng ký tự có màu sắc nhạt hơn, góp phần cải thiện độ chính xác và thời gian xử lý của quá trình nhận dạng
- Tăng tính tổng quát của quá trình tìm họ tên trên danh thiếp, dựa vào kích thước của text line
- Bổ sung thêm chức năng quản lý danh thiếp và cải tiến giao diện người dùng
Trang 14DANH TRÂN_B1400466 10
7 Bố cục luận văn
Phần giới thiệu
Giới thiệu tổng quát về đề tài, mục tiêu chính của đề tài, đối tượng và phạm
vi có liên quan, phương pháp nghiên cứu, và kết quả cần đạt được
Phần nội dung
Chương 1 : Mô tả bài Mô tả chi tiết bài toán và các vấn đề và giải pháp
liên quan đến bài toán
Chương 2 : Thiết kế ứng dụng Mô tả các chức năng, kiến trúc của ứng
dụng Đồng thời xây dựng toán các thuật toán cần thiết cho quá trình nhận dạng
Chương 3 : Giới thiệu demo
Phần kết luận
Trình bày kết quả đạt được và hướng phát triển hệ thống
Trang 15DANH TRÂN_B1400466 11
PHẦN NỘI DUNG
CHƯƠNG 1: MÔ TẢ BÀI TOÁN
1 Mô tả chi tiết
Danh thiếp là vật phẩm gần gũi được dùng để trao đổi thông tin liên lạc với nhau, thường mang trên mình những thông tin chính như: họ tên, số điện thoại, email, địa chỉ, nơi công tác… Một số loại danh thiếp còn được in thêm thông tin
về công việc, dịch vụ họ cung cấp, thường được sử dụng bởi các hộ kinh doanh cá thể nhằm mục đích quảng bá Những thông tin này được thể hiện theo nhiều phong cách khác nhau trên một bìa cứng nhỏ gọn, thuận tiện mang theo bên mình
Hình 3 Các mẫu danh thiếp
Với đặc tính nhỏ gọn và mang đầy đủ thông tin liên lạc, danh thiếp ngày càng được sử dụng rộng rãi đặc biệt trong giới kinh doanh Cũng vì thế số lượng danh thiếp mà mỗi người nhận được ngày càng tăng lên, do đó cần phải có phương pháp lưu trữ, bảo quản danh thiếp hợp lý Một trong những hướng tiếp cận đơn giản và hiệu quả nhất là lưu thông tin trên danh thiếp vào danh bạ điện thoại di động
Trang 16DANH TRÂN_B1400466 12
Công việc này tương đối đơn giản, người dùng chỉ cần nhập thủ công các thông tin trên danh thiếp rồi lưu vào danh bạ điện thoại Tuy nhiên đây là việc làm nhàm chán, tốn thời gian, đặc biệt với những người có số lượng danh thiếp lớn Họ cần một ứng dụng tự động thực hiện toàn bộ các thao tác trên
Ứng dụng nhận dạng danh thiếp, ngoài việc hỗ trợ tự động trích xuất thông tin trên danh thiếp lưu vào danh bạ điện thoại, còn là công cụ quản lý danh thiếp hiệu quả Ứng dụng được xây dựng với những đặc tính như sau:
Khả năng tự động phân vùng ảnh chứa danh thiếp Ảnh chụp từ camera không chỉ có danh thiếp mà còn có các vùng ảnh thừa khác, những vùng ảnh thừa này sẽ tác động lớn đến độ chính xác và thời gian xử lý của bước nhận dạng Do đó ứng dụng cần có khả tự động loại bỏ những vùng ảnh này và giữ lại vùng ảnh chứa danh thiếp
Hình 4 Ảnh đã được phân vùng Vùng ảnh trong hình chữ nhật màu xanh là vùng ảnh chứa danh thiếp được giữ lại,
Biến dạng hình học xuất hiện phổ biến là hiện tượng mắt chim khi chụp ảnh
và vị trí của danh thiếp không song song với trục Ox của hệ tọa độ trên màn hình
Trang 17DANH TRÂN_B1400466 13
điện thoại Những biến dạng này ảnh hưởng lớn đến quá trình tìm text line Vì thế ứng dụng nhận dạng danh thiếp cần cần phải khôi phục lại hình dạng ban đầu của ảnh trước khi xử lý
Hình 5 Ảnh bị hiệu ứng mắt chim
Ở đầu bước nhận dạng ký, ảnh sẽ được nhị phân hóa bằng phương pháp Ostu Đây phương phương pháp nhị phân ảnh cho kết quả tốt, phù hợp với quá trình nhận dạng nhất Tuy nhiên phương pháp này vô tình loại bỏ những dòng ký tự có màu sắc nhạt hơn so với những dòng ký tự còn lại Vì thế dẫn đến sự mất mát thông tin, đồng thời gây nhiễu cho những dòng ký tự có màu sắc đậm nằm kế nó Những tác động này ảnh hưởng rất xấu đến độ chính xác cũng như thời gian xử lý Để cải thiện hiệu suất nhận dạng, ứng dụng cần tìm và nhận dạng trên từng dòng ký một
Hình 6 Mất thông tin khi áp dụng phuong pháp Otsu
(a) ảnh gốc, (b) ảnh sau khi nhị phân, vùng màu cam là vùng bị mất thông tin
Hình 7 Sai lệch tìm text line
Trang 18DANH TRÂN_B1400466 14
Nhiễu do Ostu để lại sau quá trình nhị phân, Những nhiều này gây ảnh hưởng rất lớn đến độ chính xác cũng như thời gian nhận dạng
của dòng ký tự “ Điện thoại 0886.222.626”
Ứng dụng sẽ phân loại những thông tin tìm được sau quá trình nhận dạng ký tự quang học vào các nhóm như, họ tên, số điện thoại, email, địa chỉ, nơi làm việc Người dùng có thể tự điều chỉnh lại những thông tin này rồi lưu vào danh bạ điện thoại Đồng thời ứng dụng cung cấp một công thực hiện các thao tác truy vấn và cập nhận thông tin danh thiếp một cách tiện lợi
2 Vấn đề và giải pháp liên quan đến bài toán
Ứng dụng nhận dạng danh thiếp là sự kết hợp của nhiều giải thuật xử lý ảnh như: giải thuật biến đổi ảnh màu sang ảnh xám, ảnh xám sang nhị phân, tìm biên, phép biến đổi hình học… với kỹ thuật lập trình thiết bị di động Vì thế để xây dựng ứng dụng trong thời gian ngắn cần phải có sự hỗ trợ của các thư viện xử lý ảnh, nhận dạng
ký tự quang học và môi trường phát triển ứng dụng di động
2.1 Giải thuật xử lý ảnh liên quan đến bài toán
2.1.1 Chuyển ảnh màu sang ảnh xám
Ảnh kỹ thuật số thường được biễu diễn bởi ba kênh màu là Red ( R) , Green ( G)
và Blue ( B) Mỗi kênh màu tương ứng với một ma trận có kích thước bằng chiều dài
x chiều rộng của ảnh Trong các ứng dụng xử lý ảnh, thay vì tính toán trên ba ma trận RGB người ta chuyển chúng thành một ma trận Ma trận này biểu diễn độ sáng của ảnh, với công thức chuyển đổi như sau:
Y= 0.299 * R + 0.587*G + 0.114*B
Trong đó:
• Y : giá trị cường độ sáng của ảnh
• R: giá trị kênh Red của ảnh
• G: giá trị kênh Green của ảnh
• B: giá trị kênh Blue của ảnh
Trang 19DANH TRÂN_B1400466 15
2.1.2 Chuyển ảnh xám sang ảnh nhị phân
Ảnh nhị phân hay ảnh đen trắng, là ảnh chỉ có hai màu đen với giá trị là 0 và trắng với giá trị 255 Chuyển đổi ảnh xám sang ảnh nhị phân được thực hiện bằng công thức sau:
Trong đó:
• O(x,y): giá trị tại điểm ảnh (x,y) của ảnh nhị phân
• I(x,y): giá trị tại điểm ảnh (x,y) của ảnh xám
• C là ngưỡng
Có nhiều phương pháp chọn ngưỡng C, mỗi loại có ưu và nhược điểm riêng tùy vào mục đích sử dụng mà chọn phương pháp phù hợp Một trong những phương pháp thường được áp dụng cho các bài toán phân vùng ảnh là phương pháp phân ngưỡng động Otsu
Thuật toán Otsu
Bước 1: Xác định C1 Giá trị cho C1 ban đầu nên chọn là (0+255) / 2 = 128
Bước 2: Phân loại thành 2 nhóm điểm ảnh
Loại 1: chứa tất cả các điểm ảnh có giá trị cường độ sáng (Intensity) <= C Loại 2: chứa tất cả các điểm ảnh có giá trị cường độ sáng (Intensity) > C
Bước 3: Tính giá trị cường độ sáng trung bình iAverage_1 cho loại 1
iAverage_2 cho loại 2
Bước 4: Tính giá trị C2 theo công thức (iAverage_1 + iAverage_2) /2
0
= íî
Trang 20DANH TRÂN_B1400466 16
2.1.3 Giải thuật phát hiện biên
Có hai phương pháp phát hiện biên là phát hiện trực tiếp và phát hiện gián tiếp Phát hiện biên trực tiếp dựa vào sự biến thiên giá trị mức xám của ảnh, được thực hiện bằng các kỹ thuật đạo hàm Gradient và Laplacian Phát hiện biên gián tiếp thực hiện bằng cách phân chia ảnh thành các vùng rồi xác định biên
Mục đích của việc áp dụng giải thuật tìm biên vào bài toán nhận dạng danh thiếp nhằm để khoanh vùng ảnh chứa danh thiếp và tìm text line, do đó việc áp dụng giải thuật tìm biên trực tiếp phù hợp hơn Một trong những giải thuật được sử dụng nhiều nhất trong nhóm này là giải thuật tìm biên canny
Giải thuật tìm biên canny:
Bước 1: Khử nhiễu bằng bộ lọc Gaussian
Bước 2: Tính cường độ và góc của cạnh thông qua gradient
Bước 3: Xác định hướng của cạnh theo nguyên tắc sau:
Trang 21DANH TRÂN_B1400466 17
Bước 4: Loại bỏ những pixel có |G (x,y) | không cục bộ,
với |G(x,y| = Edge_Gradient(G),
Bước 5: Loại bỏ những giá trị không thỏa ngưỡng kép (High, Low)
- Những pixel có giá trị M lớn hơn High được giữ lại
- Những pixel có giá trị M nhỏ hơn Low bị loại bỏ
- Những pixel nằm trong khoảng High và Low kiểm tra pixel lân
cận nếu có M lớn hơn High thì giữ lại ngược lại thì bỏ
2.1.4 Các Phép biến đổi hình học áp dụng vào bài tóan
Phép biến đổi Hough Lines dùng để phát hiện các đường thẳng trong ảnh Phép biến đổi này chuyển các điểm ảnh từ hệ tọa độ descartes sang hệ tọa độ cực, rồi dựa vào số lượng điểm ảnh thuộc ( ρ, θ) và ngưỡng để xác định đường thằng
Hình 8 Hệ tọa độ cực
Homography là sự dịch chuyển sử dụng phép chiếu hình học, hay nói cách khác
nó là sự kết hợp của cặp điểm trong phép chiếu phối cảnh Ảnh thực trong không gian
Trang 22DANH TRÂN_B1400466 18
ba chiều có thể biến đổi về không gian ảnh bằng phép chiếu thông qua ma trận biến đổi Homography hay còn gọi là ma trận H Các phép chiếu biến đổi thông qua ma trận Homography không đảm bảo về kích thước và góc của vật được chiếu, nhưng lại đảm bảo về tỉ lệ.1
Hình 9 Biến đổi Homgraphy
2.2 Các công nghệ hỗ trợ xây dựng ứng dụng
2.2.1 Môi Trường phát triển ứng dụng
Trong khuôn khổ đề tài, ứng dụng nhận dạng danh thiếp được phát triển cho các thiết bị di động chạy hệ điều hành android Đây là hệ điều hành phổ biến trên các thiết bị di động, theo số liệu thống kê tháng 10/2018 android chiếm tới 74.69% thiết
bị di động bán ra trên toàn cầu [1]2 Android cung cấp hai môi trường phát triển ứng dụng SDK và NDK, giúp lập trình viên dễ dàng tương tác đến các thành phần của điện thoại, bao gồm camera, trình quản lý ảnh gallery, danh bạ
Android Camera API
Android cung cấp hai phương thức để truy cập và sử dụng camera Cách thứ nhất dùng Intent và cách thứ hai người dùng tự custom lại camera theo yêu cầu của mình
Với cách thứ nhất sử dụng Intent – gọi các app camera có sẳn trong điện thoại Intents là một thành phần quan trọng trong android Nó cho phép ứng dụng gọi và sử dụng một thành phần của ứng dụng khác, để thực hiện một chức năng nào đó Cách này dễ cài đặt và sử dụng, tuy nhiên chất lượng ảnh phụ thuộc vào app được gọi đến Những app này thường áp dụng nhiều bộ lọc khác nhau để đáp ứng nhu cầu làm đẹp ảnh của người dùng Vì thế sẽ ảnh hưởng lớn đến độ chính xác của quá trình nhận dạng
1 http://seal.deha.vn/gioi-thieu-ve-homography-trong-opencv/
Trang 23DANH TRÂN_B1400466 19
Hình 10 Minh họa gọi camera bằng intent
Với những ứng dụng được thiết kế theo mục đích chuyên biệt, như ứng dụng nhận dạng danh thiếp, thì sử dụng cách thứ hai mà camera API cung cấp là hợp lý nhất Người dùng tự custom lại camera để phù hợp với nhu cầu mình Việc custom này được thực hiện qua các bước chính sau: [ 3]
Bước 1: Detect and Access Camera: xác định camera cần sử dụng
Bước 2: Create a Preview Class: tạo class xử lý ảnh được trả về khi ở chế độ
xem trước
Bước 3: Build a Preview Layout: tạo bố cục cho chế độ xem trước
Bước 4: Setup Listeners for Capture: xử lý sự kiện chụp ảnh
Bước 5: Capture and Save Files: xử lý lưu ảnh
Tương tác trình quản lý ảnh Gallery
Như trình bày ở trên Intent là công cụ giúp tương tác với thành phần của ứng dụng khác Để tương tác với trình quản lý ảnh gallery, ta chỉ cần gọi intent đến nó nó, với các thông số sau:
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Kết quả trả về của intent trên là một Uri chỉ đến ảnh ta đã chọn từ gallery
3 https://developer.android.com/guide/topics/media/camera
Trang 24dữ liệu quan hệ Với ba bảng dữ liệu chính sau:
• Bảng Contacts: mỗi hàng thể hiện thông tin về một người
• Bảng RawContacts: mỗi hàng chứa một thông tin về người dùng và loại tài khoản
• Bảng Data: mỗi hàng chứa các thông tin chi tiết liên lạc như địa chỉ mail hoặc số điện thoại
e-Hình 11 Các bảng của contacts API
Việc chỉnh sửa thông tin liên lạc trong danh bạ thường được thực hiện chủ yếu
ở bảng Data Khi thêm một người vào danh bạ cần thực hiện trên bảng RawContacts
và Data, dữ liệu tại bảng Contacts sẽ được tự động thêm vào
2.2.2 Thư viện xử lý ảnh
Hiện nay có nhiều thư viện cài đặt nhiều giải thuật hỗ trợ xử lý ảnh, nổi bật
nhất là OpenCv (Open Computer Vision) Đây là một thư viện mã nguồn mở hàng đầu về thị giác máy tính, máy học, xử lý ảnh OpenCV đươc viết bằng C/C++, vì vậy tốc độ tính toán nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Ngoài ra Opencv còn có các interface cho Python Java rất thuận tiện để xây dựng ứng dụng
Trang 25DANH TRÂN_B1400466 21
2.2.3 Thư viện nhận dạng ký tự quang học
Tương tự như thư viện xử lý ảnh, ngày nay có nhiều thư viện hỗ trợ việc nhận dạng ký tự quang học (OCR) Có thể kế đến như:
ABBYY FineReader Engine của ABBYY cung cấp gói thư viện giúp lập trình viên xây dựng ứng dụng ocr trên nhiều nên tảng khác nhau Ngoài chức năng ocr thông thường gói thư viện này cung cấp nhiều api hữu ích như: Multi-core CPUs and parallel processing, Support for Cloud and virtual environments, Recognition profiles for fast implementation…đặc biệt là tính năng business card recognition giúp người lập trình xây dựng ứng dụng nhận dạng danh thiếp nhanh Tuy nhiên đây là gói thư viện có phí
Cloud Vision API là gói thư viện về thị giác máy tính của google cũng có chức năng ocr, tùy nhiên gói này chưa hỗ trợ công cụ train cho tiếng Việt
Ngoài ra còn gói thư viện OCR mã nguồn mở được cộng đồng sử dụng nhiều nhất là Tesseract OCR Tesseract được phát triển bởi Hewlett-Packard Laboratories Bristol tại Hewleett-Packard Co, Greeley Colorado từ 1985 đến 1994 Sau đó, nó được cập nhật một số thay đổi nhỏ và tạm ngưng phát triển từ sau 1998 Đến năm
2005, Tesseract được phân bố dưới dạng mã nguồn mở bởi HP và được phát triển bởi Google từ năm 2006 Hiện nay tessract hỗ trợ hơn 100 ngôn ngữ bao gồm tiếng Việt
và có mặt trên các nền tảng phổ biến hiện nay