CHƯƠNG 3: THUẬT TOÁN NHẬN DẠNG CHỮ VIẾT TAY
3.1. Tiền xử lý ảnh
Trong tất cả các bài toán sử dụng đến hình ảnh, bước tiền xử lý ảnh đóng vai trò quan trọng. Những bức ảnh thu được từ camera là những dữ liệu thô bao gồm rất nhiều thông tin không cần thiết cho mục đích sử dụng. Việc tiền xử lý sẽ cố gắng loại bỏ thành phần nền để trích xuất được đối tượng[10]. Trong luận văn này việc thu thập ảnh thô, tôi sử dụng camera điện thoại, cụ thể là Samsung Galaxy Note 5.
Dưới đây là một ví dụ về ảnh thô (Hình 3-1).
32 Hình 3-1: Ví dụ về ảnh thô đầu vào
Quy trình tiền xử lý ảnh trải qua các giai đoạn sau:
Chuyển đổi từ ảnh màu sang ảnh xám
Làm mờ bằng thuật toán Gaussian Blur
Lọc sau khi làm mờ bằng hàm opening
Chuyển đổi sang ảnh nhị phân bằng thuật toán Otsu Lọc sau khi nhị phân hóa bằng
hàm closing
Hình 3-2: Sơ đồ các bước tiền xử lý ảnh 3.1.1. Chuyển ảnh màu sang ảnh xám
Trong một bài toán mà chúng ta chỉ cần sử dụng hình dạng của đối tượng mà không quan tâm đến màu sắc của đối tượng, thì việc chuyển đổi sang ảnh xám là rất cần thiết. Chúng ta không những sẽ loại bỏ được thành phần không có giá trị, mà còn làm giảm số chiều, số kênh của bức ảnh. Từ ảnh màu có ba kênh RGB, chúng ta đưa về ảnh xám một kênh. Giá trị tại mỗi điểm ảnh của ảnh xám sẽ đại diện cho độ đen tại đó, giá trị này nằm trong dải từ 0 đến 255. Giá trị 0 đại diện cho màu đen, 255 đại diện cho màu trắng.
33 Hình 3-3: Số chiều của ảnh sẽ giảm khi chuyển đổi sang ảnh xám
a) b)
Hình 3-4: So sánh ảnh gốc và ảnh xám (a) ảnh gốc b) ảnh xám) 3.1.2. Làm mờ ảnh
Làm mờ ảnh là một trong các phương pháp được sử dụng trong tiền xử lý ảnh. Mục đích của việc làm này là giảm nhiễu và giảm độ chi tiết không cần thiết của ảnh, qua đó cho chúng ta một bức ảnh mượt hơn. Nhìn một cách chi tiết hơn, chúng ta đã làm mượt sự chuyển đổi màu sắc từ bên này sang bên kia một đường cạnh của bức ảnh, thay vì có một sự thay đổi đột ngột. Làm mờ là một ví dụ của việc sử dụng bộ lọc thông thấp vào xử lý ảnh. Có một vài thuật toán làm mờ ảnh được sử dụng trong opencv như làm mờ trung bình, làm mờ Gaussian.
Làm mờ trung bình – Averaging blur
Phương pháp này sử dụng một hạt nhân có kích thước XxX – với X là số lẻ, nó đơn giản là đặt hạt nhân này vào một pixel trên bức ảnh, tính tổng tại tất cả X*X giá trị điểm ảnh trong hạt nhân, sau đó lấy trung bình. Giá trị tại tâm hạt nhân sẽ được thay thế bằng giá trị trung bình. Sau đây là ví dụ về hạt nhân có kích thước 3x3
34 Lấy ví dụ một vùng điểm ảnh sau khi áp dụng hạt nhân 3x3. Giá trị tại tâm hạt nhân sẽ thay đổi bằng (16 + 20 + 30 + 17 + 18 + 25 + 20 + 23 + 20)/9 = 21
Làm mờ Gausian – Gaussian blur
Gaussian blur sử dụng phương pháp thực hiện tương tự Averaging blur, sử dụng hạt nhân với số chiều lẻ. Sự khác biệt giữa hai loại làm mờ này nằm ở cách thức mà các giá trị điểm ảnh trong hạt nhân được đánh trọng số khi tính toán. Trong Averaging blur các điểm ảnh trong hạt nhân được đánh trọng số bằng nhau, do đó đơn giản là lấy trung bình. Trong Gaussian blur, mỗi điểm ảnh trong hạt nhân gần trung tâm hạt nhân hơn sẽ mang trọng số cao hơn so với điểm ảnh xa trung tâm.
Hình 3-5: Đồ thị hàm Gaussian
16 20 30 17 18 25 20 23 20
16 20 30 17 21 25 20 23 20
35
So sánh làm mờ bằng bộ lọc Gaussian và bộ lọc trung bình
a)
b)
c)
Hình 3-6: So sánh làm mờ Gaussian và làm mờ trung bình
Qua sử dụng các kích thước hạt nhân khác nhau, chúng ta thấy rằng khi kích thước càng lớn càng nhiều nhiễu được loại bỏ, nhưng độ chi tiết thì cũng theo đó giảm dần. So sánh kết quả cho thấy bộ lọc Gaussian đem lại hiệu quả tốt hơn. Qua đó trong luận văn, Gaussian blur được sử dụng.
3.1.3. Lọc ảnh sau khi làm mờ
Biến đổi hình thái học là các phương thức cơ bản trên hình dạng của ảnh. Hai phép biến đổi cơ bàn là xói mòn và trương nở, hay các biến thể của nó là hàm Opening, Closing,…
36
a) b) c)
Hình 3-7:Mô tả biến đổi hình thái học: a) ảnh gốc b) ảnh qua phép xói mòn c) ảnh qua phép trương nở [14]
Sau khi làm mờ bằng bộ lọc Gaussian, hàm Opening được áp dụng để loại bỏ các thành phần nhiễu bên ngoài đối tượng. Hàm opening là tổ hợp của hai hàm trên theo thứ tự xói mòn -> trương nở.
Hình 3-8: Tác dụng của hàm opening [14]
Qua hình trên ta có thể thấy những thành phần nhiễu bên ngoài nền đối tượng bị loại bỏ. Mức độ loại bỏ sẽ phụ thuộc vào kích thước hạt nhân sử dụng.
Áp dụng vào đề tài, ta được:
37 a)
b)
Hình 3-9: Sử dụng hàm opening trong đề tài (a) ảnh sau làm mờ Gausian b) ảnh sau opening)
3.1.4. Nhị phân hóa
Để loại bỏ hoàn toàn nền ra khỏi đối tượng, chúng ta cần đến hàm nhị phân hóa. Nhị phân ảnh sẽ làm nổi bật đối tượng trên nền ảnh. Qua đó, việc trích xuất đối tượng sẽ dễ dàng hơn.
Có rất nhiều thuật toán để nhị phân hóa, có thể là nhị phân hóa đơn giản bằng cách chọn ngưỡng cố định, hoặc có thể là nhị phân hóa ngưỡng thích nghi. Trong mô hình này, tôi sử dụng thuật toán Otsu’s. Trong thuật toán ngưỡng cố định, chúng ta phải lựa chọn giá trị ngưỡng sao cho tốt nhất. Đó là bài toán khó “thử và lỗi” khi các ảnh đầu vào được chụp trong các điều kiện không đồng nhất. Xem xét một ảnh hai cực, nói cách khác là ảnh mà biểu đồ histogram có hai đỉnh. Thuật toán Otsu lấy xấp xỉ giá trị trung bình của hai cực này cho ngưỡng nhị phân. Đối với các ảnh không phải hai cực, Otsu sẽ không cho kết quả chính xác.
38 Hình 3-10: Hoạt động của thuật toán Otsu [14]
Việc kết hợp bộ lọc Gaussian trước đó cho kết quả nhị phân tốt hơn. Khi áp dụng vào bài toán thực tế của đề tài, kết quả tốt hơn được ghi nhận.
Hình 3-11: Áp dụng thuật toán Otsu vào đề tài 3.1.5. Lọc ảnh sau khi nhị phân
Đối ngược với sử dụng hàm opening để lọc sau khi làm mờ, sau khi nhị phân tôi sử dụng hàm closing nhằm mục đích trám đầy các lỗ hổng nhỏ bên trong đối tượng. Hàm closing là tổ hợp của hàm xói mòn và trương nở theo thứ tự thực hiện:
trương nở -> xói mòn.
39 Hình 3-12: Tác dụng của hàm closing [14]
Áp dụng vào bài toán cho việc trám đầy các lỗ hổng nhỏ trên đối tượng. Nét chữ sẽ không đồng đều về màu sắc. Do đó khi nhị phân sẽ xuất hiện các lỗ hổng nhỏ trên chữ. Điều đó làm mất đi độ chính xác. Kết hợp với phép nghịch đảo bit.
Đối tượng được chuyển sang màu trắng nhằm mục đính phân tách sau đó.
Hình 3-13: Áp dụng hàm closing vào đề tài
Sau khi tiền xử lý ảnh đầu vào, kết quả thu được là đối tượng chữ viết tay nổi bật trên nền đen với sự tối ưu nhất. Để có thể đưa vào nhận dạng sau đó, việc phân tách các chữ cái riêng rẽ là điều bắt buộc.