1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng

83 9 0

Đ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

Thông tin cơ bản

Tiêu đề Ứng Dụng Xử Lý Ảnh Trong Việc Nhận Dạng Và Trích Xuất Thông Tin, Dữ Liệu Trong Các Tờ Hóa Đơn Bán Hàng
Định dạng
Số trang 83
Dung lượng 5,64 MB

Cấu trúc

  • Chương 1: TỔNG QUAN (8)
    • 1.1 Tính cấp thiết của đề tài, ý nghĩa khoa học và thực tiễn của đề tài (8)
    • 1.2 Tổng quan về hướng nghiên cứu (8)
    • 1.3 Mục đích nghiên cứu và đối tượng nghiên cứu của đề tài (10)
    • 1.4 Nhiệm vụ và giới hạn của đề tài (10)
      • 1.4.1 Nhiệm vụ (10)
      • 1.4.2 Giới hạn đề tài (11)
    • 1.5 Phương pháp nghiên cứu (11)
  • Chương 2: CƠ SỞ LÝ THUYẾT (13)
    • 2.1 Phương pháp xử lý ảnh (13)
      • 2.1.1 Tổng quan (13)
      • 2.1.2 Điểm ảnh (14)
      • 2.1.3 Độ phân giải của ảnh (15)
      • 2.1.4 Nén ảnh (15)
      • 2.1.5 Trích chọn đặc điểm (16)
    • 2.2 Không gian màu (16)
      • 2.2.1 Không gian màu xám (16)
      • 2.2.3 Không gian màu CMYK (17)
      • 2.2.4 Không gian màu HSV (18)
      • 2.2.5 Chuyển đổi giữa các không gian màu (19)
  • Chương 3: CÔNG CỤ (21)
    • 3.1 Mã nguồn mở thị giác máy (OpenCV – Open Source Computer Vision) (21)
      • 3.1.1 Giới thiệu (21)
      • 3.1.2 Một số phép xử lý trong OpenCV (21)
    • 3.2 PHẦN MỀM QT CREATOR (31)
      • 3.2.1 Giới thiệu (31)
      • 3.2.2 Các lớp của QT Creator (31)
      • 3.2.3 GUI trên QT Creator (35)
  • Chương 4: GIẢI THUẬT SVM (SUPPORT VECTOR MACHINES) (0)
    • 4.1 Giới thiệu (40)
    • 4.2 Ứng dụng (41)
    • 4.3 SVM tuyến tính (41)
      • 4.3.1 Biên cứng (42)
      • 4.3.2 Biên mềm (43)
    • 4.4 SVM phi tuyến (43)
    • 4.5 Tính toán bộ phân loại SVM (44)
      • 4.5.1 Bài toán gốc (45)
      • 4.5.2 Bài toán đối ngẫu (45)
      • 4.5.3 Thủ thuật kernel (46)
      • 4.5.4 Các phương pháp hiện đại (46)
    • 4.6 Giảm thiểu sai số thực nghiệm (47)
      • 4.6.1 Giảm thiểu sai số (48)
      • 4.6.2 Chuẩn hóa và ổn định (48)
      • 4.6.3 SVM và sự mất bản lề (48)
      • 4.6.4 Hàm mục tiêu (49)
    • 4.7 Thuộc tính (50)
      • 4.7.1 Lựa chọn thông số (50)
      • 4.7.2 Các hạn chế (50)
  • Chương 5: GIẢI THUẬT (51)
    • 5.1 Lưu đồ giải thuật (51)
      • 5.1.1 Lưu đồ giải thuật tổng quát (51)
      • 5.1.2 Lưu đồ giải thuật chương trình tách ký tự (52)
      • 5.1.3 Lưu đồ giải thuật chương trình huấn luyện (53)
      • 5.1.4 Lưu đồ giải thuật chương trình nhận dạng và lưu trữ (54)
    • 5.2 Xác định dòng và tách ký tự (55)
      • 5.2.1 Các bước xử lý cơ bản (55)
      • 5.2.2 Xóa các đường kẻ (56)
      • 5.2.3 Tách dòng và ký tự (58)
    • 5.3 Huấn luyện (61)
      • 5.3.1 Tạo tập mẫu huấn luyện (61)
      • 5.3.2 Huấn luyện tạo thư viện nhận dạng (63)
    • 5.4 Nhận dạng và lưu trữ (66)
  • Chương 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN (71)
    • 6.1 Kết quả (71)
    • 6.2 Hướng phát triển (72)
  • Tài liệu tham khảo (76)

Nội dung

TỔNG QUAN

Tính cấp thiết của đề tài, ý nghĩa khoa học và thực tiễn của đề tài

Nhận dạng ký tự quang học (OCR) bắt nguồn từ công nghệ máy điện báo và được phát triển để tạo ra máy đọc cho người mù Mục tiêu là cung cấp cho người mù một thiết bị có khả năng đọc văn bản và chuyển đổi nội dung đó thành âm thanh, thông qua việc sử dụng máy quét văn bản phẳng kết hợp với bộ tổng hợp văn bản thành lời nói.

Công nghệ nhận dạng ký tự quang học (OCR) đã phát triển mạnh mẽ và ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm nhập dữ liệu cho tài liệu kinh doanh, nhận diện biển số xe, và chuyển đổi tài liệu in thành văn bản Điều này giúp tìm kiếm thông tin chính xác hơn từ hình ảnh, chẳng hạn như tra cứu tài liệu thông qua hình ảnh chứa thông tin liên quan.

Việc nhập dữ liệu từ hóa đơn là rất quan trọng để doanh nghiệp theo dõi tình hình thu chi, nguyên vật liệu, nguồn vốn, và số lượng sản phẩm Tuy nhiên, quy trình này tốn nhiều thời gian khi phải nhập từng thông tin Giải pháp hiệu quả là sử dụng phần mềm nhận dạng ký tự, cho phép tự động trích xuất thông tin từ hóa đơn và chuyển đổi thành văn bản dữ liệu Nhờ đó, người nhập liệu chỉ cần hiệu chỉnh, tiết kiệm thời gian và giảm tải khối lượng công việc.

Tổng quan về hướng nghiên cứu

Nhận dạng ký tự quang học (OCR) là phần mềm máy tính được phát triển để chuyển đổi hình ảnh chữ viết thành văn bản tài liệu Công nghệ này ra đời vào đầu thế kỷ 20 và thuộc lĩnh vực nghiên cứu nhận dạng mẫu, trí tuệ nhân tạo và thị giác máy.

Hiện nay, có nhiều nghiên cứu về nhận dạng ký tự, trong đó nổi bật là mã nguồn mở Tesseract, được Google tài trợ Tesseract là một công cụ nhận dạng ký tự quang học, hỗ trợ nhận diện 108 ngôn ngữ khác nhau trên toàn cầu Đặc biệt, độ chính xác của Tesseract có thể đạt trên 90% tùy thuộc vào từng ngôn ngữ.

In the article "Text Detection and Character Recognition in Scene Images with Unsupervised Feature Learning," a research team from Stanford University's Computer Science Department, including Adam Coates, Blake Carpenter, Carl Case, Sanjeev Satheesh, Bipin Suresh, Tao Wang, David J Wu, and Andrew Y Ng, presents a method for detecting and recognizing characters in outdoor images using unsupervised learning techniques, achieving an impressive accuracy of 85.5%.

Trong bài báo "Trích xuất và phân tích thông tin văn bản từ hình ảnh bằng các kỹ thuật xử lý ảnh số", tác giả Partha Sarathi Giri thuộc Khoa Điện tử và Truyền thông, M.E.M.S, Balasore, Odisha đã giới thiệu hai phương pháp trích xuất văn bản từ hình ảnh: phương pháp cạnh cơ sở và phương pháp liên kết các thành phần cơ sở.

Với bài báo “Automatic Text Recognition From Raster Maps” của tác giả Yao-

Yi Chiang và Craig A Knoblock từ Đại học Nam California đã trình bày một phương pháp nhận dạng ký tự trên bản đồ Raster, tập trung vào việc xác định nhãn cho các đoạn ký tự có kích cỡ và phương hướng khác nhau Phương pháp này bao gồm việc xoay các nhãn ký tự theo chiều kim đồng hồ và ngược chiều kim đồng hồ cho đến khi đạt được hướng chính xác, sau đó thực hiện nhận dạng ký tự bằng phần mềm ABBYY FineReader 10 Trong khi đó, bài báo “An Arabic Baseline Estimation Method Based on Feature Points Extraction” của nhóm tác giả Arwa AL-Khatatneh, Sakinah Ali Pitchay và Musab Al-qudah đã giới thiệu một phương pháp tiền xử lý nhận dạng ký tự thông qua phân tích và trích xuất các điểm đặc trưng từ các đoạn ký tự.

Trong bài báo "Text Extraction and Recognition from Mixed Images" của nhóm tác giả L Ramesh và E Dinesh, phương pháp phân vùng các vùng màu tương đương được đề xuất, chia thành ba cụm: cụm chưa thông tin, cụm nền và cụm nhiễu Các cụm này sau đó được ghép nối bằng các kỹ thuật ghép nối phần tử Kết quả nhận dạng cho thấy hiệu suất tốt, tuy nhiên, vẫn xuất hiện một số lỗi trong những hình ảnh có nền phức tạp.

