nhận diện cardvisit trên điện thoại thông minh android - Pdf 14

ĐẠI HỌC BÁCH KHOA HÀ NỘI
Viện Điện tử - Viễn thông
BÁO CÁO PROJECT 1
ĐỀ TÀI:
NHẬN DIỆN CARDVISIT TRÊN
ĐIỆN THOẠI THÔNG MINH ANDROID
Giáo viên hướng dẫn : TS.Nguyễn Đức Minh
Nhóm sinh viên thực hiện:
1.Nguyễn Thành Đô SHSV: 20090748
2.Nguyễn Thị Mai Trang SHSV : 20092812
3.Cao Minh Tú SHSV : 20093179
4.Lê Thành Tuân SHSV: 20092941
5.Đặng Minh Tuyên SHSV: 20093045
Hà Nội,mai 26, 2014
1
PHỤ LỤC
Giới thiệu chung về công cụ sử dụng và nội dung đề tài
1. Kiến thức chung về ngôn ngữ lập trình JAVA và ANDROID
2. Tìm hiểu vềphần mềm CamCard
3. Yêu cầu của phần mềm
Phân tích tính khả thi và tổ chức công việc
Phân tích các khối cơ bản của phần mềm
Sơ đồ chức năng của cả hệ thống phần mềm
Phân tích từng phần của phần mềm
Thiết kế từng khối
1. Khối xử lí hình ảnh
2. Khối giao diện
3. Khối kết nối Server- Client
2
I. Giới thiệu chung về công cụ sử dụng và nội dung đề tài
1. Kiến thức chung về ngôn ngữ lập trình JAVA và ANDROID

Nhận diện Cardvisit trên điện thoại thông minh AndRoid” là đề tài khá mới mẻ
và thú vị.
Chúng em cảm ơn Thầy Nguyễn Đức Minh cùng các bạn trong phòng lab
nghiên cứu EDK đã giúp đỡ chúng em hoàn thành đề tài này.
Chúng em xin chân thành cảm ơn!
Tìm hiểu vềphần mềm CamCard
5
Có thể nói đây là phần mềm nhận diện tốt nhất hiện nay, đã được ứng dụng rất
hiệu quả trong công việc. Giúp con người giảm thiểu được công sức trong công
việc quản lí, hay tiếp nhận thông tin cá nhân, phù hợp cho những người giao
tiếp nhiều với các đối tác, thường xuyên nhận các CardVisit liên lạc, hay trong
các khu vực quản lí nhân sự….
Với các tính năng thông minh của phần mềm này, đã được tích hợp trên các
thiết bị hiện đại trên nền AndRoid trên các dòng điện thoại cao của LG,
SAMSUNG, NOKIA… hay các loại notebook khác.
CamCard chụp ảnh thẻ kinh doanh bằng cách sử dụng Camera trên chính điện
thoại của bạn như là một máy quét. Nó có khả năng nhận diện các thông tin trên
Card như: First-name, Last-name, Phone, e-mail, và thông tin bổ sung khác, các
thông tin này được hiển thị ngay trên giao diện rất thuận tiên cho người sử
dụng. Bằng cách này bạn sẽ có thể chuyển những thông tin có trên một thẻ kinh
doanh lưu các thông tin đó vào tài khoản Gmail của bạn hoặc chia sẻ các thông
tin đó trên một trang mạng mà bạn muốn.
Trình quét của phần mềm khá chính xác và nó đã làm tốt với tất cả các loại thẻ
với các ngôn ngữ khác nhau.CamCard đã được tích hợp với LinkedIn, giúp bạn
có thể tìm kiếm hoặc mời các chủ thẻ trực tiếp truy cập thông tin từ ứng dụng.
Ứng dụng này đặc biệt hữu ích cho những người thường xuyên nhận được thẻ
kinh doanh từ địa chỉ liên lạc và muốn lưu trữ các thông tin một cách an toàn
trong thiết bị cá nhân.
vào thẻ nhớ điện thoại của mình một cách nhanh chóng và thuận tiện.Bạn sẽ có
thể

