Bài toán nhận dạng đóng vai trò quan trọng trong nhiều ứng dụng thực tế như: giám sát an ninh, giao thông, nhận dạng trong y học, nhận dạng đối tượng, nhận dạng khuôn mặt, nhận dạng chữ,
Trang 1`
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM
Trang 2Công trình được hoàn thành tại
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM
Người hướng dẫn khoa học: TS PHẠM ANH PHƯƠNG
Phản biện 1: PGS.TS Võ Trung Hùng
Phản biện 2: GS.TS Nguyễn Thanh Thủy
Luận văn đã bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ Hệ thống thông tin, họp tại Đại học Đà Nẵng
vào ngày 30 tháng 7 năm 2017
Có thể tìm hiểu luận văn tại:
- Thư viện Trường Đại học Sư phạm, Đại học Đà Nẵng
Trang 3MỞ ĐẤU
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại hiện nay, với sự phát triển mạnh mẽ của công nghệ thông tin, bài toán nhận dạng là một lĩnh vực đang được quan tâm và phát triển Bài toán nhận dạng đóng vai trò quan trọng trong nhiều ứng dụng thực tế như: giám sát an ninh, giao thông, nhận dạng trong y học, nhận dạng đối tượng, nhận dạng khuôn mặt, nhận dạng chữ, nhận dạng tiếng nói, phát hiện chuyển động, theo dõi chuyển động,…
Cùng với sự thúc đẩy của quá trình tin học hóa trong lĩnh vực y
tế, đầu tháng 7 năm 2016, Bảo hiểm xã hội Việt Nam đã triển khai việc cấp phát thẻ bảo hiểm y tế (BHYT) theo cấu trúc mã thẻ mới có
mã vạch 2 chiều cho tất cả các đối tượng tham gia BHYT, việc sử dụng thẻ BHYT mã vạch 2 chiều đã mang lại nhiều tiện ích cho các
cơ sở khám chữa bệnh và người dân tham gia BHYT khi đi khám chữa bệnh, đảm bảo sự chính xác thông tin trong việc cấp phát thẻ BHYT cho bệnh nhân Tuy nhiên trong quá trình triển khai còn gặp nhiều những khó khăn như: việc đầu tư cơ sở vật chất chưa đồng bộ, cần có lộ trình và kinh phí, trình độ tin học, công nghệ thông tin của nhân viên ở các cơ sở khám chữa bệnh vẫn chưa theo kịp đà phát triển của công nghệ…, một vấn đề khó khăn nữa là một số thẻ mới phát hành đã bị mờ, mực in bị bong tróc, không rõ thông tin, máy không đọc được mã vạch…gây khó khăn cho người dân lẫn các cơ sở khám chữa bệnh, nhiều người ở xa đến, không khám bảo hiểm được phải tự chi trả hoặc phải quay về xin cấp lại thẻ, mất thời gian, khó khăn và tốn kém cho người bệnh
Xuất phát từ thực tiễn trên, Tôi ứng dụng sức mạnh của công
Trang 4nghệ thông tin trong lĩnh vực máy học để thực hiện đề tài “Nghiên
cứu phương pháp nhận dạng chữ quang học và ứng dụng nhận dạng thẻ bảo hiểm y tế” Nhận dạng thẻ BHYT là một chương trình
hỗ trợ trong việc quản lý BHYT, từ kết quả nhận dạng mã số trên thẻ BHYT nó giúp người quản lý tìm kiếm, trích xuất được thông tin về bệnh nhân dựa trên thẻ BHYT một cách nhanh chóng, chính xác, hạn chế tình trạng trùng thẻ BHYT, đảm bảo cho việc thanh toán BHYT chính xác đạt hiệu quả cao, hạn chế tiêu cực, đồng thời theo dõi xuyên suốt quá trình điều trị bệnh của bệnh nhân Trong đề tài này, Tôi sẽ nghiên cứu một số phương pháp nhận dạng trong lĩnh vực nhận dạng chữ quang học Từ đó, chúng ta sẽ có cách nhìn rõ nét hơn
về lĩnh vực máy học, hiểu được tầm quan trọng và tính thực tiễn của
nó trong cuộc sống con người
2 MỤC TIÊU
- Nghiên cứu các phương pháp nhận dạng ảnh, nhận dạng ký
tự quang học và một số phương pháp trích chọn đặc trưng của ảnh
- Xây dựng, cài đặt thuật toán nhận dạng để giải quyết bài toán nhận dạng thẻ BHYT dựa trên việc thu thập số liệu, xây dựng cơ sở tri thức và ứng dụng trong việc nhận dạng thẻ BHYT
3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
3.1 Đối tượng nghiên cứu
Trang 54 PHƯƠNG PHÁP NGHIÊN CỨU
Để hoàn thành mục tiêu đề ra, tôi chọn phương pháp nghiên cứu lý thuyết và tiến hành ứng dụng thực nghiệm Cụ thể như sau:
- Về lý thuyết: Tham khảo các tài liệu lý thuyết liên quan
- Về thực nghiệm:
+ Thu thập dữ liệu ảnh thẻ BHYT để xây dựng cơ sở tri thức + Ứng dụng nhận dạng thẻ BHYT trên dữ liệu ảnh thu thập được
- Tìm hiểu về lập trình với OpenCV, Matlab
Chương 2: MẠNG NƠ-RON NHÂN TẠO
Chương 3: ỨNG DỤNG NHẬN DẠNG THẺ BHYT
Cuối cùng là phần kết luận và hướng nghiên cứu phát triển của luận văn
Trang 6CHƯƠNG 1 TỔNG QUAN VỀ NHẬN DẠNG CHỮ QUANG HỌC
Chương này giới thiệu khái quát về nhận dạng chữ quang học,
mô hình nhận dạng ký tự tổng quát, các khái niệm cơ bản về xử lý ảnh và một số kỹ thuật, phương pháp nhận dạng chữ áp dụng trong lĩnh vực nhận dạng
Cho đến nay các kết quả nghiên cứu nhận dạng ở lĩnh vực này vẫn còn hạn chế, các ứng dụng chủ yếu chỉ tập trung ở một số lĩnh vực hẹp Có nhiều mô hình, kỹ thuật tiên tiến trong lĩnh vực máy học đang được áp dụng cho bài toán nhận dạng chữ như: mạng nơ-ron nhân tạo, mô hình Markov ẩn, máy véc tơ hỗ trợ (SVM),
CHƯƠNG 2 MẠNG NƠ-RON NHÂN TẠO
Chương này giới thiệu về mạng nơ-ron nhân tạo Từ những đặc trưng, tính năng của mạng nơ-ron nhân tạo là mạng có khả năng học
và là một hệ thống gồm nhiều phần tử xử lý đơn giản cùng hoạt động
xử lý song song, cho phép nó có thể được áp dụng để giải các bài toán từ đơn giản đến phức tạp
Đặc biệt là bài toán phân lớp, đây là loại bài toán này đòi hỏi giải quyết vấn đề phân loại các đối tượng quan sát được thành các nhóm dựa trên các đặc điểm của các nhóm đối tượng đó Đồng thời là dạng bài toán cơ sở của rất nhiều bài toán trong thực tế như: nhận dạng chữ, tiếng nói, phân loại gen, phân loại chất lượng sản phẩm,…Do đó, mạng nơ-ron perceptron một lớp là thuật toán được lựa chọn để cài đặt ứng dụng trong việc nhận dạng thẻ
Trang 7CHƯƠNG 3 ỨNG DỤNG NHẬN DẠNG THẺ BHYT
Trong chương này, Tôi đưa một chương trình mô phỏng được xây dựng và cài đặt dựa trên thuật toán mạng nơ-ron perceptron một lớp truyền thẳng để huấn luyện, nhận dạng 18 chữ cái từ A đến Y và
10 chữ số từ 0 đến 9 và bộ dữ liệu mẫu gồm 200 file ảnh dùng để kiểm thử hận dạng Đây là các ký tự thường được dùng trong việc cấp phát mã số trên thẻ BHYT dùng trong việc khám chữa bệnh tại các cơ sở y tế Dựa trên kết quả nhận dạng được từ chương trình, người ta có thể dùng truy xuất dữ liệu và quản lý thẻ BHYT đạt hiệu quả qua đó nâng cao hiệu suất trong quản lý và đồng thời theo dõi xuyên suốt quá trình khám chữa bệnh cho bệnh nhân
3.1 BÀI TOÁN NHẬN DẠNG THẺ BẢO HIỂM Y TẾ
Nhận dạng thẻ BHYT là một chương trình hỗ trợ trong hệ thống quản lý BHYT, mô tả bài toán như sau:
- Đầu vào: Dữ liệu là các file ảnh dạng văn bản có định dạng
*.JPG trải qua các giai đoạn tiền xử lý: xử lý ảnh nhiễu, phân ngưỡng, lọc ảnh , phân tích ảnh và tách ký tự theo từng vùng sau đó được huấn huyện dựa trên mạng nơ-ron nhân tạo và nhận dạng đưa ra kết quả
- Đầu ra: là một file text chứa các ký tự tương ứng với mã thẻ
BHYT mà chương trình mong muốn Số ký tự đầu ra mong muốn phải tương ứng với số ký tự ảnh đầu vào cần huấn luyện
Dựa trên kết quả mã thẻ BHYT đã được nhận dạng, giúp người quản lý có thể dùng để tìm kiếm, trích xuất được thông tin về bệnh nhân một cách nhanh chóng, chính xác, hạn chế tình trạng trùng
Trang 8thẻ BHYT, đảm bảo cho việc thanh toán BHYT chính xác đạt hiệu quả cao, đồng thời có thể theo dõi xuyên suốt quá trình điều trị bệnh của bệnh nhân
3.2 CƠ SỞ DỮ LIỆU THỰC NGHIỆM
Tập dữ liệu mẫu dùng để huấn luyện chứa 28 file ảnh, với kích thước 16×20, định dạng *.JPG, tương ứng với từng ký tự: gồm các ký tự số từ 0 đến 9 và các ký tự chữ cái gồm A, B, C, D, E, G, H,
<Mã thẻ BHYT>.JPG
Ví dụ: CH4480405300003.JPG
Hình 3.2 Mẫu thẻ BHYT dùng để kiểm thử
Trang 93.3 MÔ HÌNH NHẬN DẠNG THẺ BHYT
Hình 3.3 Mô hình nhận dạng thẻ BHYT
Trang 10HN, TC, TQ, TA, TY, TE, HG, LS, CN, HS, GD, TL, XV, NO
- Ô thứ hai 01 ký tự: Được ký hiệu bằng số (theo thứ tự từ 1 đến 5), quy định mức hưởng BHYT
- Ô thứ ba 02 ký tự: Được ký hiệu bằng số từ 01 đến 99 là mã
tỉnh, thành phố trực thuộc trung ương, nơi phát hành thẻ BHYT
- Ô thứ tư 02 ký tự: Được ký hiệu bằng số từ 01 đến 99 là mã quận, huyện, thị xã, thành phố trực thuộc tỉnh nơi quản lý đầu mối của người tham gia BHYT
- Ô thứ năm 03 ký tự: Được ký hiệu bằng số từ 001 đến 999 là
mã đơn vị quản lý, theo địa giới hành chính và theo loại đối tượng
Trang 11- Ô thứ sáu 05 ký tự: Được ký hiệu bằng số từ 00001 đến
99999 là số thứ tự của người tham gia BHYT trong 01 đơn vị
3.3.2 Tiền xử lý
Giai đoạn này góp phần làm tăng độ chính xác phân lớp của hệ thống nhận dạng, tuy nhiên nó cũng làm cho tốc độ nhận dạng của hệ thống chậm lại Vì vậy, tùy thuộc vào chất lượng ảnh quét vào để chọn một hoặc một vài chức năng trong khối này Nếu cần ưu tiên tốc độ xử
lý và chất lượng của máy quét tốt thì có thể bỏ qua giai đoạn này
Ảnh đầu vào sau khi được xử lý là một ảnh có 256 mức xám, được tách nhiễu và phân ngưỡng và chỉ lấy những điểm trên ảnh có màu lân cận đen, các điểm còn lại chuyển về màu trắng Từ ảnh thu được ta nhị phân hóa thành ảnh nhị phân Mục đích của việc này là làm nổi phần mã thẻ và thông tin trên thẻ Sau đó, ảnh ta thu được là ảnh chỉ chứa những thông tin về thẻ và ta tìm góc nghiêng của ảnh (nếu có) và tiến hành quay ảnh bằng phép biến đổi Hough
3.3.2.1 Phép quay ảnh
Ý tưởng của việc áp dụng biến đổi Hough đã nêu ở chương 1 trong việc tìm góc nghiêng văn bản là dùng một mảng tích luỹ để đếm số điểm ảnh nằm trên một đường thẳng trong không gian ảnh Mảng tích luỹ là một mảng hai chiều với chỉ số hàng của mảng cho
khoảng cách từ gốc toạ độ tới đường thẳng đó Sau đó tính tổng số điểm ảnh nằm trên những đường thẳng song song nhau theo các góc lệch thay đổi Góc nghiêng văn bản tương ứng với góc có tổng giá trị mảng tích luỹ cực đại
thuộc khoảng [0:45] và ảnh không bị ngược
Trang 12Hình 3.5 Ảnh trước khi quay
Hình 3.6 Ảnh sau khi quay 3.3.2.2 Khử nhiễu
Như đã trình bày trong chương 1, lọc trung vị là một kỹ thuật
lọc phi tuyến, dùng để làm trơn ảnh hay là khử nhiễu, có lợi cho việc
Trang 13loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ phân giải
Ý tưởng chính của thuật toán lọc trung vị như sau: ta sử dụng một cửa sổ lọc (ma trận 3x3) quét qua lần lượt từng điểm ảnh của ảnh
đầu vào (input) Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh
tương ứng trong vùng 3x3 của ảnh gốc "lấp" vào ma trận lọc Sau đó sắp xếp các điểm ảnh trong cửa sổ này theo thứ tự (tăng dần hoặc giảm dần tùy ý) Cuối cùng, gán điểm ảnh nằm chính giữa (trung vị) của dãy giá trị điểm ảnh đã được sắp xếp ở trên cho giá trị điểm ảnh
đang xét của ảnh đầu ra (output) Kích thước của cửa sổ lọc thường
được chọn sao cho số điểm ảnh trong cửa sổ là lẻ, thường là: 3x3, 5x5, 7x7
Các bước cơ bản của kỹ thuật lọc trung vị:
- Quét cửa sổ lọc lên các thành phần của ảnh gốc; điền các giá trị được quét vào cửa sổ lọc
- Lấy các thành phần trong cửa sổ lọc để xử lý
- Sắp xếp theo thứ tự các thành phần trong cửa sổ lọc
- Lưu lại thành phần trung vị, gán cho ảnh đầu ra (output)
3.3.2.3 Phân ngưỡng
Khi xử lý ảnh trực tiếp ảnh từ không gian ảnh màu (RGB,…) hoặc ảnh xám đôi khi ta phải tiếp nhận một số lượng lớn thông tin từ ảnh Điều này có thể gây khó khăn cho việc xây dựng thuật toán và làm giảm tốc độ xử lý Vì thế việc phân ngưỡng ảnh - là trường hợp đặc biệt của khử nhiễu, để chuyển ảnh đầu vào về không gian ảnh nhị phân (vì chỉ có hai mức) như đã trình bày trong chương 1 nhằm để đơn giản hóa quá trình xử lý Phân ngưỡng là kỹ thuật đặt ngưỡng để
Trang 14hiển thị các tông màu liên tục, các điểm trong ảnh được so sánh với ngưỡng định trước Giá trị của ngưỡng sẽ quyết định điểm có được hiển thị hay không
Hình 3.7 Ảnh trước khi phân ngưỡng
Hình 3.8 Ảnh sau khi phân ngưỡng
Trang 153.3.4 Tách ký tự ảnh của mã thẻ
Vì ảnh thẻ BHYT có kích thước cố định, trước khi tiến hành việc tách các ký tự trong ảnh thẻ, ta hiệu chỉnh lại kích thước của ảnh thẻ, sau đó ta cắt mã thẻ dựa trên tọa độ điểm đầu (góc trên bên trái)
và điểm cuối (góc dưới bên phải) của khung hình chữ nhật chứa mã thẻ, tiếp tục thực hiện việc loại bỏ phần cạnh của hình chữ nhật bao quanh mã thẻ và tiến hành tách các ký tự của mã thẻ để phục vụ cho việc nhận dạng dựa vào mật độ phân bố các điểm đen trên ảnh khi chiếu lên các trục Ox và Oy, ta được kết quả như hình 3.9
Hình 3.9.Tách ký tự ảnh của mã thẻ
3.3.5 Huấn luyện và nhận dạng ký tự
Áp dụng mô hình mạng nơ-ron một lớp perceptron như đã trình bày ở chương 2, với lớp đầu vào gồm 320 nơ-ron tương ứng với
tương đương với 28 nơ-ron là dãy ký tự quy định thông tin đầu ra
Trang 163.3.5.1 Pha huấn luyện
- Dữ liệu đầu vào (input): Việc huấn luyện mạng dựa trên phương
pháp học có giám sát với tập mẫu học là {(x(k), t(k))}, trong đó:
x(k) = [x 1 (k), x 2 (k), …, x m (k)] là ảnh đầu vào
t(k) = [t 1 (k), t 2 (k), …, t n (k)] là nhãn (label) quan sát được và là
đầu ra như mong muốn
nơ-ron j tới nơ-nơ-ron i)
- Phương thức (method)
Quá trình học của mạng truyền thẳng một lớp
Với mỗi mẫu học {(x(k), t(k))}, k= 1,2, …, p các bước được
Xác định sai số ei tại nơ-ron i: ei = t i – y i , trong đó t i là giá trị
đầu ra mong muốn và y i là giá trị đầu ra tính toán tại nơ-ron thứ i.
Bước 3:
vào j tới nơ-ron i) theo công thức 3.2
Trang 17- Dữ liệu đầu ra: t(k) đầu ra như mong muốn
Sau quá trình học, đầu ra tính toán được y(k) sẽ bằng đầu ra với mẫu học t(k) thỏa phương trình
1
m T
Sau khi nhận dạng được các ký tự, ta tiến hành ghép các ký
tự lại thành mã thẻ BHYT để phục vụ cho công việc
3.4 MÔI TRƯỜNG CÀI ĐẶT
Chương trình ứng dụng được cài đặt và chạy thử nghiệm trên:
- Cấu hình máy tính: Intel Core i3 , CPU 2,27 Ghz, Ram 4GB
- Hệ điều hành: Windows 7
- Ngôn ngữ cài đặt: Cshap (C#)
- Công cụ hỗ trợ: Visual Sutdio 8
Trang 183.5 GIAO DIỆN CHƯƠNG TRÌNH
3.5.1 Giao diện chính của chương trình
Chương trình gồm 4 chức năng cơ bản như hình 3.10
- Chọn ảnh của thẻ
- Cắt mã thẻ
- Huấn luyện
- Nhận dạng
Hình 3.70 Giao diện của chương trình
3.5.2 Các chức năng trong chương trình
3.5.2.1 Chọn ảnh thẻ BHYT
Dùng để chọn ảnh thẻ BHYT (hình 3.11) cần nhận dạng, ảnh đầu vào sau khi được xử lý là một ảnh có 256 mức xám, được tách
Trang 19nhiễu và phân ngưỡng và chỉ lấy những điểm trên ảnh có màu lân cận đen, các điểm còn lại chuyển về màu trắng Từ ảnh thu được ta nhị phân hóa thành ảnh nhị phân Mục đích của việc này là làm nổi phần
mã thẻ và thông tin trên thẻ Sau đó, ảnh ta thu được là ảnh chỉ chứa những thông tin về thẻ và ta tìm góc nghiêng của ảnh (nếu có) và tiến hành quay ảnh bằng phép biến đổi Hough
Hình 3.11 Chọn ảnh thẻ BHYT 3.5.2.2 Cắt mã thẻ
Khi ảnh đã được xử lý ở chức năng “Chọn ảnh của thẻ” ta tiến hành cắt mã thẻ như hình 3.12
Trang 20Hình 3.12 Cắt mã thẻ BHYT
Việc cắt mã thẻ dựa trên phép chiếu trên trục Ox, Oy, ta nhận được một khung hình chữ nhật chứa các ký tự của mã thẻ Ta tiếp tục loại bỏ phần cạnh của hình chữ nhật bao quanh mã thẻ và sau đó tiến hành tách các ký tự dựa trên mật độ phân bổ các điểm đen trên ảnh như hình 3.13
Trang 21Hình 3.83 Kết quả cắt mã thẻ BHYT 3.5.2.3 Huấn luyện
Áp dụng mô hình mạng nơ-ron một lớp perceptron để thực hiện việc huấn luyện (hình 3.14) dựa trên tập cơ sở dữ liệu thực nghiệm gồm 28 ký tự trong đó có 18 ký tự là các chữ cái từ A đến Y
và 10 chữ số từ 0 đến 9 Sau khi huấn luyện sẽ tạo ra một ma trận