Bài báo "Nhận Dạng Bìa Sách Tiếng Việt Cho Ứng Dụng Quản Lý Sách" của nhóm tác giả Phan Thị Thanh Nga, Nguyễn Thị Huyền Trang, Nguyễn Văn Phúc, Thái Duy Quý và Võ Phương Bình trình bày phương pháp nhận dạng bìa sách tiếng Việt Nhóm tác giả đã sử dụng mã nguồn mở Tesseract để thực hiện nhận dạng ký tự, đạt độ chính xác khoảng 80%.

Mục đích nghiên cứu và đối tượng nghiên cứu của đề tài

Với tính cấp thiết của đề tài như trên thì người nghiên cứu đã lựa chọn đề tài

Ứng dụng xử lý ảnh trong nhận dạng và trích xuất thông tin từ các tờ hóa đơn bán hàng là một đề tài quan trọng cho luận văn tốt nghiệp thạc sĩ chuyên ngành Kỹ thuật Điện Tử Nghiên cứu này tập trung vào việc phát triển các phương pháp hiệu quả để tự động hóa quá trình thu thập dữ liệu từ hóa đơn, nhằm nâng cao độ chính xác và giảm thiểu sai sót trong việc quản lý thông tin Việc áp dụng công nghệ xử lý ảnh không chỉ giúp tiết kiệm thời gian mà còn cải thiện khả năng phân tích dữ liệu trong lĩnh vực thương mại.

Mục tiêu nghiên cứu của đề tài là xây dựng một chương trình có khả năng nhận dạng và trích xuất thông tin từ các tờ hóa đơn bán hàng Người nghiên cứu hy vọng rằng công trình của mình sẽ góp phần nhỏ vào sự phát triển của lĩnh vực thị giác máy tại Việt Nam trong tương lai Đối tượng nghiên cứu được xác định là việc phát triển chương trình nhận dạng và trích xuất thông tin.

Nhiệm vụ và giới hạn của đề tài

1.4.1 Nhiệm vụ Để nhận dạng và trích xuất được thông tin trong một tờ hóa đơn bán hàng đề tài cần thực hiện những nhiệm vụ: Xác định dòng và tách ký tự, huấn luyện nhận dạng và lưu trữ ký tự Trong đó:

Nhiệm vụ xác định dòng và tách ký tự là quá trình xác định vị trí các dòng chứa ký tự và phân tách chúng thành các ký tự độc lập để nhận dạng Để thực hiện nhiệm vụ này, chúng tôi sử dụng thư viện mã nguồn mở OpenCV và một số phân lớp trong phần mềm QT Creator, dựa trên nền tảng C++.

Nhiệm vụ huấn luyện dữ liệu bao gồm việc tạo ra một tập mẫu ký tự, từ đó tiến hành huấn luyện để xây dựng một thư viện ký tự nhận dạng sử dụng thuật toán SVM (Support Vector Machines).

Nhiệm vụ nhận dạng và lưu trữ ký tự là bước cuối cùng sau khi tách từng ký tự và có thư viện huấn luyện Để thực hiện nhận dạng, chúng ta so sánh các ký tự đã tách với thư viện nhận dạng đã được huấn luyện Sau khi nhận dạng thành công, ký tự sẽ được lưu trữ theo địa chỉ đã xác định trong nhiệm vụ đầu tiên, với dữ liệu được lưu dưới dạng file Excel Chúng ta sử dụng các phân lớp của phần mềm lập trình QT Creator để hoàn thành nhiệm vụ này.

Hình 1.1: Sơ đồ khối hệ thống nhận dạng và trích xuất thông tin hóa đơn

- Đề tài thực hiện nhận dạng và trích xuất thông tin từ mẫu hóa đơn được đánh máy bằng chữ in hoa font chữ Arial cỡ chữ từ 12 tới 16

- Các mẫu hóa đơn không có Merge dòng, hình ảnh hóa đơn được chụp có độ rõ nét, không quá mờ, không nghiêng.

Phương pháp nghiên cứu

Trong quá trình nghiên cứu, người nghiên cứu sử dụng các phương pháp sau:

- Phương pháp phân tích và tổng hợp lý thuyết: được sử dụng trong quá trình nghiên cứu lý thuyết được trình bày trong phần cơ sở lý thuyết

- Phương pháp phân loại và hệ thống hóa lý thuyết: được dùng trong quá trình tham khảo các bài báo khoa học trong nước và quốc tế

- Phương pháp mô hình hóa: được dùng trong quá trình xây dựng nên sơ đồ khối của hệ thống đề tài

- Phương pháp quan sát khoa học: được dùng nhiều khi tiến hành thực nghiệm

- Phương pháp thực nghiệm khoa học: được sử dụng trong quá trình tiến hành thực nghiệm đề tài

- Phương pháp phân tích tổng kết kinh nghiệm: được thực hiện trong quá trình kiểm tra và đánh giá dữ liệu thu được từ kết quả thực nghiệm.

CƠ SỞ LÝ THUYẾT

Phương pháp xử lý ảnh

Xử lý ảnh là một lĩnh vực khoa học và công nghệ đang phát triển nhanh chóng, thúc đẩy nghiên cứu và ứng dụng, đặc biệt là trong việc sử dụng máy tính chuyên dụng Quá trình này bắt đầu từ việc thu nhận ảnh từ các nguồn như camera hoặc vệ tinh, sau đó chuyển đổi tín hiệu thành dạng số để xử lý, phân tích và lưu trữ Mục tiêu chính của xử lý ảnh là tăng cường chất lượng hình ảnh, làm cho chúng trở nên đẹp hơn và rõ nét hơn Ảnh được coi là thông tin về hình dáng, màu sắc của vật thể mà con người quan sát được Đối tượng chính của xử lý ảnh là ảnh chụp tự nhiên, trong đó nội dung được cải thiện thông qua dữ liệu ảnh nhằm nâng cao chất lượng hiển thị Ảnh thường được phân loại thành ảnh đơn (Image) và chuỗi ảnh (video), nhưng trong bài viết này, chúng ta sẽ tập trung vào ảnh đơn Ảnh đơn biểu diễn dữ liệu thông qua hàm độ chói I(x,y), với x và y là tọa độ trong mặt phẳng ảnh.

Ảnh số là một dạng biểu diễn và lưu trữ ảnh tĩnh, được tạo ra thông qua quá trình lấy mẫu và lượng tử hóa Dữ liệu ảnh màu được biểu diễn bằng ba hàm độ chói cho ba màu cơ bản: đỏ (R), xanh lá (G) và xanh lam (B) Ảnh số được thể hiện dưới dạng ma trận điểm ảnh I[m,n], trong đó mỗi phần tử gọi là điểm ảnh (pixel) Giá trị của mỗi pixel phụ thuộc vào loại ảnh: ảnh nhị phân chỉ cần 1 bit cho 2 mức giá trị, ảnh đa mức xám cần 8 bits để biểu diễn 256 mức giá trị, trong khi ảnh màu có thể yêu cầu từ 8 bits trở lên tùy thuộc vào số lượng và chất lượng màu.

Hệ màu RGB yêu cầu 24 bits/pixel, tương đương với 3 kênh màu mỗi kênh 8 bits Do đó, xử lý ảnh trở thành việc thao tác trên các phần tử của ma trận điểm ảnh.

Một bức ảnh số được biểu diễn bởi ma trận điểm ảnh I[m,n], trong đó mỗi điểm ảnh có tọa độ [m,n] và giá trị màu I Các phép xử lý ảnh có thể tác động đến tọa độ của điểm ảnh, làm thay đổi vị trí và hình khối trong ảnh, gọi là xử lý hình học Ngoài ra, các phép xử lý cũng ảnh hưởng đến giá trị màu I của điểm ảnh, được gọi là xử lý nội dung Thông thường, xử lý hình học không làm thay đổi nội dung ảnh và thường được sử dụng trong hiển thị hình ảnh, trong khi xử lý nội dung thay đổi giá trị màu của điểm ảnh, tạo ra những hiệu ứng cảm nhận khác nhau.

Không phải bức ảnh nào cũng đẹp và rõ nét, đặc biệt là khi vật thể chụp đã xấu Thực tế, ảnh càng rõ nét thì những khuyết điểm càng lộ rõ, khiến cho bức ảnh trở nên kém hấp dẫn hơn Trong trường hợp này, thay vì mong muốn ảnh rõ hơn, chúng ta cần làm mờ để giảm thiểu sự chú ý vào những điểm xấu Để thực hiện điều này, ta sử dụng bộ lọc thông thấp (Lowpass filter) để giữ lại các sóng tần số thấp, loại bỏ các sóng tần số cao mà chỉ tạo ra độ sắc nét không mong muốn, biến chúng thành nhiễu trong ảnh.

2.1.2 Điểm ảnh Ảnh gốc (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính, ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y) Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh

2.1.3 Độ phân giải của ảnh Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị

Khoảng cách giữa các điểm ảnh cần được lựa chọn sao cho mắt người vẫn nhận thấy sự liên tục của hình ảnh Lựa chọn khoảng cách thích hợp sẽ tạo ra mật độ phân bổ, hay còn gọi là độ phân giải, được phân bố theo trục x và y trong không gian hai chiều.