Khả thi về kĩ thuật
+ Sự thân thiện với ứng dụng: Việc cài đặt và sử dụng khá dễ dàng và thuận
tiện,đặc biệt là đối với các dòng điên thoại cảm ứng chạy trên nền Android của
LG và Samsung.
+ Sự thân thiện với kỹ thuật: Các thao tác như chụp ảnh,xử lý ảnh để nhận diện
cũng không quá phức tạp nên dễ sử dụng. Dễ dàng sửa chữa và nâng cấp cũng
như đưa thêm các chức năng.
+ Quy mô phần mềm: Nhỏ,chủ yếu phục vụ cho nhiệm vụ học tập và nghiên
cứu trên trường và có thể ứng dụng vào thực tế theo những nhu cầu cá nhân.
+ Tính tương thích: Tương thích với tất cả hệ điều hành Android.
Khả thi về mặt tổ chức
+ Đề tài có quy mô tương đối nhỏ nên trong vấn đề tổ chức công việc không
khó khăn.
Khả thi về mặt kinh tế
+ Chi phi cho đề tài không tốn kém
8
+ Đề tài thành công có thể đem lại tính kinh tế cho nhóm thiết kế với tính thực
tế thiết thực của nó
Lập bảng kế hoạch
Kế hoạch về nhân sự và công cụ làm việc
5 thành viên trong nhóm hoạt động tích cực trong công việc chung
Tập trung đầy đủ trong mỗi buổi làm việc nhóm , cụ thể chiều 1h, thứ 3 hằng
tuần.
Có máy tính cá nhân, mail liên lạc.
Cài đặt các phần mềm phục vụ cho việc lập trình bằng ngôn ngữ Java, word,
excel,phần mềm Enterprise Architecture.
Kế hoạch chuẩn bị kiến thức cho bài tập
Công việc chung
Tìm hiểu và nghiên cứu về hai phần mềm đã được ứng dụng trong thực tế hiện
nay : ScanCard và CamCard lite của các nhà phân phối trên các thiết bị điện

(Tiến hành từ ngày 17/4 đến ngày 27/4)
Đóng gói chương trình và bắt đầu viết báo cáo tổng thể cho bài Project
(Tiến hành trong thời gian còn lại đến ngày 25/5)
Chú ý: Trong mỗi một khoảng thời gian, phải nộp báo các tiến trình công việc
cho thầy hướng dẫn, Trang sẽ nhận viết báo cáo.Các bạn làm mỗi phần tổng hợp
lại.
10
III. Phân tích các khối cơ bản của phần mềm
Sơ đồ chức năng của hệ thống phần mềm
Phân tích từng phần của phần mềm
Quản lí khối xử lí hình ảnh
Quản lí camera
Sử dụng camera để chụp ảnh,đồng thời lưu vào thư mục riêng của mình và hiển
thị kết quả của mình lên đối tượng View.
Quản lí xử lí hình ảnh
Lấy ảnh ra từ thư mục:
Chúng ta có thể lấy ảnh từ trong thư mục đã đươc lưu trong SD Card hoặc từ
Gallery của điện thoại Android có chứa những bức ảnh chụp hình ảnh của
Cardvisit.
+Lọc nhiễu: Hình ảnh vừa chụp được thường có độ nét không cao, hay bị nhiễu
nên chúng ta phải tiến hành lọc nhiễu thông qua biến đổi Fourier bằng hàm fft
trên Matlab.
+ Chuyển kí tự về dạng text : Sử dụng bộ thư viện nhận dạng kí tự bằng quang
Học tesseract-OCR.Với bộ thư viện của phần mềm này có thể giúp chúng ta
chuyển từfide ảnh vừa chụp xang dạng text, fide text này được hiển thị trên các
textbox giao diện của màn hình điện thoại.
11
Phân tích thành các trường dữ liệu
Để có thể dễ dàng trong việc theo dõi các thông tin về chủ nhân của cardvisit,
phần mềm còn hỗ trợ một chức năng là phân tích các dữ liệu text thành các

setContentView(R.layout.main);
trong đó capture là file xml chứa layout camera của chúng ta.
+ Đối tượng SurfaceView:
Tạo đối tượng SurfaceView tên là mSurfaceView, và kết nối bên phần giao
diện qua câu lệnh
mSurfaceView = (SurfaceView)indViewById(R.id.surface_camera);
mSurfaceView.setOnClickListener(this);
mSurfaceHolder = mSurfaceView.getHolder()
13
Tạo đối tượng SurfaceHolder để giúp cho Activity này quản lý
SurfaceView thông qua interface Callback, mục đích để thông báo
SurfaceView đó được tạo,hủy hay thay đổi qua các phương thức là
publicvoid surfaceCreated, surfaceChanged(),
surfaceDestroyed() surface. Bên cạnh đó,ta thiết lập Surface này là loại
“push” phù hợp với Camera Preview:
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Tiếp theo là
mCamera = Camera.open();
Hàm này được gọi đầu tiên khi surface được tạo ra. Vì vậy ở hàm này mình sẽ
open camera để sử dụng cho sau này.
Bước tiếp, chúng ta sẽ thiết lập các thông số
params.height = (int)h;
params.width = (int)w;
cho Camera thông qua phương thức surfaceChanged( ), và khởi động cái
camera preview tức là vẽ hình lên cái surface mà mình sẽ nhìn thấy trên màn
hình điện thoại.
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(w, h);
mCamera.setParameters(p);
try

