Chương 1: Giới thiệu Chương 2: Cơ sở lý thuyết Chương 3: Mô hình mạng Nơ-ron tích chập Chương 4: Xây dựng chương trình thực nghiệm nhận dạng chữ số viết tay 6 CHƯƠNG 2. Tổng quan Hiện nay, việc xử lý nhận dạng các chữ số viết tay đã trở thành một vấn đề cấp bách trong nhiều lĩnh vực và được ứng dụng phổ biến trong đời sống hằng ngày như nhận dạng số điểm trên bảng, chữ số viết tay hay nhận dạng biển số xe. Tuy nhiên, đây là một khó khăn lớn đối với các nhà khoa học bởi vì mỗi người có một nét chữ viết chữ số không giống nhau. Vì vậy, không thể tìm ra một phương pháp nhận dạng duy nhất để đáp ứng tất cả các yêu cầu của nhiều người.
Để tạo ra một ứng dụng nhận dạng được chữ số viết tay chính xác cho mọi người là điều rất khó khăn. Sau đây là một số phương pháp hay dùng hiện nay: - K-nearest neighbors (KNN): Phương pháp này dựa trên việc so sánh đặc trưng của ảnh số cần nhận diện với các ảnh số mẫu đã được gán nhãn trước đó. Ảnh mẫu gần nhất với ảnh số cần nhận diện được xác định và số tương ứng với ảnh mẫu đó được gán cho ảnh số cần nhận diện. - Support Vector Machines (SVMs): Phương pháp này dựa trên việc tìm một ranh giới phân chia tốt nhất giữa các lớp số trong không gian đặc trưng.
Mỗi ảnh số được biểu diễn bằng một vectơ đặc trưng và được phân loại vào lớp tương ứng dựa trên vị trí của nó trong không gian đặc trưng. - Neural networks: Phương pháp này sử dụng các mạng nơ-ron để học các đặc trưng của ảnh số và tạo ra một mô hình phân loại. Các mô hình này có thể được đào tạo để phân loại các ảnh số viết tay cho độ chính xác tương đối cao. - Convolutional Neural Networks (CNNs): Đây là một loại mạng nơ-ron sử dụng để xử lý ảnh và chuyên dụng cho các bài toán nhận diện hình ảnh.
CNNs có thể học các đặc trưng của ảnh số thông qua các bộ lọc và đạt được độ chính xác cao trong việc phân loại các ảnh số viết tay. - Recurrent Neural Networks (RNNs): Phương pháp này sử dụng mạng nơ-ron tái phát (RNN) để xử lý các chuỗi các ảnh số viết tay. Mạng RNN có khả năng lưu trữ trạng thái trước đó và đưa ra dự đoán cho ảnh số tiếp theo dựa trên trạng thái trước đó và thông tin mới được cung cấp. 7 - Transfer Learning: Phương pháp này sử dụng các mô hình học sâu đã được đào tạo trước đó trên các tập dữ liệu lớn để giúp đào tạo mô hình nhận diện chữ số viết tay với ít dữ liệu huấn luyện hơn.
Các mô hình này đã được đào tạo trên các tập dữ liệu lớn như CIFAR-10, MNIST, và ImageNet và có khả năng trích xuất được các đặc trưng chung của hình ảnh. - K-Means clustering: Phương pháp này sử dụng thuật toán phân cụm K-means để phân cụm các pixel trong ảnh số thành các cụm khác nhau. Sau đó, các cụm này được sử dụng để tạo ra các vectơ đặc trưng cho ảnh số, từ đó mô hình có thể học và phân loại chúng. - Naive Bayes: Phương pháp này dựa trên định lý Bayes và giả sử các đặc trưng của ảnh số độc lập với nhau.
Mô hình Naive Bayes tính xác suất của mỗi lớp số cho ảnh số mới bằng cách tính xác suất của từng đặc trưng cho mỗi lớp số, sau đó kết hợp chúng để tính toán xác suất của từng lớp số. - Random Forests: Phương pháp này sử dụng một danh sách các cây quyết định dùng để phân loại các ảnh chữ số viết tay. Các cây quyết định được đào tạo trên các tập con của dữ liệu và bình chọn của tất cả các cây quyết định được sử dụng để đưa ra quyết định cuối cùng cho mỗi ảnh số. Trong luận văn này, tôi chọn phương pháp CNN để xây dựng chương trình nhận diện chữ số viết tay.
1 Mô hình chung cho bài toán nhận diện ảnh 8 2. Các vấn đề cơ bản về xử lý ảnh 2. Ảnh số và điểm ảnh Ảnh số (digital image) là một loại ảnh được biểu diễn trên máy tính dưới dạng các điểm ảnh (pixels). Mỗi điểm ảnh là một mức xám hoặc một giá trị màu RGB được lưu trữ dưới dạng thông tin số học.
Quá trình xử lý ảnh số (digital image processing) là khoa học kỹ thuật xử lý ảnh trên máy tính, tập trung vào các phương pháp tiền xử lý, phân đoạn, nâng cao, nhận dạng và hiển thị ảnh số. Các phương pháp tiền xử lý bao gồm xử lý độ sáng, cân bằng độ sáng, lọc nhiễu và cắt ảnh. Trong khi đó, các phương pháp phân đoạn và nâng cao giúp phân tích và phân loại các thành phần của ảnh như vùng, cạnh, đối tượng và nền. Nhận dạng ảnh số là quá trình xác định các đối tượng hoặc khung ảnh và gán cho chúng các nhãn và ký hiệu.
Ngoài ra, hiển thị ảnh số cũng là một phần rất quan trọng của xử lý ảnh số, giúp chúng ta hiển thị ảnh theo cách mà ta muốn để thể hiện và phân tích thông tin đó trong quá trình giải quyết các bài toán của mình. Mỗi điểm ảnh của ảnh đơn sắc được mã hóa trên 8 bit. Một ảnh đơn sắc có các pixel giá trị từ 0 255. Càng về 0 thì ảnh càng tối, và ngược lại càng về 255 thì càng sáng.
2 Ảnh đơn sắc 9 Ảnh màu được tổ hợp từ 3 màu cơ bản là đỏ (Red), xanh lá (Green) và xanh lam (Blue). Mỗi điểm ảnh của ảnh màu được mã hóa trên 24 bit, 24 bit này được chia thành 3 khoảng 8 bit. 3 Ảnh màu RGB viết tắt của red (đỏ), green (xanh lục), blue (xanh lam), là ba màu chính của ánh sáng khi tách ra từ lăng kính. Khi trộn ba màu trên theo tỉ lệ nhất định có thể tạo thành các màu khác nhau.
4 Các màu cơ bản trong hệ màu Mỗi bộ ba giá trị R, G, B có thể tạo thành một màu khác nhau trong hệ màu RGB với giá trị từ 0 đến 255. Có tổng cộng 16777216 màu có thể tạo ra bằng cách chọn một giá trị R, G, B từ mỗi tập giá trị từ 0 đến 255. Vì vậy, để lưu trữ và xử lý 10 thuận tiện, mỗi điểm ảnh sẽ được tách thành ba ma trận tương ứng với các giá trị R, G, B. Nắn chỉnh biến dạng Nắn chỉnh biến dạng là một kỹ thuật xử lý ảnh để điều chỉnh hình dạng của đối tượng trong ảnh, hoặc để bổ sung thông tin không gian vào ảnh.
Có rất nhiều phương pháp để nắn chỉnh biến dạng, trong đó phương pháp chính là phương pháp đối sánh hình ảnh. Phương pháp này sẽ so sánh hình ảnh gốc với một ảnh mẫu đã biết trước và sử dụng một số thuật toán để nắn chỉnh hình dạng của đối tượng trên ảnh gốc. Biến dạng thường xuyên xảy ra trên ảnh thu được do các thiết bị quang học và điện tử. 5 Ảnh thu nhận và ảnh mong muốn Hiệu chỉnh biến dạng hình học Đầu tiên nghiên cứu các mối quan hệ ánh xạ địa chỉ theo hệ tọa độ hình chữ nhật bằng cách sử dụng ma trận hệ tọa độ.
Gỉa sử ta có [f(x, y)] là ảnh gốc và [f(u, v)] là ảnh sau khi biến dạng. Trung bình biến dạng không chỉ là những thay đổi đơn giản và độ nghiêng của khía cạnh tỉ lệ. Những gì chúng ta thường gặp là hình học biến dạng của loại cong vênh không gian, ở đây chúng ta áp dụng đa thức bậc hai để mô phỏng, và biến dạng có thể được thể hiện như: 11 Đồng thời, một khi ước lượng của tham số (ai, bi) có thể thu được, hàm biến dạng có thể được biết, và ánh xạ biến dạng không gian đã sửa có thể được đạt được bằng phép biến đổi đa thức trên. Phương trình trên là phương trình bậc hai nhị phân với 6 thông số.
Một khi sáu cặp điểm tương ứng có thể được tương ứng được lấy từ hình ảnh bị bóp méo và ảnh đã sửa, ước lượng của tham số (ai, bi) có thể đạt được bằng cách giải phương trình. Về lý thuyết, càng nhiều cặp điểm tương ứng được lấy, ước tính của tham số (ai, bi) chính xác hơn có thể đạt được là Đặt trước m là điểm tương ứng nên có thể được biểu thị bằng vectơ dưới dạng: Hình 2. 6 Trước khi nắn chỉnh 12 Hình 2. 7 Sau khi nắn chỉnh 2.
Khử nhiễu Hình 2. 8 Ảnh trước và sau khi khử nhiễu Khử nhiễu ảnh là một bước quan trọng trong quá trình tiền xử lý, nhằm loại bỏ hoặc giảm các nhiễu (noise) xuất hiện trên ảnh. Nhiễu ảnh có thể bao gồm các điểm màu không đúng, các đốm sáng hoặc tối không đồng đều do thiết bị chụp ảnh hoặc truyền dẫn. Việc khử nhiễu giúp cải thiện chất lượng ảnh và độ chính xác của các thuật toán xử lý ảnh sau này.
Có nhiều phương pháp khử nhiễu ảnh phổ biến như sau: - Lọc trung bình (Mean filtering): Dựa trên việc lấy trung bình cộng của các giá trị pixel lân cận, loại bỏ nhiễu bằng cách làm mượt ảnh. 13 - Lọc Gaussian (Gaussian filtering): Sử dụng hàm Gaussian làm trọng số của các giá trị pixel lân cận. Lọc Gaussian giúp giảm nhiễu mà giữ được chi tiết hình ảnh tốt hơn lọc trung bình. - Lọc trung vị (Median filtering): Thay giá trị pixel bằng giá trị trung vị của các pixel lân cận.
Kỹ thuật này giúp loại bỏ nhiễu mà không làm mất đặc trưng của cạnh và góc trong ảnh. - Lọc không gian trên biến đổi sóng (Wavelet-based filtering): Sử dụng biến đổi sóng để phân tích ảnh, lọc nhiễu trong miền biến đổi sóng và sau đó tái tạo lại ảnh. - Kỹ thuật loại bỏ nhiễu dựa trên học máy: Sử dụng các mô hình học sâu, ví dụ CNN (Convolutional Neural Network) để học cách loại bỏ nhiễu từ tập dữ liệu hình ảnh. Trong ngôn ngữ lập trình Python, thư viện OpenCV và Scikit-image rất phổ biến và hỗ trợ nhiều phương pháp khử nhiễu ảnh.
Bạn có thể tham khảo mã nguồn mẫu và tài liệu từ các nguồn trực tuyến để sử dụng các kỹ thuật này. Chỉnh mức xám Trước Sau Hình 2. 9 Ảnh trước và sau khi chỉnh mức xám Chỉnh mức xám là một kỹ thuật xử lý ảnh được sử dụng để điều chỉnh độ sáng, độ tương phản và cân bằng màu sắc trong ảnh. Nó thực hiện điều này bằng cách thay đổi giá trị mức xám (mức độ sáng) của từng điểm ảnh trong ảnh.