Để giảm thiểu không gian lưu trữ, nén ảnh thường được thực hiện theo hai phương pháp: nén có bảo toàn thông tin và nén không bảo toàn Nén không bảo toàn thường đạt tỷ lệ nén cao hơn, nhưng khả năng phục hồi thông tin kém hơn Dựa trên hai phương pháp này, có bốn cách tiếp cận cơ bản trong nén ảnh.

Kỹ thuật nén ảnh thống kê dựa vào tần suất xuất hiện của các giá trị điểm ảnh để phát triển chiến lược mã hóa hiệu quả Một ví dụ tiêu biểu cho phương pháp mã hóa này là định dạng *.TIF.

Nén ảnh không gian là một kỹ thuật mã hóa dựa trên vị trí không gian của các điểm ảnh, tận dụng sự tương đồng giữa các điểm ảnh trong các vùng lân cận Một ví dụ tiêu biểu cho kỹ thuật này là mã nén *.PCX.

Nén ảnh sử dụng phép biến đổi là một kỹ thuật tiếp cận nén không bảo toàn, mang lại hiệu quả cao hơn so với các phương pháp nén khác Định dạng JPG là một ví dụ điển hình cho kỹ thuật nén này.

Nén ảnh Fractal là một kỹ thuật sử dụng tính chất Fractal của các đối tượng ảnh, giúp thể hiện sự lặp lại của các chi tiết Phương pháp này cho phép lưu trữ chỉ phần gốc của ảnh cùng với quy luật sinh ra ảnh dựa trên nguyên lý Fractal, từ đó tiết kiệm không gian lưu trữ mà vẫn đảm bảo chất lượng hình ảnh.

Các đặc điểm của đối tượng được chọn lọc dựa trên mục đích nhận dạng trong quá trình xử lý ảnh Một số đặc điểm quan trọng của ảnh bao gồm màu sắc, hình dạng, kết cấu và kích thước, giúp nâng cao độ chính xác trong việc nhận diện và phân loại đối tượng.

• Đặc điểm không gian: Phân bố mức xám, phân bố xác suất, biên độ, điểm uốn v.v

Các đặc điểm loại này được xác định thông qua quá trình lọc vùng (zonal filtering) Các bộ vùng, hay còn gọi là “mặt nạ đặc 10 điểm” (feature mask), thường có hình dạng đa dạng như chữ nhật, tam giác, hay cung tròn.

Đặc điểm biên và đường biên đóng vai trò quan trọng trong việc nhận dạng đối tượng, giúp trích xuất các thuộc tính bất biến Những đặc điểm này có thể được khai thác thông qua các toán tử như gradient, la bàn, Laplace, và toán tử "chéo không" (zero crossing).

Không gian màu

Không gian màu là mô hình toán học mô tả màu sắc thực tế bằng số học, với nhiều loại không gian màu khác nhau phục vụ cho các mục đích riêng Bài viết này sẽ khám phá ba không gian màu cơ bản thường được sử dụng, bao gồm hệ màu RGB, HSV và CMYK.

Không gian màu xám là một loại không gian màu trong đó mỗi điểm ảnh chỉ mang cường độ thông tin, thường được gọi là ảnh đen trắng Tuy nhiên, thuật ngữ này không hoàn toàn chính xác vì ảnh đen trắng chỉ có hai mức giá trị: 0 (màu đen) và 1 (màu trắng) Trong khi đó, ảnh xám có dải màu với 255 mức giá trị, trong đó màu đen tương ứng với giá trị 0 và màu trắng với giá trị 255.

RGB là không gian màu phổ biến trong đồ họa máy tính và thiết bị kỹ thuật số, dựa trên sự kết hợp của ba màu cơ bản: đỏ (R), xanh lục (G) và xanh lam (B) để tạo ra mọi màu sắc khác.

Một ảnh số được mã hóa bằng 24 bit, với 8 bit cho mỗi kênh màu R, G, B, cho phép mỗi kênh nhận giá trị từ 0 đến 255 Sự kết hợp của các giá trị khác nhau từ ba kênh màu này tạo ra nhiều màu sắc khác nhau, dẫn đến tổng cộng khoảng 16.7 triệu màu sắc có thể.

Ví dụ: Màu đen là sự kết hợp của các kênh màu (R, G, B) với giá trị tương ứng

Màu sắc trong hệ thống RGB được định nghĩa bằng các giá trị như màu trắng (255, 255, 255), màu vàng (255, 255, 0) và màu tím đậm (64, 0, 128) Khi sử dụng 16bit để mã hóa một kênh màu, tổng dãi màu cho cả ba kênh sẽ đạt tới 3*2^16, tạo ra một số lượng màu sắc rất lớn.

Hình 2.1: Không gian màu RGB

CMYK là không gian màu chủ yếu trong ngành in ấn, sử dụng bốn màu cơ bản để pha trộn mực in Ba màu chính trong hệ thống này bao gồm Cyan (lục lam), Magenta (hồng), và Yellow (vàng), cùng với màu Black (đen) để tạo ra nhiều sắc thái khác nhau.

M = Magenta: hồng xẫm, và Y=Yellow: vàng để biểu diễn các màu sắc khác nhau

Khi kết hợp màu hồng xẫm với vàng, ta sẽ tạo ra màu đỏ, trong khi màu xẫm với xanh lơ cho ra màu xanh lam Sự kết hợp của ba màu này sẽ tạo thành màu đen, nhưng màu đen này không phải là đen tuyệt đối và thường có độ tương phản lớn Trong ngành in, để tiết kiệm mực, người ta thường thêm màu đen vào thay vì kết hợp ba màu trên để in các chi tiết màu đen, từ đó hình thành hệ màu CMYK Chữ K trong CMYK đại diện cho màu đen (Black), có thể do chữ B đã được sử dụng để biểu thị màu xanh (Blue), nên chữ cái cuối K được chọn để biểu diễn màu đen.

Nguyên lý hoạt động của hệ màu CMYK dựa trên việc loại bỏ dần màu trắng trên nền giấy trắng khi in các màu C, M, Y với tỉ lệ khác nhau, tạo ra màu sắc mong muốn Để in màu đen, thay vì kết hợp cả ba màu, người ta sử dụng màu đen trực tiếp Điều này khác biệt với hệ RGB, nơi các màu được kết hợp với nhau.

Hình 2.2: Không gian màu CMYK

HSV và HSL là hai không gian màu phổ biến trong chỉnh sửa và phân tích ảnh, cũng như trong lĩnh vực thị giác máy tính Chúng dựa trên ba thông số cơ bản để mô tả màu sắc, trong đó H (Hue) đại diện cho màu sắc.

S = Saturation: độ đậm đặc, sự bão hòa, V = Value: giá trị cường độ sáng

Không gian màu thường được mô tả dưới dạng hình trụ hoặc hình nón, với trục biểu diễn màu sắc (Hue) chạy từ 0 đến 360 độ Bắt đầu từ màu đỏ (red primary) ở 0 độ, tiếp theo là màu xanh lục (green primary) ở 120 độ, và từ 120 đến 240 độ là sự chuyển tiếp từ xanh lục sang xanh lam (blue primary) Cuối cùng, từ 240 đến 360 độ, màu sắc chuyển từ xanh lam về màu đen và trở lại màu đỏ.

Hình 2.3: Không gian màu HSV

2.2.5 Chuyển đổi giữa các không gian màu

2.2.5.1 Chuyển đổi giữa RGB và CMYK

Thành phần K trong hệ màu CMYK là yếu tố quan trọng để in các điểm màu đen Để chuyển đổi từ không gian màu RGB sang CMYK, trước tiên cần chuyển RGB sang CMY, sau đó xác định thành phần K từ CMY để hoàn thiện quá trình chuyển đổi sang CMYK.

❖ Công thức chuyển từ RGB sang CMY:

Việc xác định giá trị của K là một thách thức, do nó phụ thuộc vào nhà sản xuất công nghệ in Tuy nhiên, về lý thuyết, có thể chấp nhận rằng

❖ Chuyển từ CMY sang CMYK:

- Nếu K = 100 thì C = M = Y =0 (trường hợp in màu đen)

Và K = K Trong đó C, M, Y, K được làm tròn tới chỉ số nguyên

2.2.5.2 Chuyển đổi giữa RGB và HSV

❖ Giả sử ta có một điểm màu có giá trị trong hệ RGB là (R, G, B) ta chuyển sang không gian HSV như sau: Đặt M = Max(R, G, B), m = Min(R, G, B) và C = M - m

Trong trường hợp V hoặc C bằng 0, S = 0 Để chuyển từ HSV sang RGB ta làm như sau:

Giả sử ta có không gian màu HSV với H = [0, 360], S = [0, 1], V = [0, 1] Khi đó, ta tính:

