Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
3,41 MB
Nội dung
ĐẠI HỌC BÁCH KHOA HÀ NỘI Viện Điện tử - Viễn thông BÁO CÁO PROJECT ĐỀ 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 : Nhóm sinh viên thực hiện: 1.Nguyễn Thành Đơ 2.Nguyễn Thị Mai Trang 3.Cao Minh Tú 4.Lê Thành Tuân 5.Đặng Minh Tuyên TS.Nguyễn Đức Minh SHSV: 20090748 SHSV : 20092812 SHSV : 20093179 SHSV: 20092941 SHSV: 20093045 Hà Nội,mai 26, 2014 PHỤ LỤC Giới thiệu chung công cụ sử dụng nội dung đề tài Kiến thức chung ngơn ngữ lập trình JAVA ANDROID Tìm hiểu vềphần mềm CamCard Yêu cầu phần mềm Phân tích tính khả thi tổ chức cơng việc Phân tích khối phần mềm Sơ đồ chức hệ thống phần mềm Phân tích phần phần mềm Thiết kế khối Khối xử lí hình ảnh Khối giao diện Khối kết nối Server- Client I Giới thiệu chung công cụ sử dụng nội dung đề tài Kiến thức chung ngôn ngữ lập trình JAVA ANDROID a Ngơn ngữ lập trình JAVA Java ngơn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành(HĐH) nên có khả làm việc nhiều HĐH khác Đây ưu điểm mạnh mà ngơn ngữ khác khơng có Các đặc trưng Java: • • • • • • • • Đơn giản Hướng đối tượng Độc lập với phần cứng hệ điều hành Mạnh Bảo mật Phân tán Đa luồng Động Java làm việc với máy ảo Java sử dụng công cụ phát triển JDK( Java Development Kit) b Hệ điều hành ANDROID Android hệ điều hành điện thoại di động (và số đầu phát HD, HD Player, TV) phát triển Google dựa tảng Linux.Các nhà phát triển viết ứng dụng cho AndRoid ngôn ngữ Java Từ Android đời, kèm theo hàng ngàn tiện ích điện thoại di động đưa ra, biến điện thoại cầm tay ngày trở lên thơng minh Có thể nói “ Cả giới tầm tay” Kiến trúc AndRoid bao gồm lớp thành phần: Để tạo nên ứng dụng Android, cần hiểu thành phần( component) lập trình: Vịng đời ứng dụng trải từ OnCreate đến onDesTroy Với kiến thức tìm hiểu JAVA hđh ANDROID, chúng em muốn tìm hiểu, học tập đề tài liên quan đến kiến thức Đề tài “ Nhận diện Cardvisit điện thoại thông minh AndRoid” đề tài mẻ thú vị Chúng em cảm ơn Thầy Nguyễn Đức Minh bạn phòng lab nghiên cứu EDK giúp đỡ chúng em hoàn thành đề tài Chúng em xin chân thành cảm ơn! Tìm hiểu vềphần mềm CamCard Có thể nói phần mềm nhận diện tốt nay, ứng dụng hiệu công việc Giúp người giảm thiểu công sức công việc quản lí, hay tiếp nhận thơng tin cá nhân, phù hợp cho người giao tiếp nhiều với đối tác, thường xuyên nhận CardVisit liên lạc, hay khu vực quản lí nhân sự… Với tính thơng minh phần mềm này, tích hợp thiết bị đại AndRoid dòng điện thoại cao LG, SAMSUNG, NOKIA… hay loại notebook khác CamCard chụp ảnh thẻ kinh doanh cách sử dụng Camera điện thoại bạn máy quét Nó có khả nhận diện thông tin Card như: First-name, Last-name, Phone, e-mail, thông tin bổ sung khác, thông tin hiển thị giao diện thuận tiên cho người sử dụng Bằng cách bạn chuyển thơng tin có thẻ kinh doanh lưu thơng tin vào tài khoản Gmail bạn chia sẻ thông tin trang mạng mà bạn muốn Trình qt phần mềm xác làm tốt với tất loại thẻ với ngơn ngữ khác nhau.CamCard tích hợp với LinkedIn, giúp bạn tìm kiếm mời chủ thẻ trực tiếp truy cập thông tin từ ứng dụng Ứng dụng đặc biệt hữu ích cho người thường xuyên nhận thẻ kinh doanh từ địa liên lạc muốn lưu trữ thông tin cách an toàn thiết bị cá nhân vào thẻ nhớ điện thoại cách nhanh chóng thuận tiện.Bạn Các chức phần mềm này: Chống rung hình ảnh chụp Hiển thị hình ảnh tương ứng chỉnh sửa thông tin thẻ kinh doanh Tự động phát định hướng văn Tự động xoay hình ảnh thẻ Tự động cắt thẻ hình ảnh từ phía sau Tự động làm đẹp hình ảnh thẻ kinh doanh Với thơng tin chủ thẻ giúp thực gọi điện thoại, gửi tin nhắn SMS, gửi email, duyệt trang web định vị địa đồ Google Thêm thông tin liên hệ nhóm nhóm liên lạc bạn Quét thẻ kinh doanh vài giây điện thoại bạn bước dễ dàng: Chụp nhập ảnh Scan (định hướng văn tự động phát hiện) Xem xét chỉnh sửa kết nhận dạng từ thẻ Thêm vào danh sách địa liên lạc Như vậy, phần mềm thực tế ưa chuộng có nhiều đặc tính tốt Với đề tài này, chúng em hi vọng làm sản phẩm đơn giản, hữu dụng sử dụng phạm vi nhỏ, đặc biệt có ưu điểm nhận diện kí tự tiếng việt mà phầm mềm chưa có Yêu cầu phần mềm Yêu cầu đặt : + Đáp ứng ứng dụng đặt cho phần mềm + Môi trường giao diện làm việc đơn giản, nhanh + Có thể nâng cấp, bảo trì dễ dàng II Phân tích tính khả thi phân chia tổ chức Phân tích tính khả thi Khả thi kĩ thuật + Sự thân thiện với ứng dụng: Việc cài đặt sử dụng dễ dàng thuận tiện,đặc biệt dòng điên thoại cảm ứng chạy Android LG Samsung + Sự thân thiện với kỹ thuật: Các thao tác chụp ảnh,xử lý ảnh để nhận diện không phức tạp nên dễ sử dụng Dễ dàng sửa chữa nâng cấp đưa thêm chức + Quy mô phần mềm: Nhỏ,chủ yếu phục vụ cho nhiệm vụ học tập nghiên cứu trường ứng dụng vào thực tế theo nhu cầu cá nhân + Tính tương thích: Tương thích với tất hệ điều hành Android Khả thi mặt tổ chức + Đề tài có quy mô tương đối nhỏ nên vấn đề tổ chức cơng việc khơng khó khăn Khả thi mặt kinh tế + Chi phi cho đề tài không tốn + Đề tài thành cơng đem lại tính kinh tế cho nhóm thiết kế với tính thực tế thiết thực Lập bảng kế hoạch Kế hoạch nhân công cụ làm việc thành viên nhóm hoạt động tích cực cơng việc chung Tập trung đầy đủ buổi làm việc nhóm , cụ thể chiều 1h, thứ tuần Có máy tính cá nhân, mail liên lạc Cài đặt phần mềm phục vụ cho việc lập trình ngôn ngữ Java, word, excel,phần mềm Enterprise Architecture Kế hoạch chuẩn bị kiến thức cho tập Công việc chung Tìm hiểu nghiên cứu hai phần mềm ứng dụng thực tế : ScanCard CamCard lite nhà phân phối thiết bị điện thoại, notebook… Tìm hiểu Android ứng dụng Android Học ngôn ngữ Java + Học Java bản/ ngày ( tiếng) có kèm theo làm tập ứng dụng nhỏ + Học Java hướng đối tượng/ ngày ( 3-4 tiếng) có kèm theo tập + Học Java nâng cao / tuần (3-4 tiếng) có kèm theo tập Trong trình học Java bạn nhóm thảo luận trao đổi để hiểu rõ ngôn ngữ Tìm hiểu giao diện Server- Client ứng dụng giao diện tập Công việc riêng Sau chuẩn bị kiến thức cho tập vòng tuần, bạn tiến hành làm tập Project qua số công việc cụ thể sau: Thiết kế khối bản( code Debug) cho trương trình: 1.Khối xử lí hình ảnh ( bạn Trang, Đô, Tú) 2.Khối Giao diện( bạn Tuân, Tun) 3.Khối Giao tiếp Server-Client (Tìm hiểu chung, khơng làm) Công việc kết thúc tuần ( từ ngày 3/2 đến ngày 16/3) Tiến hành lập trình cụ thể khối theo chuẩn Enterprise Architecture.Mỗi khối bạn phân công đảm nhận (Tiến hành từ ngày 30/3 đến ngày 13/4) Xuất kết Module Tổng hợp lại, tiến hành ghép nối khối ( bạn Trang) (Tiến hành từ ngày 13/4 đến ngày 17/4) Bắt đầu Test chương trình với nhiều input khác + Kiểm tra cho thỏa mãn FD, chưa chì tiến hành cải thiện chỉnh sửa + Tiến hành nâng cấp chức nên tối ưu + Cơng việc làm chung nhóm (Tiến hành từ ngày 17/4 đến ngày 27/4) Đóng gói chương trình bắt đầu viết báo cáo tổng thể cho Project (Tiến hành thời gian lại đến ngày 25/5) Chú ý: Trong khoảng thời gian, phải nộp báo tiến trình công việc cho thầy hướng dẫn, Trang nhận viết báo cáo.Các bạn làm phần tổng hợp lại 10 Khối bao gồm class chính: Khối quản lí camara Class Camara ClassHelloActivity + Ban đầu cần tạo lớp publicclassCamaraView extends từ Activity, giao diện đồng thời implements từ Interface SurfaceHolder.Callback OnTouchListener để sử dụng phương thức chụp ảnh + Cũng Activity thơng thường phương thức onCreate( ) mặc định tạo lớp CamaraView việc thực kết nối file giao diện( xml) file code(.java) thông qua câu lệnh setContentView(R.layout.main); capture file xml chứa layout camera + Đối tượng SurfaceView: Tạo đối tượng SurfaceView tên mSurfaceView, 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 quản lý SurfaceView thông qua interface Callback, mục đích để thơng báo SurfaceView tạo,hủy hay thay đổi qua phương thức publicvoid surfaceCreated, surfaceChanged(), surfaceDestroyed() surface Bên cạnh đó,ta thiết lập Surface loại “push” phù hợp với Camera Preview: mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); Tiếp theo mCamera = Camera.open(); Hàm gọi surface tạo Vì hàm open camera để sử dụng cho sau Bước tiếp, thiết lập thông số params.height = (int)h; params.width = (int)w; cho Camera thông qua phương thức surfaceChanged( ), khởi động camera preview tức vẽ hình lên surface mà nhìn thấy hình điện thoại Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(w, h); mCamera.setParameters(p); try { mCamera.setPreviewDisplay(holder); } Khi kết thúc Application hàm surfaceDestroyed( ) gọi nhằm stopPreview release nhớ Camera: { mCamera.stopPreview(); 14 mPreviewRunning = false; mCamera.release(); } Lớp thứ hai tạo là: publicclass HelloActivity extends Activity {} Nhiệm vụ class tạo liên kết với layout.main tạo giao diện bao gồm hai đối tượng button: choosePictureButton ,chooseCameraBtn + ChoosePictureButton: Chọn cách lấy ảnh từ fide lưu máy + ChooseCamaraBtn: Chọn cách lấy ảnh từ Camara Sau chụp hình cardvisit camera thiết bị, hình ảnh chụp lưu vào thư mục thiết bị Đối tượng hiển thị ảnh 15 Quản lí xử lí hình ảnh Hình ảnh sau chụp hiển thị lên textview hình, xử lí kí tự fide ảnh thành fide dạng text Để hỗ trợ cho công việc dùng thư viện nhận dạng kí tự quang học VietOCR( Optical Character Recognition) Đây công nghệ áp dụng để nhận dạng ký tự định dạng file hình chuyển thành định dạng file text Phạm vi ứng dụng OCR thường ứng dụng phần mềm cài đặt máy tính tích hợp kèm với phần cứng (cụ thể máy Scanner) thiết lập ứng dụng trực tuyến Khó khăn hạn chế OCR + Các chương trình hỗ trợ OCR nhận dạng ký tự với tỷ lệ 90% chất lượng hình ảnh rõ nét font chữ thơng thường Đối với hình chất lượng kém, font chữ đặc biệt chữ viết tay kết cho không khả quan 16 + Đối với văn Tiếng Việt tỷ lệ phần trăm xác khơng cao so với văn ngôn ngữ khác + Sơ đồ khối bước: Bước 2: Lọc ảnh: Bước 1: Xử lí ban đầu: Chuyển ảnh màu -> đen trắng ( Binary) Bước 3:Nhận dạng thông tin Chia cắt để loại bỏ thành ảnh -> dạng text phần phụ, lọc nhiễu Bước 1: Xử lí ban đầu + Chuyển ảnh từ Mầu sang Đen trắng (Binary), tức hai mức 255 để dễ xử lí, dùng hàm Pix TeserractOCV để trả dạng matric Tạo đối tượng pic_bin sau xử lí xong, tiếp làm việc với đối tượng + Đ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 hozArray = new ArrayList(); int i = 0; 17 Bước 2:Lọc ảnh + Cắt ngang cắt dọc ảnh nhằm phân đoạn thành ảnh nhỏ sử dụng hàm “splitHoz” “splitVer” (tự viết) lớp “Algorithm.java” Thuật toán là: đặc điểm ảnh kí tự (ảnh trắng, kí tự đen) có khoảng trắng Dựa vào đặc điểm ta xây dựng lên hàm “splitHoz” “splitVer” cách kiểm tra dòng (cột), kiểm tra giá trị tổng hàng(cột) Nếu hàng(cột) có pixcel đen (tức có giá trị 0) -> tổng nhỏ số hàng(cột) * 255 Dựa vào ta cắt ảnh ban đầu thành nhiều ảnh nhỏ để giúp bước sau xử lí nhanh lúc ta loại bỏ hình ảnh không liên quan đến thông tin chủ thẻ, giảm nhiễu phần tử gây trình nhận dạng + Code viết publicstaticint sum (Pix m, int rowStart, int rowEnd, int colStart, int colEnd) { int result=0; Pix sub = submat(m, rowStart, rowEnd, colStart, colEnd); result = sumElems(sub); return result; } // Lay matrix // Vi Du: submat(img,2,10,5,8) -> lay matrix voi column:5-7 & row:2-9 publicstatic Pix submat(Pix img,int rowStart, int rowEnd, int colStart, int colEnd) { Pix subImg = newPix(colEnd-colStart,rowEnd-rowStart,0); // Viet code o day return subImg; } //Tinh tong cua mot matrix 18 publicstaticint sumElems(Pix img) { int sum = 0; for(int i=0; i