Khó khăn và hạn chế của OCR
+ Các chương trình hỗ trợ OCR có thể nhận dạng ký tự với tỷ lệ trên 90% đối
với chất lượng hình ảnh rõ nét và font chữ thông thường. Đối với hình chất
lượng kém, font chữ đặc biệt hoặc chữ viết tay thì kết quả cho ra không mấy
khả quan.
16
Bước 1: Xử lí ban đầu: Chuyển
ảnh màu > đen trắng ( Binary)
Bước 2: Lọc ảnh:
Chia cắt để loại bỏ các thành
phần phụ, lọc nhiễu.
Bước 3:Nhận dạng thông n
trên ảnh > dạng text
+ Đối với văn bản Tiếng Việt thì tỷ lệ phần trăm chính xác không cao so với các
văn bản ngôn ngữ khác.
+ Sơ đồ khối các bước:
Bước 1: Xử lí ban đầu
+ Chuyển ảnh từ Mầu sang Đen trắng (Binary), tức chỉ còn hai mức 0 và 255
để dễ xử lí, dùng hàm Pix của TeserractOCV để trả về dạng matric. Tạo đối
tượng pic_bin sau khi đã xử lí xong, tiếp đó chúng ta sẽ làm việc với đối tượng
này.
+ Đoạn code
File f = newFile(getRealPathFromURI1(imageFileUri));
Pix pic = ReadFile.readFile(f); // traveanh gray dang matrix
Log.v("chieu rong",
Integer.toString(pic.getWidth()));/////////////////
Pix pic_bin = Binarize.otsuAdaptiveThreshold(pic);
ArrayList<Pix> hozArray = new ArrayList<Pix>();
int i = 0;
17

//Tinh tong cua mot matrix
18
publicstaticint sumElems(Pix img)
{
int sum = 0;
for(int i=0; i<img.getHeight();i++)
{
for(int j=0;j<img.getWidth();j++)
{
sum+=img.getPixel(i, j);
}
}
}
Bước 3: Nhận dạng thông tin trên ảnh
+ Trong thư viện của Tesseract hỗ trợ hàm TessBaseAPI trực tiếp chuyển hình
ảnh thành dạng Text với đoạn Code sau:
TessBaseAPI baseApi = new TessBaseAPI ();
baseApi.init("/mnt/sdcard/tesseract/", "vie");
//File f1 = new File(getRealPathFromURI(imageFileUri));
baseApi.setImage(img);
//baseApi.setImage(f1);
String result = baseApi.getUTF8Text();
baseApi.end();
txt.setText(result);
+ Kết quả đưa ra hai đối tượng sau khi xử lý:
String path="mnt/sdcard/tesseract/tessdata/";
String file ="vie.traineddata";
19
Các thành phần code
+ Code phần thuật toán được viết trong 3 Class chính là “Algorithm.java”,

- Dữ liệu kiểu ngày tháng: Thường được viết theu mẫu: dd/mm/yyyy: Hai chữ
số đầu tiên xác định ngày, tiếp theo là dấu gạch chéo, tiếp đến là 2 chữ số xác
định tháng, tiếp theo là dấu gạch chéo và kết thúc bởi bốn chữ số xác định năm.
- Địa chỉ email: [email protected]ìđó: Bao gồm 1 chuỗi văn bản được chia thành 2
phần: Phần user name và phần domain, 2 phần này cách nhau bởi dấu @. Phần
domain có luật riêng theo cách đặt tên của domain
- Các phép toán tìm kiếm theo vị trí
^:Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở vị trí đầu của chuỗi
gốc
$:Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở vị trí cuối của chuỗi
gốc
\b:Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở vị trí đầu của một từ
trong chuỗi gốc. Nếu cần so sánh ở vị trí cuối từ, hãy đặt biểu thức \b ở vị trí
cuối từ.
\B:Trả về chuỗi kết quả trong trường hợp chuỗi này không nằm ở vị trí đầu của
một từ trong chuỗi gốc. (tuỳ thuộc vào vị trí đặt \B ở đầu hoặc cuối một từ)
?=:Trả về chuỗi kết quả nếu theo sau chuỗi đó là một chuỗi nào đó được chỉ
định trước
?!:Trả về chuỗi kết quả nếu sau chuỗi đó không phải là một chuỗi nào đó được
chỉ định trước
-Các lớp ký tự trong regex
[xyz]:Tìm một ký tự bất kỳ nằm trong tập ký tự giữa cặp dấu ngoặc vuông
[x-z]:Tìm một ký tự bất kỳ nằm trong tập ký tự từ x đến z
[^xyz]:Tìm một ký tự bất kỳ không thuộc tập ký tự giữa cặp dấu ngoặc vuông.
.:Tìm bất kỳ một ký tự nào không phải là ký tự xuống dòng mới (new line) hoặc
ký tự kết thúc dòng (line terminator).
\w:Tìm một ký tự dạng a-Z, 0-9 và dấu gạch dưới.
\W:Ngược lại với \w
\d:Tìm một ký tự thuộc tập ký tự từ 0 đến 9
23


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status