X = C (1 - |H' mod 2 -1|) Ta biểu diễn hệ (R1, G1, B1) như sau:

Cuối cùng để xác định R, G, B ta cộng cùng một lượng vào từng thành phần với giá trị: m = V – C (2.6)

Nếu H không xác định được Nếu 0 ≤ H' < 1

Nếu 1 ≤ H' < 2 Nếu 2 ≤ H' < 3 Nếu 3 ≤ H' < 4 Nếu 4 ≤ H' < 5 Nếu 0 ≤ H' < 1

CÔNG CỤ

Mã nguồn mở thị giác máy (OpenCV – Open Source Computer Vision)

OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở nổi bật trong lĩnh vực thị giác máy, cung cấp hơn 500 hàm và hơn 2500 thuật toán tối ưu cho xử lý ảnh Thư viện này được thiết kế để tận dụng sức mạnh của các chip đa lõi, cho phép thực hiện các phép toán trong thời gian thực, đảm bảo tốc độ đáp ứng nhanh cho nhiều ứng dụng OpenCV có khả năng chạy trên nhiều nền tảng khác nhau như Windows, Linux, Mac và iOS Theo quy định của giấy phép mã nguồn mở BSD, OpenCV có thể được sử dụng miễn phí cho cả mục đích thương mại và phi thương mại.

Dự án OpenCV bắt đầu từ năm 1999 và được giới thiệu tại hội nghị IEEE về thị giác máy và nhận dạng vào năm 2000 Tuy nhiên, phiên bản chính thức OpenCV 1.0 chỉ được công bố vào năm 2006, và phiên bản 1.1 (pre-release) ra mắt vào năm 2008 Đến tháng 10 năm 2009, phiên bản thứ hai của OpenCV (phiên bản 2.x) chính thức ra đời.

Thư viện OpenCV được khởi đầu với sự hỗ trợ từ Intel và sau đó được phát triển bởi Willow Garage, một phòng thí nghiệm chuyên về công nghệ robot Đến nay, OpenCV vẫn duy trì tính mở và tiếp tục được phát triển nhờ nguồn quỹ từ các tổ chức phi lợi nhuận.

3.1.2 Một số phép xử lý trong OpenCV

3.1.2.1 Đọc ảnh, hiển thị và lưu ảnh

Để đọc file ảnh thành mảng NumPy, chúng ta sử dụng cú pháp `image = cv2.imread("tham số")`, trong đó "tham số" là đường dẫn đến hình ảnh Sau khi thực hiện, chúng ta sẽ nhận được một mảng NumPy tên là image, chứa các thông số về file ảnh như chiều dài, chiều rộng và số kênh màu Mảng NumPy lưu trữ các thông tin này một cách hiệu quả.

Bức ảnh có hai chiều X và Y, với gốc tọa độ nằm ở pixel phía trên bên trái Chiều X kéo dài từ trái sang phải, trong khi chiều Y từ trên xuống dưới Trong NumPy, số pixel theo chiều Y được xác định bằng image.shape[0] và số pixel theo chiều X bằng image.shape[1].

Mỗi pixel trong ảnh được thể hiện dưới dạng xám (grayscale) hoặc màu (color) Thông số image.shape[2] cho biết số kênh của mỗi pixel, với ảnh màu sử dụng 3 kênh RGB, trong khi ảnh xám chỉ có 1 kênh duy nhất.

Cú pháp: cv2.imshow("Tên hiển thị", image)

Hàm cv2.imshow() cho phép hiển thị hình ảnh trong một cửa sổ, với tham số đầu tiên là tên cửa sổ được đặt trong dấu " " và tham số thứ hai là mảng Numpy chứa dữ liệu của tệp ảnh.

Để hiển thị hình ảnh trên màn hình, cần có một thời gian chờ nhất định để ảnh có thể xuất hiện Thời gian chờ này được khai báo bằng lệnh cv2.waitKey(time), trong đó tham số time được tính bằng mili giây Nếu muốn hình ảnh hiển thị mãi mãi, bạn có thể đặt tham số thời gian bằng 0, tức là sử dụng cv2.waitKey(0).

Chúng ta cũng có thể hiển thị thông tin cần thiết về hình ảnh, chẳng hạn như chiều dài, chiều rộng, số pixel và giá trị màu tại một điểm ảnh bằng cách sử dụng lệnh print.

Ví dụ: Hiển thị thông tin về kích thước của hình ảnh: print image.shape[0] (Hiển thị chiều dài ảnh) print image.shape[1] (Hiển thị chiều cao ảnh)

Cú pháp: cv2.imwrite("Tên.định dạng", image)

Hàm cv2.imwrite() được sử dụng để lưu hình ảnh sau khi thực hiện các thao tác chỉnh sửa Hàm này nhận hai tham số: tên và định dạng mới của hình ảnh, được đặt trong dấu ngoặc kép, cùng với tham số image là một mảng Numpy chứa thông tin của file ảnh cần lưu.

3.1.2.2 Chuyển đổi giữa các không gian màu

Để chuyển đổi giữa các không gian màu, chúng ta sử dụng hàm cv2.cvtColor() với cú pháp: gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) Tham số image là mảng Numpy chứa thông tin của ảnh gốc cần chuyển đổi, trong khi cv2.COLOR_BGR2GRAY là tham số chỉ định không gian màu để chuyển đổi Ví dụ, cú pháp này chuyển đổi không gian màu RGB sang không gian màu xám, và kết quả chuyển đổi được lưu trong mảng Numpy có tên là gray.

Chúng ta có thể chuyển đổi giữa các không gian màu khác nhau bằng cách thay đổi tham số lựa chọn Ví dụ, để chuyển đổi từ RGB sang HSV, ta sử dụng tham số cv2.COLOR_BGR2HSV, và để chuyển đổi từ RGB sang CMYK, ta sử dụng tham số cv2.COLOR_BGR2CMYK.

3.1.2.3 Ảnh nhị phân và ngưỡng Ảnh nhị phân là ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bằng hai giá trị 0 hoặc 255 tương ứng với hai màu đen hoặc trắng Để chuyển đổi một ảnh xám sang ảnh nhị phân ta dựa vào một giá trị ngưỡng T với phương pháp chuyển tất cả các điểm ảnh có giá trị mức xám nhỏ hơn hoặc bằng ngưỡng T thành giá trị 0 ứng với màu đen ( f(x,y) ≤ T  f(x,y) = 0) và ngược lại những điểm ảnh có giá trị mức xám lớn hơn ngưỡng T thì chuyển thành giá trị 255 ứng với màu trắng ( f(x,y) > T  f(x,y) = 255)

Trong OpenCV hỗ trợ hàm cv2.threshold để chuyển ảnh xám sang ảnh nhị phân với cú pháp:

(T, thresh) = cv2.threshold(image, Tin, Tout, cv2.THRESH_BINARY)

Để chuyển đổi ảnh xám thành ảnh nhị phân, ta sử dụng các tham số như image (mảng Numpy chứa thông số hình ảnh), Tin (ngưỡng nhập vào) và Tout (giá trị mức xám thay đổi cho các điểm ảnh lớn hơn ngưỡng T) Ví dụ, nếu đặt Tout = 250, các điểm ảnh có giá trị lớn hơn T sẽ được chuyển thành 250 Tham số cv2.THRESH_BINARY giúp lựa chọn hình thức so sánh giá trị điểm ảnh với ngưỡng.

- cv2.THRESH_BINARY: Được gọi là nhị phân hóa thuận (f(x,y) ≤ T  f(x,y) = 0 và f(x,y) > T  f(x,y) = Tout)

