Đọc ký tự trong văn bản ngày nay đã trở thành một mảng lớn trong Thị giá máy tính (CV: Computer Vision). Nhìn về lịch sử phát triển của đọc ký tự trong văn bản chúng ta có thể thấy rằng đây là mảng ứng dụng khá mới mẻ. Đọc ký tự trong văn bản đã được tạo ra nhằm giải quyết 2 vấn đề: Phục vụ sự phát triển của điện báo và tạo ra các thiết bị đọc sách cho người mù. Năm 1914, Emanuel Goldberg đã phát triển một máy tính có thể đọc các ký tự và chuyển đổi chúng thành một mã số điện báo chuẩn (telegraph code). Cùng thời gian đó Edmund Fournier dAlbe phát triển Optophone, một máy quét cầm tay khi di chuyển trên một trang in. Thiết bị này có thể tạo ra tiếng khi “thấy” chữ cái hoặc ký tự tương ứng. Trong cuối những năm cuối thập niên 1920 Emanuel Goldberg phát triển một hệ thống được gọi là “Máy tính thống kê” để tìm kiếm số lưu trữ trong vi phim (microfilm) bằng cách sử dụng một hệ thống nhận diện mã quang học. Năm 1931 ông được cấp bằng sáng chế của Hoa Kỳ số 1,838,389 cho phát minh của mình. Bằng sáng chế đã được mua lại bởi IBM sau đó.
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG -o0o -
BÁO CÁO
ĐỒ ÁN MÔN HỌC 2
PHÁT HIỆN KÝ TỰ BẰNG PHƯƠNG PHÁP BIẾN ĐỔI NÉT CHỮ (SWT)
Tp Hồ Chí Minh, tháng 6 năm 2014
Trang 2ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự do – Hạnh phúc
-✩ - -✩ -
Số: /BKĐT Khoa: Điện – Điện tử Bộ Môn: Viễn Thông NHIỆM VỤ ĐỒ ÁN MÔN HỌC 2
1 HỌ VÀ TÊN : Nguyễn Tuấn Quang MSSV: 41002596 2 NGÀNH: ĐIỆN TỬ - VIỄN THÔNG LỚP : DD10DV05 Đề tài: PHÁT HIỆN KÝ TỰ BẰNG PHƯƠNG PHÁP BIẾN ĐỔI NÉT CHỮ (SWT) 3 Nhiệm vụ (Yêu cầu về nội dung và số liệu ban đầu):
4 Ngày giao nhiệm vụ đồ án:
5 Ngày hoàn thành nhiệm vụ:
6 Họ và tên người hướng dẫn: Phần hướng dẫn
Nội dung và yêu cầu Đồ án đã được thông qua Bộ Môn Tp.HCM, ngày… tháng… năm 2013 CHỦ NHIỆM BỘ MÔN NGƯỜI HƯỚNG DẪN CHÍNH PHẦN DÀNH CHO KHOA, BỘ MÔN: Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Nơi lưu trữ đồ án: ………
Trang 4PHẦN MỞ ĐẦU Lời nói đầu
Đọc ký tự trong văn bản ngày nay đã trở thành một mảng lớn trong Thị giá máy tính (CV: Computer Vision) Nhìn về lịch sử phát triển của đọc ký tự trong văn bản chúng ta có thể thấy rằng đây là mảng ứng dụng khá mới mẻ Đọc ký tự trong văn bản đã được tạo ra nhằm giải quyết 2 vấn đề: Phục vụ sự phát triển của điện báo và tạo ra các thiết bị đọc sách cho người mù Năm 1914, Emanuel Goldberg đã phát triển một máy tính có thể đọc các ký tự và chuyển đổi chúng thành một mã số điện báo chuẩn
(telegraph code) Cùng thời gian đó Edmund Fournier d'Albe phát triển Optophone, một máy quét cầm tay khi di chuyển trên một trang in Thiết bị này có thể tạo ra tiếng khi “thấy” chữ cái hoặc ký tự tương ứng Trong cuối những năm cuối thập niên 1920 Emanuel Goldberg phát triển một hệ thống được gọi là
“Máy tính thống kê” để tìm kiếm số lưu trữ trong vi phim (microfilm) bằng cách sử dụng một hệ thống nhận diện mã quang học Năm 1931 ông được cấp bằng sáng chế của Hoa Kỳ số 1,838,389 cho phát minh của mình Bằng sáng chế đã được mua lại bởi IBM sau đó
Ngày nay, cùng với sự phát triển vượt bậc của phần cứng máy tính và công nghệ điện toán đọc ký tự trong văn bản đã đóng góp rất nhiều ứng dụng thực tiễn trong đời sống hằng ngày Chúng ta có thể lấy
ví dụ như:
- Nhập dữ liệu cho mục đích công việc: số hóa sách, kiểm tra hay xác thực hóa đơn, tấm séc, hóa đơn, hộ chiếu…
- Xác thực biển số xe
- Khai thác thông tin quan trọng trong những tài liệu bảo hiểm
- Lấy thông tin từ danh thiếp và lưu và danh bạ
- Số hóa sách một cách nhanh chóng nhằm đảm bảo việc lưu trữ sách dễ dàng và thuận tiện hơn
Ta có thể kể đến dự án số hóa sách lớn như Project Gutenberg
- Có thể tìm kiếm thông tin trong các bức ảnh KTS Rất nhiều ứng dụng ngày nay được trang bị tính năng này như Neo Reader (trên smartphone), Google Translate…
- Chuyển đổi chữ viết tay bằng chữ in dùng trong việc nhập dữ liệu một cách tự nhiên và nhanh chóng cho những ai không thích nhập liệu bằng bàn phím
- Áp dụng trong công nghệ hỗ trợ người bị khiếm thị
Đọc ký tự trong văn bản đã và đang là một thách thức thu hút được rất nhiều sự chú ý từ các nhà nghiên cứu, những nhà sản xuất thiết bị điện tử và cả người dùng Hai nhánh chính trong Đọc ký tự trong văn bản
là Phát hiện ký tự và Nhận diện ký tự Đồ án này nhằm mục đích trình bày về Phát hiện ký tự các đoạn
văn bản trong một hình ảnh tự nhiên bằng cách sử dụng một phiên bản nâng cao của chuyển đổi bề rộng nét chữ (SWT: Stroke Width Transformation) Ứng dụng nhận được hình ảnh RGB để tìm kiếm chữ trong
đó và trả về một hình ảnh mới nơi các đoạn văn bản phát hiện được đánh dấu Do các tính năng của SWT, kết quả có thể phát hiện văn bản không phân biệt kích thước, hướng, phông chữ và ngôn ngữ của nó
Trang 5Mục lục
Các mục chính bao gồm
1.1 Hai nhánh chính của Đọc ký tự trong văn bản Trang
Trang 6Phần I Giới thiệu sơ lược về SWT
1.1 Hai nhánh chính của Đọc ký tự trong văn bản:
Đọc ký tự trong văn bản trong một khung cảnh thiên nhiên là một phần quan trọng của nhiều tác vụ thị giác máy tính (Computer Vision-CV) Ví dụ, việc thực hiện nhận dạng ký tự quang học (Optical Character Recognition-OCR) các thuật toán có thể được cải thiện bằng cách đầu tiên xác định các khu vực của văn bản trong hình ảnh Phát hiện văn bản trong những cảnh thiên nhiên là một lĩnh vực nghiên cứu chuyên sâu và có rất nhiều cách tiếp cận để giải quyết vấn đề này Tuy nhiên, hầu hết các chương trình phát hiện văn bản OCR hạn chế người sử dụng ngôn ngữ cụ thể, kích thước và hướng của văn bản Hơn nữa, trong một cảnh sắc thiên nhiên, chúng ta có thể không muốn làm cho các giả định như vậy và hạn chế các kết quả phù hợp Có một sự cân bằng hạn chế mà chúng ta áp dụng và chất lượng của kết quả Chúng ta càng giới hạn tìm kiếm trong hình thì càng ít thông tin sai/ nhiễu (noise) mà chúng ta gặp phải.[1]
Sự khác nhau cơ bản giữa OCR (Nhận diện ký tự Quang học) và Phát hiện ký tự
vụ chính là “chỉ ra” vùng ký tự
Được ứng dụng trong việc phát hiện vùng ký tự, từ
đó ta sẽ dùng các thuật toán thích hợp để xử ký vùng ký tự đó
Ví dụ về OCR và Phát hiện ký tự
OCR
Hình chụp từ một văn bản
Trang 7Đoạn văn bản được đọc bằng OCR (Kết quả lấy từ trang web http://www.onlineocr.net/)
TD
TD-Thông qua các thuật toán nhằm nhận biết các vùng ký tự
Trang 8Đồ án này sẽ giới thiệu về thuật toán SWT và đề cập chi tiết về thuật toán cũng như ứng dụng và hạn chế của nó
1.2 SWT
Có rất nhiều thuật toán để phát hiện ký tự nhưng thuật toán để đề xuất mới nhất và tỏ ra hiệu quả vượt trội so với các thuật toán khác đó chính là SWT SWT thể hiện sự vượt trội so với các thuật toán khác ở chỗ dễ hiểu và tiêu tốn ít tài nguyên phần cứng khi thực hiện.[2]
Được công bố năm 2010 bởi 3 tác giả Boris Epshtein, Eyal Ofek và Yonatan Wexler Công trình khoa học này đã được Thuật toán này còn khá mới mẻ đối với giới xử lý ảnh
SWT là thuật toán dựa trên phép biến đổi về bề rộng chữ Điều này có nghĩa là ta có thể phát hiện được vùng ký tự của các các ngôn ngữ khác nhau một cách dễ dàng mà không đòi hỏi phải cho máy học trước với lượng database lớn Ví dụ sau đây cho ta cái nhìn chi tiết hơn.[3]
Ví dụ 1:
Ảnh lấy từ trang www.gabrielweinberg.com
Trang 9Ảnh lấy từ trang www.designsngold.com
Ảnh lấy tử trang www.canadianarabcommunity.com
Trang 10Từ Ví dụ 1 ta có thể thấy dù là chữ viết của ngôn ngữ nào đi nữa thì các kí tự có môtk đặc điểm chung đó
là nét chữ luôn có bề rộng thay đổi nhỏ
Trang 11Hình ảnh trong thực tế có rất nhiều chi tiết phụ như hoa, lá, cành nên nếu ta áp dụng luôn việc nhận diện ký tự thì kết quả ra sẽ rất tệ Dưới đây là kết quả của việc nhận diện ký tự trực tiếp chưa qua phép biến đổi
Trang 12Trang 12 Kết quả này được lấy từ trang http://www.free-ocr.com/
Trang 13Phần II Thuật toán xử lý của SWT
2.1 Vấn đề và giả định
Hình ảnh đưa vào xử lý là những ảnh tự nhiên với nhiều chi tiết dư, trái với những trang được quét, fax
và danh thiếp Phần mô phỏng trong Matlab có thể nhận được bất kỳ hình ảnh của định dạng JPEG Kích thước tiêu chuẩn của hình ảnh thử nghiệm là 800x600 (hình ảnh lớn hơn việc chạy ứng dụng sẽ lâu hơn một chút) Hình ảnh không cần quá tốt (ví dụ sẽ được đưa ra trong phần các thí nghiệm và kết quả) nhưng văn bản trong hình không quá mờ Ngoài ra, việc nhận diện không phụ thuộc ngôn ngữ của văn bản và hướng của nó Văn bản cong sẽ khó khăn hơn để phát hiện nhưng dù sao vẫn có thể
Việc phát hiện văn bản trong một thực thể có thể là chữ màu sáng trên nền tối, hoặc chữ màu tối trên nền sáng Nên chúng ta sẽ có 2 lựa chọn khi xử lý ảnh là “Nền trắng chữ đen” hay “Nền đen chữ trắng” Kết quả sẽ hiển thị các ký tự được phát hiện nhóm lại thành một khu vực
2.2 Biến đổi bề rộng nét chữ (SWT)
Phần này sẽ mô tả thuật toán chuyển đổi bề rộng nét chữ Thuật toán nhận được một hình ảnh RGB và trả về một hình ảnh có cùng kích thước Gồm có 3 bước chính: [4]
- Biến đổi bề rộng của nét chữ
- Nhóm các điểm ảnh vào các kí tự có thể dựa trên bề rộng nét chữ
- Nhóm các kí tự đó vào vùng văn bản
Một nét chữ trong hình ảnh là một nhóm liên tục có chiều rộng gần như không đổi Một ví dụ của một nét chữ được thể hiện trong hình 1 (a) SWT tính toán cho mỗi điểm ảnh chiều rộng của nét mà khả năng chứa điểm ảnh là cao nhất
Hình 1: Cách thức thực hiện của SWT (a) Nét chữ bình thường, những điểm ảnh cấu tạo thành nét này thì đậm hơn so với nền
Trang 14(b) p là pixel tại biên của nét, tìm theo hướng gradient p ta tìm được q tại biên đối xứng
(c) Mỗi pixel theo tia được gắn giá bị nhỏ nhất của nó và chúng ta tìm được bề rộng của nét
Đầu tiên, tất cả các điểm ảnh được khởi tạo với bề dày nét ∞ Sau đó, chúng ta tính toán bản đồ cạnh (Edge map) của hình ảnh bằng cách sử dụng thuật toán phát hiện cạnh Canny Chúng ta coi các cạnh như ranh giới nét chữ Nếu p là một điểm ảnh cạnh, hướng gradient dp của nó vuông góc với hướng của ranh giới nét Vì vậy, bước tiếp theo là tính toán hướng gp gradient của các điểm ảnh cạnh và chạy theo các tia
r = p + n * gp (n> 0) cho đến khi chúng ta tìm thấy một điểm ảnh cạnh q Nếu hướng gradient dq tại q là khoảng đối diện với dp (dq = dp±π/6) thì mỗi điểm ảnh trong các tia được gán khoảng cách giữa p và q như bề rộng nét chữ Mỗi giá trị thành phần s của ảnh SWT đầu ra tương ứng với những pixel trong tập [p,q] nếu như nó có giá trị thấp hơn Tuy nhiên, nếu một điểm ảnh cạnh q không tìm thấy hoặc dq là không đối diện với dp, tia được loại bỏ Để thích ứng với cả hai loại văn bản sáng trên nền tối và chữ màu tối trên nền sáng chúng ta cần phải áp dụng các thuật toán hai lần: một lần với hướng tia dp và một lần với -dp.[5] Sau khi thực bước đầu đầu tiên mô tả ở trên, điểm ảnh trong các địa điểm phức tạp có thể không giữ giá trị bề rộng nét chữ Vì lý do đó, chúng ta sẽ vượt qua cùng mỗi tia không bị loại bỏ, trong đó mỗi điểm ảnh trong tia sẽ nhận được giá trị tối thiểu giữa giá trị hiện tại của nó và giá trị trung bình tia kế cận (Trong các thuật toán ban đầu, các điểm ảnh được gán giá trị trung bình nhưng từ thí nghiệm trên ta nhận được kết quả tốt hơn khi ta lấy tối thiểu)
Hình 2:
Lấp đầy pixel với những giá trị SWT (a) Pixel màu đỏ là một ví dụ về việc được lấp đầy với giá trị tối thiểu của độ dài tia ngang và dọc đi
qua nó Giá trị bề rộng tia chính xác được chứa trong nó
(b) Pixel màu đỏ chứa giá trị tối thiểu giữa độ dài 2 tia Đây không phải là giá trị đúng của bề rộng
nét Muốn chính xác ta cần phải thông qua bước tiếp theo (sẽ trình bày ở phần sau) Hình trên cho ta thấy rằng những trường hợp phức tạp như ở góc thì ta sẽ không lấy được bề rộng chữ đúng như miêu tả ở phía trên Chính vì thế nên ta sẽ thông qua những tia không bị loại bỏ thêm một lần nữa, tính giá trị median SWT của m của tất cả pixel và thiết lập tất cả giá trị của những tia với giá trị SWT trên m thành m
2.3 Loại bỏ một số dòng từ bản đồ bề rộng nét chữ (SW-Map)
Trang 15Để cải thiện kết quả, ta thêm một bước trong thuật toán, mà mục đích là để cải thiện tách kí tự Các ký tự trong hình ảnh kết nối với nhau nhiều lần và thuật toán nhận một nhóm các kí tự như một thành phần duy nhất Vì các tính chất của một nhóm các ký tự không nhất thiết phải phù hợp với các tính chất của một ký tự duy nhất, các thành phần này có thể bị bỏ trong các giai đoạn tiếp theo Khi xem xét các bước của thuật toán, ta nhận thấy rằng các thuật toán SW trả về nhiều dòng rải rác kết nối các chữ cái với nhau Sau khi loại bỏ dòng như vậy thì những kí tự này không còn được coi là một phần của các thành phần tương tự Vì vậy, việc thêm một bước mà các thuật toán đi qua mỗi điểm ảnh, và nếu vùng lân cận của nó không chứa đủ điểm ảnh từ các thành phần của nó, điểm ảnh đó được xóa khỏi các thành phần Kết quả
từ việc thêm bước này sẽ được chứng minh trong phần sau
2.4 Tìm kiếm ký tự thích hợp
Đầu ra của SWT là một ảnh mà mỗi giá trị pixel có chứa độ dài của nét có xác suất cao nhất mà nó thuộc
về Bước tiếp theo là nhóm các điểm ảnh vào kí tự thích hợp Hai pixel lân cận có thể được nhóm với nhau nếu có chung giá bề rộng nét Điều này sẽ được thực hiện bằng đầu tiên nhóm pixel với bề rộng nét tương
tự và sau đó áp dụng một số quy tắc để phân biệt các kí tự thích hợp Nhóm các hình ảnh sẽ được thực hiện bằng cách sử dụng một thuật toán kết nối các phần với nhau Để cho phép thay đổi độ rộng suốt nét trong một kí tự chúng ta sẽ cho hai điểm ảnh được nhóm lại với nhau nếu tỷ lệ SWT của chúng ít hơn 3.0.[6]
Bây giờ chúng ta phải phát hiện các thành phần liên kết giống như kí tự thích hợp bằng cách áp dụng một tập hợp các quy tắc khá linh hoạt Những quy định như sau:
- Phương sai của nét-chiều rộng trong một thành phần không phải là quá lớn Điều này giúp với loại
bỏ tán lá trong hình ảnh tự nhiên vì tán lá thường bị nhầm lẫn với văn bản
- Tỉ lệ của một thành phần phải nằm trong một phạm vi nhỏ của các giá trị, để loại bỏ các thành phần dài và hẹp
- Tỷ lệ giữa đường kính của các thành phần và chiều rộng trung bình của nét ít hơn một ngưỡng đã được học (ở đây ta cho giá trị là 0.1-10) Điều này cũng giúp loại bỏ các thành phần dài và hẹp
- Các thành phần có kích thước quá lớn hay quá nhỏ cũng sẽ bị bỏ qua Điều này được thực hiện bằng cách hạn chế chiều dài, chiều rộng và số điểm ảnh của các thành phần
- Ngoài những quy định trên, việc thêm một quy tắc giúp loại bỏ nhiều nhiễu Nó quy định rằng tỷ
lệ giữa số điểm ảnh của các thành phần và số lượng điểm ảnh trong khung giới hạn của các thành phần nên trong một phạm vi giới hạn Điều này bác bỏ các thành phần mà trải rộng trên một không gian rộng lớn nhưng có một số nhỏ điểm ảnh, và các thành phần trong đó bao gồm hầu hết các khung giới hạn của chúng
Các ngưỡng sử dụng ban đầu chúng ta lấy từ SWT mô tả ở trên và được cập nhật một chút theo từng hình
để ra kết quả có chất lượng cao nhất Các thành phần kết nối còn lại được coi là kí tự thích hợp và sẽ được tổng hợp thành các vùng văn bản.[7]
Trang 16Một lần nữa, chúng ta sẽ sử dụng một tập nhỏ các quy tắc để nhóm các kí tự lại với nhau thành các vùng văn bản Những quy định này sẽ xem xét các cặp chữ cái như sau:[8]
- Hai kí tự thích hợp nên có bề dày nét tương tự Lý do là chúng ta sẽ hạn chế tỷ lệ giữa chiều rộng trung bình nét được ít hơn một số ngưỡng
- Tỷ lệ giữa chiều cao của các chữ cái và giữa độ rộng của các chữ cái không được vượt quá 2,5 Điều này được quy định là do chữ được viết hoa bên cạnh chữ thường
- Khoảng cách giữa các chữ cái không được vượt quá ba lần chiều rộng của một chữ rộng hơn
- Chữ cái của cùng một từ được dự kiến sẽ có một màu sắc tương tự, do đó chúng ta so sánh các màu trung bình của các kí tự thích hợp cho ghép nối
- Một lần nữa, việc thêm một quy tắc trong đó hạn chế số lượng điểm ảnh của cặp chữ cái trong khung giới hạn của cặp
Khi quyết định ghép hai chữ cái với nhau, chúng ta có 2 lựa chọn: hoặc cả chữ không được gán ở một khu vực nào, hoặc một trong số chúng đã được nhóm lại với các chữ cái khác Nếu cả hai đều không được gán, điều chúng ta cần làm là khai báo một khu vực mới Nếu không, chúng ta cần phải kiểm tra thêm một kí
tự gửi cho các khu vực khác là hợp lý Qua thực hiện chúng ta nhận thấy: một sự hợp nhất là hợp lý nếu
số lượng điểm ảnh của các ký tự trong khu vực và số điểm ảnh của kí tự để thêm chia cho kích thước của khung giới hạn của tất cả các chữ cái kết hợp không được thấp hơn một số ngưỡng Điều này sẽ đảm bảo khu vực của văn bản sẽ không có kết thúc lỏng lẻo và sẽ tạo thành một "hộp" văn bản Cách tiếp cận này
có một chút khác biệt so với phương pháp tiếp cận trong các thuật toán ban đầu, trong đó tập hợp các chữ cái lại với nhau thành chuỗi.[9]
Cuối cùng, khu vực có ít hơn 3 ký tự sẽ bị loại bỏ Biểu đồ thuật toán được thể hiện trong hình 3 Việc thực hiện đến giai đoạn tập hợp văn bản Chúng ta có thể thấy qua sơ đồ khối sau [10]