- cv2.THRESH_BINARY_INV: Được gọi là nhị phân hóa nghịch (f(x,y) ≤ T

Kết quả được lưu trữ với hai thông số chính: Ngưỡng T, dùng để chuyển đổi ảnh xám thành ảnh nhị phân, với giá trị T = Tin, và một mảng Numpy tên là thresh, chứa thông tin của ảnh nhị phân sau khi chuyển đổi.

Ngoài ra, ta còn có một số phương pháp xác định ngưỡng tự động ví dụ như phương pháp Otsu và phương pháp ngưỡng thích nghi (Adaptive Threshold):

❖ Phương pháp Otsu: Đây là phương pháp xác định ngưỡng dựa trên biểu đồ (Histograms) mức xám Với cú pháp:

(T, thresh) = cv2.threshold(image, Tin, Tout, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

PHẦN MỀM QT CREATOR

3.2.1 Giới thiệu Đây là nền tảng xây dựng các ứng dụng chạy được trên nhiều hệ điều hành Phần lớn các ứng dụng xây dựng bằng Qt đều có giao diện đồ họa, do vậy Qt còn được coi như là một bộ công cụ (widget toolkit) Ban đầu Qt ra đời như một sản phẩm thương mại và cũng được dùng để viết môi trường KDE, nhưng về sau được bổ sung giấy phép LGPL, theo đó có thể được sử dụng tự do để phát triển các phần mềm nguồn mở hay đúng hơn là có thể sử dụng trong các phần mềm thương mại nếu muốn Bản quyền thương mại của Qt hiện nay đã được chuyển qua hình thức thu phí hỗ trợ Bạn có thể dùng Qt như một thư viện để viết phần mềm thương mại, nếu có sửa đổi nào trong bộ nguồn chính của Qt thì bạn phải cung cấp mã nguồn đã sửa ra chứ không yêu cầu phải mở toàn bộ mã nguồn hay phải mua giấy phép thương mại như trước kia

Một số ý kiến cho rằng Nokia nên tập trung vào việc khuếch trương thương hiệu để xây dựng nền tảng di động vững mạnh, thay vì chỉ thu lợi từ phí bản quyền bộ thư viện Qt Trong khi đó, nếu bạn muốn yên tâm hơn khi phát triển phần mềm thương mại, có thể lựa chọn thêm Widgets Tuy nhiên, do đây là dự án cá nhân của một bác sĩ và không mang lại lợi nhuận nhiều cho cộng đồng, nên việc phát triển và hỗ trợ không được tốt như của Qt.

Phiên bản mới Qt 4.7 sắp ra mắt sẽ tích hợp Qt Quick, một công nghệ giao diện người dùng tiên tiến cho phép phát triển ứng dụng có chuyển động và tương tác bằng cảm ứng Bên cạnh đó, bản cập nhật của Qt WebKit cũng sẽ được giới thiệu.

3.2.2 Các lớp của QT Creator

Trong QT Creator có hỗ trợ các lớp giúp ta thực hiện nhiều thao tác khác nhau

Hiện nay, QT hỗ trợ gần 1600 lớp học, trong đó người nghiên cứu đã sử dụng một số lớp để thực hiện đề tài của mình.

QList là một lớp lưu trữ chung trong Qt, cho phép lưu trữ các mục trong một danh sách Nó cung cấp khả năng truy cập và thao tác các mục thông qua các chỉ số, cho phép người dùng dễ dàng thêm, xóa và truy xuất dữ liệu dựa trên vị trí chỉ số.

Ví dụ: Khởi tạo QList dưới dạng danh sách các thứ trong tuần

Để duyệt qua QList, bạn có thể sử dụng vòng lặp for kết hợp với phương thức at() để hiển thị dữ liệu trên màn hình Phương thức at() yêu cầu tham số đầu vào là chỉ số của phần tử trong danh sách Ví dụ, bạn có thể viết vòng lặp như sau: for (int i=0; i < Weekdays.size(); ++i).

Dùng toán tử 0 đôi khi sử dụng γ = 1/2σ 2

- Hàm hyperbolic tangent (Tanh): k ( x i , x j )tanh( k x i x j  c ) với một số (không phải tất cả) giá trị k > 0 và c < 0

Hàm kernel liên quan đến sự biến đổi của ( x i ) theo phương trình

( x i , x j x i x j k    Giá trị w nằm trong không gian chuyển đổi, với

 i i i i i α y x w ( )các kết quả tích vô hướng có w để phân loại lại có thể dược tính bằng thủ thuật kernel Ví dụ: ( x i )   i α i y i k ( x i , x )

Tính toán bộ phân loại SVM

Tính toán bộ phân loại SVM (biên mềm) ta đi tìm giá trị nhỏ nhất của biểu thức:

Chúng ta sẽ tập trung vào bộ phân loại biên mềm, vì việc chọn giá trị λ nhỏ cho phân loại biên cứng với dữ liệu đầu vào có khả năng phân loại tuyến tính Cách tiếp cận truyền thống là tìm giá trị nhỏ nhất của biểu thức, một bài toán quy hoạch toàn phương sẽ được mô tả chi tiết Tiếp theo, các phương pháp hiện đại như suy giảm độ dốc phụ và tọa độ gốc cũng sẽ được đề cập.

4.5.1 Bài toán gốc Để tìm giá trị nhỏ nhất biểu thức có thể được viết lại như một bài toán tối ưu hóa hạn chế với một hàm mục tiêu khác biệt theo cách sau:

Với mọi i є {1,… ,n} ta có một biến ζ i = max(0,1 - y i (w.x i – b)) Lưu ý rằng ζi là số nhỏ nhất không âm thỏa mãn y i (w.x i – b) ≥ 1 – ζ i

Như vậy chúng ta có thể viết lại bài toán tối ưu như sau:

Tìm giá trị nhỏ nhất của: 

Phụ thuộc y i (w.x i – b) ≥ 1 – ζ i và ζ i ≥ 0 với mọi i

Bằng cách giải đối ngẫu Lagrangian cho bài toán trên, ta có được bài toán đơn giản hơn

Tìm giá trị lớn nhất của:  

Bài toán đối ngẫu, hay còn gọi là bài toán cực đại hóa đối ngẫu, là một hàm bậc hai phụ thuộc vào các ràng buộc tuyến tính Để giải quyết bài toán này, các thuật toán quy hoạch toàn phương được áp dụng hiệu quả Trong đó, các biến c i được định nghĩa rõ ràng.

Hơn thế nữa, c i = 0 khi x i nằm ở bên biên đúng, và λ c i n

0  1 khi x i nằm trên ranh giới của biên Sau đó w có thể được viết như một sự kết hợp tuyến tính của các vector hỗ trợ

Việc bù, b , có thể được phục hồi bằng cách tìm kiếm một x i trên ranh giới của biên và giải: i i i i w x b b y w x y (  )  1   - (4.10)

Để tìm một quy tắc phân loại phi tuyến tương ứng với quy tắc phân loại tuyến tính cho các điểm dữ liệu chuyển đổi ( x i ), ta cần sử dụng một hàm kernel k thỏa mãn phương trình k ( x i , x j ) = ( x i ) ( x j ).

Như ta biết vector phân loại w trong không gian chuyển đổi thỏa mãn:

(4.11) Với c i thu được bằng cách giải quyết bài toán tối ưu hóa:

Tìm giá trị lớn nhất của:

Hệ số c i có thể được giải quyết thông qua quy hoạch toàn phương, tương tự như trước đây Chúng ta có thể xác định một số giá trị i mà λ c i n.

0  1 , để ( x i )nằm trên ranh giới của biên trong không gian chuyển đổi, và sau đó giải: i n

Cuối cùng, các điểm mới có thể được phân loại theo tính toán:

4.5.4 Các phương pháp hiện đại

Các thuật toán mới trong việc tìm kiếm bộ phân loại SVM bao gồm suy giảm độ dốc phụ và tọa độ gốc, cả hai đều mang lại lợi ích vượt trội so với phương pháp truyền thống khi xử lý các vấn đề lớn Đặc biệt, phương pháp suy giảm độ dốc phụ tỏ ra hiệu quả với dữ liệu rời rạc và số lượng mẫu đào tạo lớn, trong khi tọa độ gốc hỗ trợ hiệu quả trong không gian đặc trưng cao.

4.5.4.1 Phương pháp suy giảm độ dốc phụ

Các thuật toán suy giảm độ dốc phụ cho SVM làm việc trực tiếp với biểu thức:

Lưu ý rằng hàm f là một hàm lồi của w và b, cho phép áp dụng phương pháp suy giảm độ dốc truyền thống Thay vì thực hiện một bước theo chiều hàm suy giảm, ta có thể thực hiện một bước theo chiều một vector được chọn từ suy giảm phụ của hàm Cách tiếp cận này mang lại lợi thế, đặc biệt trong một số trường hợp, khi số lần lặp lại không tỉ lệ thuận với số lượng điểm dữ liệu.

4.5.4.2 Phương pháp tọa độ gốc

Giải thuật tọa độ gốc cho phép SVM hoạt động với bài toán đối ngẫu

Tìm giá trị lớn nhất của:  

Với mọi i є {1,… ,n}, lặp lại, hệ số c i được điều chỉnh theo hướng  f  c i Sau đó, các vector kết quả của hệ số  ' n 

Quá trình dự đoán vector gần nhất cho các hệ số thỏa mãn ràng buộc nhất định thường sử dụng khoảng cách Euclide Thuật toán này được lặp lại cho đến khi đạt được vector tối ưu gần nhất, mang lại kết quả nhanh chóng trong thực tế, mặc dù vẫn tồn tại một số vấn đề về hiệu suất.

Giảm thiểu sai số thực nghiệm

Các SVM biên mềm là ví dụ điển hình về sai số thực nghiệm (Empirical Risk Minimization - ERM) với mất bản lề (hinge loss) Điều này cho thấy SVM nằm trong một lớp tự nhiên của các thuật toán suy luận thống kê, và nhiều đặc điểm độc đáo của nó xuất phát từ trạng thái mất bản lề Quan điểm này không chỉ giúp hiểu rõ hơn về cơ chế hoạt động của SVM mà còn cho phép phân tích tốt hơn các thuộc tính thống kê của nó.

Trong huấn luyện có giám sát, ta đưa ra một tập hợp các mẫu huấn luyện

Để dự đoán giá trị y n+1 từ X n+1, ta cần một giả thuyết f, trong đó f(X n+1) là một xấp xỉ tốt cho y n+1 Một xấp xỉ tốt được xác định thông qua hàm mất mát l(y, z), trong đó z là dự đoán cho y Mục tiêu là chọn một giả thuyết nhằm giảm thiểu sai số dự kiến.

Trong nhiều trường hợp, chúng ta không nắm rõ phân phối chung của X n+1 tại y n+1 Do đó, một chiến lược phổ biến là lựa chọn giả thuyết nhằm giảm thiểu sai số thực nghiệm.

Dưới những giả định nhất định về chuỗi biến ngẫu nhiên X k và y k, chẳng hạn như chúng được sinh ra từ một quá trình Markov hữu hạn, nếu giả thuyết này đủ nhỏ, thì sai số thực nghiệm tối thiểu sẽ gần tương đương với sai số dự kiến n phát sinh lớn Phương pháp này được gọi là giảm thiểu sai số thực nghiệm (ERM).

4.6.2 Chuẩn hóa và ổn định Để bài toán đi tìm cực tiểu có một lời giải được xác định rõ ràng, ta phải đặt các ràng buộc vào tập hợp các giả thuyết đang được xem xét H Nếu H là một không gian chuẩn (như trường hợp của SVM), một kỹ thuật đặc biệt hiệu quả là chỉ xem xét các giả thuyết f mà || f ||H < k Điều này tương đương với việc áp dụng điểm phạt chuẩn hóa R ( f ) = λ k ||f|| H , và giải quyết bài toán tối ưu hóa mới:

Cách tiếp cận này được gọi là Tikhonov regularization [14]

Nhìn chung, R ( f ) có thể coi là một giả thuyết phức tạp của giả thuyết f, nên các giả thuyết đơn giản được ưa thích hơn

4.6.3 SVM và sự mất bản lề

Nhắc lại bộ phân loại SVM (biên mềm) w  , b : x  sgn  w  x  b  được chọn để làm nhỏ biểu thức sau:

Kỹ thuật SVM có thể được hiểu là một phương pháp nhằm giảm thiểu sai số thực nghiệm thông qua việc áp dụng chuẩn hóa Tikhonov Trong bối cảnh này, hàm mất mát được sử dụng là hàm mất mát bản lề, được định nghĩa bởi công thức l(y,z) = max(0, 1 - yz).

SVM có mối liên hệ chặt chẽ với các thuật toán phân loại cơ bản như Regularized Least-Squares (RLS) và hồi quy logistics Sự khác biệt giữa ba phương pháp này chủ yếu nằm ở việc lựa chọn hàm mất Cụ thể, RLS tối thiểu hóa sai số thực nghiệm bằng cách sử dụng hàm mất bình phương, trong khi hồi quy logistics áp dụng hàm log để tính toán.

Sự khác biệt giữa mất bản lề và các hàm mất khác được thể hiện rõ qua điều kiện của hàm mục tiêu, cụ thể là hàm giảm thiểu sai số dự kiến cho cặp biến ngẫu nhiên X và Y.

Cụ thể, sử dụng y x thể hiện cho y với điều kiện về là X = x Trong thiết lập phân loại, ta có: y x = {1 với xác suất p x -1 với xác suất 1-p x

Ta có phân loại tối ưu:

Trong các trường hợp khác, hàm mục tiêu cho bình phương hàm mất được xác định là hàm mong muốn có điều kiện, cụ thể là f_sq(x) = E[y | x] Đối với hàm mất logistic, hàm mục tiêu được biểu diễn qua công thức logarit, f(x) = ln(p/(1-p)), với p là xác suất.

Cả hai hàm mục tiêu đều đạt được phân loại chính xác với sgn(f sq) = sgn(f log) = f*, cung cấp nhiều thông tin hơn cần thiết Thực tế, chúng cung cấp đủ dữ liệu để mô tả hoàn toàn phân bố của y x.

Chúng ta có thể xác minh tính chính xác của hàm mục tiêu khi mất bản lề Trong một không gian giả thuyết đủ lớn hoặc với một kernel phù hợp, bộ phân loại SVM sẽ hội tụ đến hàm đơn giản nhất để phân loại chính xác dữ liệu Điều này mở rộng cách hiểu hình học của mô hình.

SVM cho phân loại tuyến tính giúp giảm thiểu sai số thực nghiệm thông qua việc sử dụng hàm đơn giản nhất, với biên phân cách nằm giữa các vector hỗ trợ, tạo ra phân loại biên tối đa.

Thuộc tính

SVM, hay Máy Vector Hỗ trợ, là một phương pháp phân loại tuyến tính tổng quát, được xem là một mở rộng của perceptron và là một trường hợp đặc biệt của chuẩn hóa Tikhonov Đặc điểm nổi bật của SVM là khả năng giảm thiểu sai số phân loại thực nghiệm đồng thời với việc tối đa hóa biên dạng hình học, do đó thường được gọi là phân loại biên tối đa.

Hiệu quả của SVM phụ thuộc vào lựa chọn kernel, các tham số của kernel và tham số lề mềm C Gaussian kernel là một lựa chọn phổ biến với tham số γ Để tìm ra sự kết hợp tối ưu giữa C và γ, thường sử dụng phương pháp tìm kiếm lưới với các giá trị của C và γ phát triển theo cấp số nhân, ví dụ, C có thể là {2^-5, 2^-3, …}.

Các giá trị của C được xác định trong khoảng {2^-15, 2^-13,…, 2^1, 2^3}, và thường thì mỗi sự kết hợp của các tham số được kiểm tra thông qua phương pháp kiểm chứng chéo (cross validation) để chọn ra các tham số có độ chính xác cao nhất Bên cạnh đó, tối ưu hóa Bayesian cũng có thể được áp dụng để lựa chọn C và γ, giúp giảm thiểu số lượng đánh giá các kết hợp tham số so với phương pháp tìm kiếm lưới Cuối cùng, mô hình được huấn luyện trên toàn bộ tập huấn luyện với các tham số đã được chọn, nhằm thử nghiệm và phân loại dữ liệu mới.

Những hạn chế tiềm ẩn của SVM bao gồm các:

- Yêu cầu ghi nhãn đầy đủ dữ liệu đầu vào

- Các lớp xác suất thành viên không được hiệu chuẩn - SVM bắt nguồn từ lý thuyết của Vapnik tránh ước tính xác suất trên dữ liệu hữu hạn

SVM chỉ có thể được sử dụng trực tiếp cho các nhiệm vụ phân loại hai lớp, vì vậy cần áp dụng các thuật toán chuyển đổi để giải quyết các bài toán đa lớp.

- Khó giải thích được các tham số của một mô hình được giải quyết.

GIẢI THUẬT

Lưu đồ giải thuật

5.1.1 Lưu đồ giải thuật tổng quát

Hình 5.1: Lưu đồ giải thuật tổng quát

5.1.2 Lưu đồ giải thuật chương trình tách ký tự

Hình 5.2: Lưu đồ giải thuật chương trình tách ký tự

5.1.3 Lưu đồ giải thuật chương trình huấn luyện

Hình 5.3: Lưu đồ giải thuật chương trình huấn luyện

5.1.4 Lưu đồ giải thuật chương trình nhận dạng và lưu trữ

Hình 5.4: Lưu đồ giải thuật chương trình tách ký tự

Xác định dòng và tách ký tự

5.2.1 Các bước xử lý cơ bản

Để nhận dạng hóa đơn, bạn cần chọn hình ảnh bằng cách nhấp vào nút Browser trên giao diện Sau khi chọn, hình ảnh sẽ hiển thị trong khung Bạn có thể sử dụng thanh Scale để điều chỉnh kích thước ảnh, giúp dễ dàng theo dõi trong quá trình xử lý.

Hình 5.5: Giao diện chương trình lựa chọn hình ảnh

Hình 5.6: Giao diện chương trình hiển thị hình ảnh được chọn

Sau khi có hình ảnh ta thực hiện một số phép xử lý cơ bản sau:

- Chuyển đổi không gian màu ta chuyển đổi ảnh sang không gian màu xám để thuận tiện cho việc phân đoạn ảnh

Trong quá trình phân đoạn ảnh, chúng ta chuyển đổi ảnh từ không gian màu xám sang ảnh nhị phân nhằm đơn giản hóa việc nhận dạng Phương pháp được sử dụng là ngưỡng Otsu, với thao tác nhị phân hóa thuận qua hàm cv::threshold, giúp cải thiện hiệu quả trong việc xử lý ảnh.

- Sau đó ta tiến hành loại bỏ bớt nhiễu trong ảnh sử dụng bộ lọc Gaussian

Các tờ hóa đơn thường có thiết kế bảng biểu, dẫn đến sự xuất hiện của các dòng kẻ không chứa thông tin cần trích xuất Để xử lý vấn đề này, ta cần loại bỏ những dòng kẻ bằng cách sử dụng hàm findcontours để tìm đường bao.

Sau đó ta tiến hành lọc đường bao bằng cách xóa bỏ những đường bao có kích thước nhỏ hơn 2 pixel và lớn hơn 100 pixel

Hình 5.7: Hình ảnh trước khi xóa đường kẻ

Hình 5.8: Hình ảnh sau khi xóa đường kẻ

5.2.3 Tách dòng và ký tự

Sau khi loại bỏ đường kẻ, chúng ta tiến hành tách dòng và ký tự bằng cách xác định vị trí các dòng chứa ký tự thông qua phương pháp biến đổi hình thái Đầu tiên, sử dụng hàm xói mòn (Erosion) để loại bỏ nhiễu trắng, sau đó áp dụng hàm giãn nở (Dilation) để kết nối các vùng trắng liền kề, từ đó đánh dấu các dòng có chứa ký tự.

Sau khi nối các ký tự trên cùng một dòng, chúng ta sẽ xác định đường bao và sử dụng lớp QRect trong QT Creator để vẽ hình chữ nhật bao quanh các dòng chứa ký tự Vị trí và kích thước của các hình chữ nhật này sẽ được lưu trữ trong lớp QList.

Và để tách được từng dòng ta tiến hành trích xuất hình ảnh theo vị trí và kích thước của đường bao hình chữ nhật đã lưu trong QList

Để tách từng ký tự trong hình, trước tiên chúng ta thực hiện xói mòn nhằm tách các ký tự dính nhau Tiếp theo, chúng ta tìm đường bao của hình và kẻ các đường dọc với chiều cao tương ứng với chiều cao của từng ký tự Các đường này được vẽ từ trái sang phải, tại các vị trí cột không có điểm trắng; nếu có điểm trắng, đường kẻ sẽ không được vẽ cho đến khi hoàn tất khung hình.

Sau khi xác định vị trí của từng ký tự, chúng ta tiến hành xác lại đường bao và lưu địa chỉ của từng ký tự vào QList Tiếp theo, các ký tự được trích xuất thành từng đơn vị riêng lẻ và được thay đổi kích thước thành 80x80 pixel để thuận tiện cho quá trình huấn luyện.

Để tách ký tự, người dùng chỉ cần nhấn vào nút "Extract Characters" trên giao diện Sau khi quá trình tách ký tự hoàn tất, trạng thái sẽ được hiển thị trên label và khung hình sẽ xuất hiện ảnh với các dòng được đánh dấu bằng hình chữ nhật xanh cùng từng ký tự được đánh dấu bằng hình chữ nhật đỏ.

Hình 5.13: Giao diện chương trình tách ký tự

Huấn luyện

5.3.1 Tạo tập mẫu huấn luyện

Chuẩn bị các mẫu ký tự in sẵn cần thiết cho quá trình huấn luyện Sử dụng chương trình tách ký tự đã hoàn thành để tách riêng từng ký tự và lưu chúng vào các thư mục riêng biệt, với tên thư mục tương ứng là mã Unicode của từng ký tự Tất cả các thư mục chứa ký tự sẽ được lưu trong một thư mục chính có tên là training Lưu ý rằng mỗi ký tự cần có số lượng mẫu đồng nhất.

Yêu cầu về tập mẫu bao gồm 135 ngõ vào, trong đó có 93 ký tự, 10 chữ số và 32 ký hiệu cùng các ký tự đặc biệt Các mẫu được phân tách bằng chương trình tách ký tự.

Hình 5.14: Hình ảnh mẫu để tạo tập huấn luyện

Hình 5.15: Mẫu huấn luyện cho ký tự A

5.3.2 Huấn luyện tạo thư viện nhận dạng

Chúng tôi sử dụng giải thuật SVM (Support Vector Machines) để huấn luyện mẫu và xây dựng thư viện nhận dạng Đầu tiên, chúng tôi xác định các đặc trưng của từng mẫu Mẫu huấn luyện được đưa vào là một ảnh có kích thước 80x80 pixel, sau đó chia thành 64 phần, mỗi phần là một ảnh nhỏ kích thước 10x10 Tiếp theo, chúng tôi tính tỷ lệ điểm trắng và điểm đen của từng ảnh nhỏ so với ảnh gốc, và kết quả này được lưu vào một vector hai chiều chứa tỷ lệ đã tính toán.

Ta có thể tạo nhiều đặc trưng khác theo hàng, cột, đường chéo hoặc một số quy luật ngẫu nhiên khác

Sau khi có đặc trưng ta tiến hành huấn luyện

Ta tiến hành chọn thông số bộ huấn luyện:

Trong bài nghiên cứu này, thông số Params.svm_type được sử dụng để xác định loại SVM Cụ thể, tác giả đã chọn dạng SVC (Support Vector Clustering), một loại SVM được phát triển dựa trên hàm Kernel, phù hợp cho việc học không giám sát.

Params.kernel_type: Với thông số này ta chọn hàm Kernel Chọn hàm cơ sở radial (RBF - Radial Basis Function)

Params.gamma và params.C là hai tham số quan trọng trong SVM phi tuyến kết hợp với hàm kernel RBF, được xác định thông qua hàm RandomizedSearchCV() với phân bố mẫu đã được chỉ định trước.

Sau khi thiết lập các thông số, cần nhập số lượng ngõ vào và số mẫu huấn luyện tương ứng cho từng ngõ vào Lưu ý rằng số mẫu huấn luyện cho mỗi ngõ vào phải đồng nhất.

Sau khi hoàn tất quá trình huấn luyện với hàm svm.train_auto(), dữ liệu sẽ được lưu lại để sử dụng như một thư viện nhận dạng.

Giao diện chương trình huấn luyện thư viện cho phép người dùng nhập các thông tin cần thiết như số lượng ký tự đầu vào (Num Characters), số lượng mẫu cho mỗi ký tự (Num Samples), chọn thư mục chứa tập huấn luyện (Folder to learning) và xác định vị trí lưu thư viện huấn luyện (Path name lib).

Sau khi điền đầy đủ thông tin, người dùng nhấn nút "Learning" để bắt đầu quá trình huấn luyện thư viện Thời gian huấn luyện sẽ phụ thuộc vào số lượng đầu vào và số mẫu, và trạng thái của quá trình sẽ được hiển thị trên nhãn thông báo.

Hình 5.17: Giao diện huấn luyện tạo thư viện

Hình 5.18: Giao diện huấn luyện tạo thư viện

Nhận dạng và lưu trữ

Chúng ta lần lượt truy xuất các hình ảnh chứa ký tự đã được tách ra theo các chỉ số và nội dung lưu trong lớp Qlist Tiếp theo, từng ký tự sẽ được nhận dạng bằng cách tính toán lại các đặc trưng của ảnh chứa ký tự đó, tương tự như cách tính đặc trưng của mẫu huấn luyện Cuối cùng, hàm svm.predict() sẽ được sử dụng để kiểm tra sự tương đồng giữa ký tự cần nhận dạng và các mẫu đã huấn luyện.

Hàm svm.predict() sẽ truy cập vào thư mục "Training" chứa các mẫu huấn luyện, sau đó so sánh từng ký tự với các mẫu đã chuẩn bị sẵn Mỗi mẫu huấn luyện được lưu trữ trong một thư mục con với tên bắt đầu bằng mã Unicode của ký tự mẫu tương ứng.

Ví dụ: với mẫu huấn luyện cho ký tự “A” sẽ được lưu trong folder có tên là

“65_A” trong đó, “65” là mã unicode của ký tự “A” Tương tự cho các mẫu huấn luyện khác

Hình 5.19: Các folder chứa mẫu huấn luyện trong folder Training

Sau khi xác định ký tự có độ tương đồng cao nhất với mẫu, hàm svm.predict() sẽ trả về tên của thư mục chứa mẫu huấn luyện Tiếp theo, chúng ta sẽ tách phần số trong tên thư mục để thu được mã Unicode của ký tự đã được nhận dạng.

Sau khi có mã Unicode, chúng ta sẽ chuyển đổi nó thành ký tự và lưu trữ dưới dạng văn bản trong file có tên "Ocr.txt".

Để thực hiện nhận dạng ký tự, trước tiên cần tách ký tự và nhập thư viện huấn luyện bằng cách sử dụng đường dẫn (Path name lib), sau đó nhấn nút OCR để bắt đầu quá trình nhận dạng.

Sau khi nhận dạng ký tự thành công, chương trình sẽ chuyển đổi kết quả từ mã Unicode sang ký tự và lưu tạm vào một file text Tiếp theo, để lưu trữ thông tin tờ hóa đơn, chương trình sẽ mở một workbook với số lượng hàng và cột phù hợp để lưu trữ dữ liệu.

Sau khi hoàn tất quá trình nhận dạng, chúng ta sẽ lưu từng ký tự từ file text vào các ô trong workbook Khi việc lưu trữ hoàn tất, workbook sẽ được lưu dưới định dạng Excel (*.xls) và sau đó chương trình sẽ đóng workbook.

Giao diện lưu dữ liệu: Sau khi nhận dạng ký tự (OCR) xong button Export to Exel sẽ sang cho phép lưu dữ liệu vào file exel

Hình 5.21: Giao diện chương trình lưu trữ dữ liệu

Khi mở file Excel lần đầu, hệ thống sẽ hiển thị hộp thoại cho phép người dùng chọn thông tin hiển thị của ký tự trong file Hai mục quan trọng cần lưu ý là vị trí lưu trữ dữ liệu và các thông tin liên quan.

Định dạng ký tự ngõ vào, hay còn gọi là character set, là yếu tố quan trọng trong việc xử lý dữ liệu Để đảm bảo tính tương thích và chính xác, chúng ta sử dụng định dạng Unicode (UTF-8) trong thẻ Character set.

Separated by: Ở đây cho phép ta lựa chọn phương thức tách giữa các đoạn văn bản Ta chọn Tab để mỗi đoạn văn bản được đặt trong một ô

Hình 5.23: Giao diện hệ thống khi mở file Exel

KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Kết quả

Đề tài đã hoàn thành nhiệm vụ nhận dạng và trích xuất thông tin từ tờ hóa đơn, đồng thời lưu trữ dữ liệu dưới dạng file Excel, giúp việc quản lý trở nên dễ dàng hơn.

Hình 6.1: Giao diện chương trình

Hình 6.2: Kết quả lưu trữ thông tin thu được

Tuy nhiên, Kết quả thu được có độ chính xác chưa cao và vẫn còn một số nhiễu chưa được loại bỏ hết

Hiệu suất của training với 100 mẫu hóa đơn đưa vào: Đối với số lượng mẫu 12 mẫu/ký tự: Độ chính xác trong nhận dạng vào khoảng

25% với các ký tự và 40% với các số học Đối với số lượng mẫu 25 mẫu/ký tự: Độ chính xác trong nhận dạng vào khoảng

40% với các ký tự và 70% với các số học Đối với số lượng mẫu 50 mẫu/ký tự: Độ chính xác trong nhận dạng vào khoảng

70% với các ký tự và 80% với các số học.

Hướng phát triển

Đề tài đã hoàn thiện được cơ bản nhiệm vụ đưa ra, nhưng còn một số khuyết điểm:

Chưa loại bỏ được hết nhiễu trắng nên kết quả còn một số điểm nhận dạng sai:

Hình 6.3: Sai số khi tồn tại nhiễu trắng Một số ký tự còn chưa được tách rời hết nên nhận dạng ra kết quả sai:

Hình 6.4: Nhận dạng sai do chưa tách hoàn toàn ký tự

Kết quả nhận dạng tại vị trí số 444 chưa chính xác do các ký tự chưa được tách rời (nhận dạng 444 thành A) Để khắc phục vấn đề này, cần xây dựng một phương pháp tách ký tự hiệu quả hơn.

Một số ký tự sai font có thể dẫn đến kết quả nhận dạng không chính xác, chẳng hạn như khi chữ số 1 bị sai font (Calibri), dẫn đến việc không nhận dạng được Để khắc phục tình trạng này, cần xây dựng một tập mẫu huấn luyện lớn hơn nhằm cải thiện khả năng nhận dạng nhiều loại font chữ khác nhau.

Hình 6.5: Nhận dạng sai do sai font

Hình 6.6: Thử nghiệm với việc thêm một số mẫu mới

Ngoài ra, chưa lưu dữ liệu vào đúng ô mong muốn trong file exel:

Hình 6.7: Một số dữ liệu không đúng vị trí

Từ những tồn tại trên người nghiên cứu đưa ra hướng phát triển như sau:

- Xây dựng phương pháp xử lý, lọc nhiễu hiệu quả và tách ký tự triệt để hơn để nâng cao độ chính xác

- Xây dựng tập mẫu huấn luyện lớn hơn để đảm bảo độ chính xác cao hơn

- Xây dựng tập mẫu với đa dạng kiểu chữ để có thể nhận dạng được nhiều font chữ hơn Mang lại tính ứng dụng cao hơn trong thực tiễn

- Nhận dạng hóa đơn với nhiều kiểu mẫu định dạng hơn

Xây dựng một bộ từ điển nhằm cải thiện độ chính xác của việc kiểm tra chính tả tiếng Việt và xác định thuật toán để sắp xếp dữ liệu một cách hợp lý trong Excel.

Ứng dụng có thể được mở rộng sang nhiều lĩnh vực khác nhau, chẳng hạn như việc nhập điểm cho học sinh, sinh viên tại các cơ sở đào tạo, hoặc ứng dụng quản lý thuốc tại các hiệu thuốc và công ty dược.

Ứng dụng được phát triển sẽ hỗ trợ nhiều hệ điều hành khác nhau và có thể sử dụng trên điện thoại di động, trong khi chương trình hiện tại chỉ hoạt động trên hệ điều hành Linux.

Ngày đăng: 20/09/2022, 01:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Adam Coates, Blake Carpenter, Carl Case, Sanjeev Satheesh, Bipin Suresh, Tao Wang, David J. Wu, Andrew Y. Ng. Text Detection and Character Recognition in Scene Images with Unsupervised Feature Learning.ICDAR, 2011 Sách, tạp chí
Tiêu đề: Text Detection and Character Recognition in Scene Images with Unsupervised Feature Learning
[2] Parthasarathi Giri. Text Information Extraction And Analysis From Images Using Digital Image Processing Techniques. Special Issue of International Journal on Advanced Computer Theory and Engineering (IJACTE), ISSN (Print) : 2319 – 2526, Volume-2, Issue-1, 2013, pp. 66-71 Sách, tạp chí
Tiêu đề: Text Information Extraction And Analysis From Images Using Digital Image Processing Techniques
[3] Chiang, Yao-Yi, and Craig A. Knoblock. Automatic Text Recognition from Raster Maps. 2010 Sách, tạp chí
Tiêu đề: Automatic Text Recognition from Raster Maps
[4] Arwa AL-Khatatneh, Sakinah Ali Pitchay and Musab Al-qudah. An Arabic Baseline Estimation Method Based on Feature Points Extraction.In: Proceedings of the World Congress on Engineering. 2017 Sách, tạp chí
Tiêu đề: An Arabic Baseline Estimation Method Based on Feature Points Extraction
[5] L. Ramesh, E. Dinesh. Text Extraction and Recognition from Mixed Images. Journal of Chemical and Pharmaceutical Sciences ISSN, 974:2115 Sách, tạp chí
Tiêu đề: Text Extraction and Recognition from Mixed Images
[6] Phan Thị Thanh Nga, Nguyễn Thị Huyền Trang, Nguyễn Văn Phúc, Thái Duy Quý, Võ Phương Bình . Nhận Dạng Bìa Sách Tiếng Việt Cho Ứng Dụng Quản Lý Sách. Tạp chí Khoa học Đại học Đà Lạt, 2017, 7.2: 142- 152 Sách, tạp chí
Tiêu đề: Nhận Dạng Bìa Sách Tiếng Việt Cho Ứng Dụng Quản Lý Sách
[8] Simon Tong and Daphne Koller. Support vector machine active learning with applications to text classification. Journal of machine learning research 2.Nov (2001): 45-66 Sách, tạp chí
Tiêu đề: Support vector machine active learning with applications to text classification
Tác giả: Simon Tong and Daphne Koller. Support vector machine active learning with applications to text classification. Journal of machine learning research 2.Nov
Năm: 2001
[9] Terrence S. Furey, Nello Cristianini, Nigel Duffy, David W. Bednarski Michèl Schummer, David Haussler. Support vector machine classification and validation of cancer tissue samples using microarray expression data. Bioinformatics 16.10 (2000): 906-914 Sách, tạp chí
Tiêu đề: Support vector machine classification and validation of cancer tissue samples using microarray expression data
Tác giả: Terrence S. Furey, Nello Cristianini, Nigel Duffy, David W. Bednarski Michèl Schummer, David Haussler. Support vector machine classification and validation of cancer tissue samples using microarray expression data. Bioinformatics 16.10
Năm: 2000
[10] Ray Rischpater. Application development with qt creator. Packt Publishing Ltd, 2013 Sách, tạp chí
Tiêu đề: Application development with qt creator

HÌNH ẢNH LIÊN QUAN

Hàm contains() cho biết liệu một điểm nhất định nằm bên trong hình chữ nhật hay khơng, và hàm intersects() trả về kết quả TRUE nếu hình chữ nhật này cắt với  một  hình  chữ  nhật  cho  trước - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
m contains() cho biết liệu một điểm nhất định nằm bên trong hình chữ nhật hay khơng, và hàm intersects() trả về kết quả TRUE nếu hình chữ nhật này cắt với một hình chữ nhật cho trước (Trang 33)
Hình 3.3: Kết quả trả về khi sử dụng các hàm tọa độ - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.3 Kết quả trả về khi sử dụng các hàm tọa độ (Trang 34)
Hình 3.4: Giao diện chương trình Qt Creator - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.4 Giao diện chương trình Qt Creator (Trang 36)
Hình 3.5: Lựa chọn chức năng lập trình với GUI - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.5 Lựa chọn chức năng lập trình với GUI (Trang 36)
Hình 3.7: Giao diện thiết kế form - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.7 Giao diện thiết kế form (Trang 37)
Hình 3.9: Bảng các sự kiện các đối tượng - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.9 Bảng các sự kiện các đối tượng (Trang 38)
Hình 3.8: Form thiết kế hoàn chỉnh - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.8 Form thiết kế hoàn chỉnh (Trang 38)
Hình 3.10: Sơ đồ liên kết Objects, Signals và Slots - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 3.10 Sơ đồ liên kết Objects, Signals và Slots (Trang 39)
Hình 4.1: Siêu phẳng với biên cực đại - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 4.1 Siêu phẳng với biên cực đại (Trang 42)
Hình 4.2: Thủ thuật Kernel - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 4.2 Thủ thuật Kernel (Trang 44)
Hình 5.1: Lưu đồ giải thuật tổng quát - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 5.1 Lưu đồ giải thuật tổng quát (Trang 51)
Hình 5.2: Lưu đồ giải thuật chương trình tách ký tự - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 5.2 Lưu đồ giải thuật chương trình tách ký tự (Trang 52)
Hình 5.3: Lưu đồ giải thuật chương trình huấn luyện - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 5.3 Lưu đồ giải thuật chương trình huấn luyện (Trang 53)
Hình 5.4: Lưu đồ giải thuật chương trình tách ký tự - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 5.4 Lưu đồ giải thuật chương trình tách ký tự (Trang 54)
Hình 5.7: Hình ảnh trước khi xóa đường kẻ - Ứng dụng xử lý ảnh trong việc nhận dạng và trích xuất thông tin, dữ liệu trong các tờ hóa đơn bán hàng
Hình 5.7 Hình ảnh trước khi xóa đường kẻ (Trang 57)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN