Ở Việt Nam, các ứng dụng về xử lý ảnh đã bước đầu được triển khai trên một số lĩnh vực như lắp đặt hệ thống nhận dạng biển số xe, nhận dạng vân tay, … Môn học xử lý ảnh ở các trường đại
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN
NGUYỄN XUÂN CƯỜNG
NGHIÊN CỨU CÁC KỸ THUẬT XỬ LÝ ẢNH PHỤC VỤ VIỆC NÂNG CAO CHẤT LƯỢNG NHẬN DẠNG TIẾNG VIỆT
LUẬN VĂN THẠC SĨ
Hà Nội - 2015
Trang 2VIỆN CÔNG NGHỆ THÔNG TIN
NGUYỄN XUÂN CƯỜNG
NGHIÊN CỨU CÁC KỸ THUẬT XỬ LÝ ẢNH PHỤC VỤ VIỆC NÂNG CAO CHẤT LƯỢNG NHẬN DẠNG TIẾNG VIỆT
Ngành: Công nghệ Thông tin Chuyên ngành: Quản lý Hệ thống Thông tin
Mã số: Chuyên ngành đào tạo thí điẻm
LUẬN VĂN THẠC SĨ
NGƯỜ I HƯỚNG DẪN KHOA HỌC: Ts Vũ Duy Linh
Hà Nội – 2015
Trang 3LỜI CAM ĐOAN Tôi xin cam đoan rằng, đây là kết quả nghiên cứu của tôi trong đó có sự giúp
đỡ rất lớn của thầy hướng dẫn và các đồng nghiệp ở cơ quan Các nội dung nghiên cứu và kết quả trong đề tài này hoàn toàn trung thực
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đã liệt
kê tại phần “Tài liệu tham khảo” ở cuối luận văn
Trang 4LỜI CẢM ƠN
Em xin chân thành cảm ơn đến Viện Công Nghệ thông tin, Đại học Công Nghệ, Đại học Quốc gia Hà Nội đã tạo điều kiện cho em học tập và thực hiện luận văn này
Em xin gửi lời cảm ơn chân thành đến Tiến sĩ Vũ Duy Linh, người đã tận tình hướng dẫn em trong quá trình làm luận văn này
Em xin cảm ơn quý Thầy Cô đã nhiệt tình giảng dạy cho chúng em trong những năm học vừa qua
Cuối cùng, em xin được gửi lời cảm ơn chân thành đến gia đình cũng như bạn
bè, đồng nghiệp đã luôn ủng hộ, động viên em để em có thể có điều kiện tốt nhất để học tập và nghiên cứu
Hà Nội, tháng 6/2015 Nguyễn Xuân Cường – CIO 04 Viện Công nghệ thông tin – Đại học Quốc gia Hà Nội
Trang 5MỤC LỤC
BẢNG KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT 6
MỞ ĐẦU 7
CHƯƠNG 1 – TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ VIỆN OPENCV 9
1.1 Giới thiệu về xử lý ảnh 9
1.1.1 Phần thu nhận ảnh 10
1.1.2 Tiền xử lý 10
1.1.3 Phân đoạn ảnh (phân vùng ảnh) .11
1.1.4 Biểu diễn và mô tả 11
1.1.5 Nhận dạng và nội suy 11
1.1.6 Cơ sở tri thức .11
1.2 Những vấn đề cơ bản trong hệ thống xử lý ảnh 12
1.2.1 Điểm ảnh 12
1.2.2 Độ phân giải của ảnh 13
1.2.3 Mức xám của ảnh 13
1.2.4 Định nghĩa ảnh số 13
1.2.5 Mối liên hệ giữa các điểm ảnh 14
1.3 Những vấn đề khác trong xử lý ảnh 14
1.3.1 Biến đổi ảnh 14
1.3.2 Nén ảnh 15
1.4 Một số phương pháp biểu diễn ảnh 15
1.4.1 Mã loạt dài 15
1.4.2 Mã xích 15
1.4.3 Mã tứ phân 16
1.5 Thư viện OpenCV 16
1.5.1 Tổng quan 16
1.5.2 Những điểm đặc trưng 17
1.5.3 Các tổ chức 19
1.6 ImageMagick 19
CHƯƠNG 2 – MỘT SỐ PHƯƠNG PHÁP TIỀN XỬ LÝ NÂNG CAO CHẤT LƯỢNG ẢNH 21
2.1 Cải thiện ảnh sử dụng các toán tử điểm 21
2.1.1 Tăng độ tương phản (Stretching Contrast) .22
Trang 62.1.2 Tách nhiễu và phân ngưỡng 23
2.1.3 Biến đổi âm bản (Digital Negative) 24
2.1.4 Cắt theo mức (Intensity Level Slicing) 24
2.1.5 Trích chọn bit (Bit Extraction) 25
2.1.6 Trừ ảnh 26
2.1.7 Nén dải độ sáng 26
2.1.8 Mô hình hóa và biến đổi lược đồ xám 26
2.2 Cải thiện ảnh dùng toán tử không gian 27
2.2.1 Làm trơn nhiễu bằng lọc tuyến tính: lọc trung bình và lọc dải thông thấp 28
2.2.2 Làm trơn nhiễu bằng lọc phi tuyến 30
2.2.3 Mặt lạ gờ sai phân và làm nhẵn 32
2.2.4 Lọc thông thấp, thông cao và lọc dải thông 32
2.2.5 Khuyếch đại và nội suy 33
2.2.6 Một số kỹ thuật cải thiện ảnh nhị phân 35
2.3 Khôi phục ảnh 36
2.3.1 Các mô hình quan sát và tạo ảnh 38
2.3.2 Các bộ lọc 40
CHƯƠNG 3 – TRIỂN KHAI CHƯƠNG TRÌNH VÀ KẾT QUẢ 43
3.1 Cài đặt và tích hợp thư viện OpenCV vào Microsoft Visual Studio 43
3.2 Triển khai chương trình 45
3.2.1 Xử lý phông nền chứng minh thư 45
3.2.2 Xử lý đường kẻ ô trong văn bản 46
3.2.3 Xử lý tăng DPI cho văn bản 47
3.3 Mã chương trình 48
3.3.1 Đưa ảnh màu về đa mức xám 48
3.3.2 Tăng độ nét 49
3.3.3 Tăng độ sáng 51
3.3.4 Tăng độ tương phản 53
3.3.5 Loại bỏ phông nền 54
3.3.6 Loại bỏ nhiễu 56
3.3.7 Tăng DPI 58
3.3.8 Xóa đường kẻ ô 59
3.4 Hình ảnh triển khai chương trình .62
Trang 7CHƯƠNG 4 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
4.1 Kết luận 64
4.2 Hướng phát triển 64
TÀI LIỆU THAM KHẢO 65
Trang 9MỞ ĐẦU
Sự cấp thiết của đề tài
Xử lý ảnh là lĩnh vực mà ngày nay được phát triển và ứng dụng rất rộng rãi trong nhiều lĩnh vực khác nhau nhờ vào sự phát triển ngày càng mạnh mẽ của các
hệ thống máy tính, các thuật toán và công trình nghiên cứu khác nhau của nhiều nhà khoa học trên thế giới
Ở Việt Nam, các ứng dụng về xử lý ảnh đã bước đầu được triển khai trên một
số lĩnh vực như lắp đặt hệ thống nhận dạng biển số xe, nhận dạng vân tay, … Môn học xử lý ảnh ở các trường đại học được xem là môn học bắt buộc ở một số ngành như công nghệ thông tin, điện tử viễn thông, … Tuy nhiên nhìn một cách tổng quan thì số lượng các ứng dụng được triển khai trên thực tế vẫn là quá ít, lĩnh vực này sẽ còn phát triển mạnh mẽ trong tương lai nếu được quan tâm một cách nghiêm túc Một trong những ứng dụng phổ biến hiện nay liên quan mật thiết với xử lý ảnh
đó là nhận dạng ký tự quang học – OCR
Các chương trình hỗ trợ OCR hiện nay có thể nhận dạng được ký với tỷ lệ trên 90% đối với ảnh có chất lượng nét và font chữ thông dụng Đối với hình ảnh chất lượng thấp, font chữ đặc biệt, chữ viết tay hoặc có phông nền phức tạp thì kết quả cho ra không mấy khả quan, hầu như không nhận dạng được
Với sự phát triển mạnh mẽ của công nghệ, ngày càng có nhiều yêu cầu cao hơn trong các ứng dụng liên quan đến nhận dạng ký tự quang học, yêu cầu nhận dạng chính xác hơn, nhanh hơn
Nội dung của luận văn
Với mục đích như trên luận văn có những nội dung như sau:
- Luận văn tổng hợp lý thuyết về xử lý ảnh – giải pháp nâng cao chất lượng hình ảnh phục vụ cho nhận dạng, cụ thể ở đây là nhận dạng tiếng Việt
- Luận văn mô tả một số phương pháp xử lý ảnh Nền tảng lý thuyết này sẽ được triển khai thử nghiệm trong luận văn này
Trang 10- Luận văn đã mô tả từng bước triển khai xử lý ảnh, đưa ra kết quả sau khi xử
lý
Cấu trúc luận văn
Với mục tiêu xây dựng ứng dụng tiền xử lý ảnh phục vụ cho nhận dạng, luận văn được chia làm bốn chương:
Chương 1: Tổng quan về tiền xử lý ảnh và thư viện OpenCV
Chương này giới thiệu về các khái niệm trong xử lý ảnh, giới thiệu qua về thư viện xử lý ảnh OpenCV
Chương 2: Một số phương pháp tiền xử lý nâng cao chất lượng ảnh
Từ các khái niệm xử lý ảnh được đưa ra ở Chương I, chương này giới thiệu một
số phương pháp tiền xử lý ảnh như: nhị phân hóa, tăng cường độ sáng, tăng cường
độ tương phản, loại bỏ phông nền, khử nhiễu, …
Chương 3: Triển khai chương trình và kết quả
Chương này giới thiệu về chương trình đã được triển khai, các bước thực hiện
và các kết quả của mỗi bước đạt được
Chương 4: Kết luận và hướng phát triển
Chương này tôi tổng kết lại các kết quả và các đóng góp mà việc thực hiện đề tài đem lại Ngoài ra, tôi cũng đề xuất các phương hướng nghiên cứu tiếp theo, nhằm giúp cho đề tài trở lên hoàn thiện hơn
Trang 11CHƯƠNG 1 – TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ VIỆN OPENCV 1.1 Giới thiệu về xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng cho nó
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác Đầu tiên phải kể đến Xử lý tín hiệu số - một môn học hết sức cơ bản cho xử lý tín hiệu chung, các khái niệm về tính chập, các biến đổi Fourier, Laplace, các bộ lọc
… Thứ hai, các công cụ như Đại số tuyến tính, Xác xuất, thống kê Một số kiến thức cần thiết khác như Trí tuệ nhân tạo, mạng noron nhân tạo cũng được đề cập đến trong quá trình phân tích và đặc biệt là nhận dạng – OCR
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ London đến New York từ những năm 1920 Vấn đề nâng cao chất lượng ảnh có liên quan tới cân bằng sáng và độ phân giải của ảnh Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm 1955 Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh số thuận lợi Năm 1964, máy tính đã có khả năng
xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng Các phương pháp tri thức nhân tạo như mạng noron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được ấp dụng rộng rãi và thu nhiều kết quả khả quan
Về cơ bản, các bước cần thiết trong xử lý ảnh bao gồm:
Trang 12Đầu tiên ảnh tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy chụp ảnh, scan, …) Trước đây, các tấm ảnh thu được qua máy chụp hình với phim âm bản, không có tác dụng trong xử lý ảnh Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy ra từ Camera, sau đó nó được chuyển trực triếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo – máy ảnh số, chụp qua điện thoại … là những ví dụ gần gũi Mặt khác, ảnh cũng có thể tiếp nhận
từ vệ tinh, có thể quét từ ảnh chụp bằng máy quét ảnh Hình 1.1 dưới dây mô tả các bước cơ bản trong xử lý ảnh
Hình 1.1 Các bước cơ bản trong xử lý ảnh 1.1.1 Phần thu nhận ảnh
Ảnh có thể nhận qua camera màu hoặc đen trắng Camera thường dùng loại là loại quét dòng, ảnh tạo ra có dạng hai chiều Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh)
1.1.2 Tiền xử lý
Sau bộ thu nhận, ảnh có thể nhiễu, độ tương phản thấp nên cần đưa vào bộ tiền
xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng
độ tương phản để làm ảnh rõ hơn, nét hơn
Trang 131.1.3 Phân đoạn ảnh (phân vùng ảnh)
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dạng Đây là phần phức tạp và khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này 1.1.4 Biểu diễn và mô tả
Đầu ra ảnh sau phân đoạn chưa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lân cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính
1.1.5 Nhận dạng và nội suy
Nhận dạng ảnh là quá trình xác định ảnh Quá trình này thường thu được bằng cách so sánh với mẫu chuẩn đã được học (được lưu) từ trước, hoặc phương pháp khác như invariant – là một phương pháp mới đang được nghiên cứu trong nhận dạng
Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng
1.1.6 Cơ sở tri thức
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối, tương phản, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh theo cách của con người Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theo phương pháp trí tuệ con người
Trang 14Hình 1.2 Quá trình xử lý ảnh 1.2Những vấn đề cơ bản trong hệ thống xử lý ảnh
1.2.1 Đ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 (số), ảnh cần phải được số hóa Số hóa ả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, hay được gọi tắt là Pixel Trong ảnh hai chiều, mỗi pixel ứng với cặp tọa
độ (x,y)
Định nghĩa:
Điểm ảnh (Pixel) là một phần tử của ảnh số tại tọa độ (x,y) với độ xám hoặc màu nhất định Kích thước và khoảnh 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
Trích chọn quan
hệ
Khôi phục ảnh
Ảnh
số
Xử lý ảnh
Ảnh được cải tiến
Phân đoạn
Trích chọn đặc trưng
Phân tích thống
kê – cấu trúc
Mô tả và nội suy
Thu
ảnh
Số hóa
Nén ảnh
Lưu ảnh
Truyền ảnh
Nâng chất lượng ảnh Cảnh quan
Ảnh tương tự
Thu nhận ảnh
Nhận dạng – biểu diễn
Trang 151.2.2 Độ phân giải của ảnh
1.2.3 Mức xám của ảnh
Mỗi điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí và độ xám
Định nghĩa: Mức xám của điểm ảnh là cường độ ánh sáng của nó được gán bằng giá trị số tại điểm đó
Các giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức phổ dụng vì trong kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám: 28 = 256 mức, từ 0 đến 255)
Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau
Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng, phân biệt tức là dùng 1 bit mô tả, 21mức xám Nói cách khác mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1 Ảnh màu: trong khuôn khổ lý thuyết ba màu (RGB) để tạo nên thế giới màu, người ta dùng 3 byte mô tả mức màu, khi đó các giá trị màu: 28*3 = 224 ~ 16 triệu màu
1.2.4 Định nghĩa ảnh số
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật
Trang 161.2.5 Mối liên hệ giữa các điểm ảnh
Một ảnh số giả sử được biểu diễn bằng hàm f(x,y) Tập con các điểm ảnh là S, cặp điểm ảnh có quan hệ với nhau ký hiệu là p, q Chúng ta có các khái niệm sau:
- Các lân cận của điểm ảnh
- Các mối liên kết điểm ảnh: liên kết 4, 8, liên kết m – liên kết hỗn hợp
- Khoảng cách giữa các điểm ảnh
Hình 1.3 Các thành phần chính của hệ thống xử lý ảnh Ảnh mức xám được áp dụng trong nhiều lĩnh vực như sinh vật học hoặc trong công nghiệp Thực tế chỉ ra rằng bất kỳ ứng dụng nào trên ảnh, mức xám cũng ứng dụng được trên ảnh màu Với lý do đó, hệ thống ban đầu nên chỉ bao gồm các thiết
bị thu nhận và hiển thị ảnh đen trắng
1.3Những vấn đề khác trong xử lý ảnh
1.3.1 Biến đổi ảnh
Trong xử lý ảnh do số điểm ảnh lớn các tính toán nhiều (độ phức tạp tính toán cao) đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán Các phương pháp khoa học kinh điển áp dụng cho xử lý ảnh hầu hết khó khả thi Người ta sử dụng các phép toán tương đương hoặc biến đổi sang miền xử lý khác để dễ tính toán Sau khi xử lý
dễ dàng hơn được thực hiện, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổi thường gặp trong xử lý ảnh gồm:
Bộ nhớ
Bộ hiển thị
Trang 17- Biến đổi Fourier, Cosin, Sin
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker
- Các biến đổi khác như KL (Karhumen Loeve), Hadamard
1.3.2 Nén ảnh
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn Khi mô tả ảnh người ta
đã đưa kỹ thuật nén ảnh vào Các giai đoạn nén ảnh có thể chia ra thế hệ 1, thế hệ 2
Hiện nay, các chuẩn MPEG được dùng với ảnh đang phát huy hiệu quả
1.4 Một số phương pháp biểu diễn ảnh
1.4.1 Mã loạt dài
Phương pháp này hay dùng để biểu diễn cho vùng ảnh hay ảnh nhị phân Một
vùng ảnh R có thể biểu diễn đơn giản bởi một ma trận nhị phân:
u(m,n) = 1 ℎ ( , )
0 ℎá (1.1) Với cách biểu diễn trên một vùng ảnh hay ảnh nhị phân được xem như chuỗi 0 hay 1 đan xen Các chuỗi này được gọi là mạch Theo phương pháp này, mỗi mạch
sẽ được biểu diễn bởi địa chỉ bắt đầu của mạch và chiều dài mạch theo dạng
{<hàng, cột>, chiều dài}
1.4.2 Mã xích
Phương pháp này thường được dùng để biểu diễn biên của ảnh Thay vì lưu trữ toàn bộ ảnh, người ta lưu trữ dãy các điểm ảnh như A, B … M Theo phương pháp này, 8 hướng của vector nối 2 điểm biên liên tục được mã hóa Khi đó ảnh được biểu diễn qua điểm ảnh bắt đầu A Điều này được minh họa trong hình dưới đây:
Trang 18Hình 1.4 Hướng các điểm biên và mã tương ứng:
A11070110764545432
1.4.3 Mã tứ phân
Theo phương pháp này, một vùng ảnh coi như bao kín một hình chữ nhật Vùng này được chia làm 4 vùng con (Quadrant) Nếu 1 vùng con gồm toàn điểm đen (1) hay toàn điểm trắng (0) thì không cần chia tiếp Trong trường hợp ngược lại, vùng con gồm cả điểm đen và điểm trắng gọi là vùng không đồng nhất, ta tiếp tục chia thành 4 vùng con tiếp và kiểm tra tính đồng nhất của các vùng con đó Quá trình chia dừng lại khi mỗi vùng con chỉ chứa thuần nhất điểm đen hoặc điểm trắng Quá trình đó tạo thành một cây chia theo bốn phần gọi là cây tứ phân Như vậy, cây biểu diễn ảnh gồm một chuỗi các ký hiệu b (black), w (white) và g (grey) kèm theo ký hiệu mã hóa 4 vùng con Biểu diễn theo phương pháp này ưu việt hơn
so với các phương pháp trên, nhất là so với mã loạt dài Tuy nhiên, để tính toán số
đo các hình như chu vi, mô men là tương đối khó khăn
1.5 Thư viện OpenCV
Thư viện OpenCV được viết trên nền tảng C++, C, Python và Java để có thể chạy được trên nhiều nền tảng khác nhau, nghĩa là có thể chạy trên hệ điều hành Window, Linux, Mac, iOS, Android Việc sử dụng thư viện OpenCV tuân theo quy
Trang 19định về sử dụng phần mềm mã nguồn mở BSD, có thể sử dụng thư viện này một cách miễn phí cho cả mục đích phi thương mại lẫn thương mại
Trên thế giới hiện nay, ước tính cộng đồng sử dụng OpenCV có khoảng hơn 47 nghìn người và số lượt tải về hơn 9 triệu
1.5.2 Những điểm đặc trưng
OpenCV có rất nhiều chức năng
Sau đây là những tóm tắt cơ bản về hệ thống, các chức năng, hàm trong OpenCV:
- Image and Video I/O
Những giao diện này sẽ giúp đọc được dữ liệu ảnh từ file hoặc trực tiếp từ video Cũng có thể tạo các file ảnh hoặc video với giao diện này
- Thị giác máy và các thuật toán xử lý ảnh (General computer – vision and image –
processing algorithms(mid – and low level APIs))
Sử dụng những giao diện này, có thể thực hành với rất nhiều chuẩn thị giác máy tính mà không cần phải biết mã nguồn của chúng
- Module thị giác máy ở cấp độ cao
OpenCV gồm một vài tác dụng ở cấp độ cao Thêm vào nhận dạng mặt, dò tìm, theo dõi Nó bao gồm luồng thị giác (sử dụng camera di động để xác định cấu trúc 3D), kích cỡ camera và âm thanh nổi
- AI and machine – learning
Các ứng dụng của thị giác máy thường yêu cầu máy phải học (machine learning) hoặc các hình thức trí tuệ nhân tạo khác Một vài trong số chúng có sẵn trong OpenCV
- Lấy mẫu ảnh và các phép biến đổi
Trang 20Nó thường rất tốt cho quá trình xử lý một nhóm phần tử ảnh như là đơn vị OpenCV bao gồm lấy tách ra, lấy ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh (warping), thay đổi hiệu ứng của ảnh
- Cách thức tạo và phân tích ảnh nhị phân
Ảnh nhị phân thường xuyên được sử dụng trong các hệ thống kiểm tra có khuyết điểm hình dạng hoặc các bộ phận quan trọng Sự biểu diễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần bắt
- Cách thức cho tính toán thông tin 3D (method for computin 3D information)
Những hàm này rất có ích khi cần sắp xếp và xác định với một khối lập thể (with a stereo rig) hoặc với không gian nhìn phức tạp (multiple views) từ một camera riêng
- Các phép toán cho xử lý ảnh, thị giác máy và biểu diễn ảnh (image interpretation)
OpenCV sử dụng các phép toán phổ biến như: đại số học, thống kê và hình học
- Cấu trúc dữ liệu và giải thuật
Trang 21Với những giao diện này bạn có thể giữ lại, tìm kiếm và lưu các danh mục điều khiển, các tuyển tập (cũng như các tập lệnh được gọi), đồ họa và sơ đồ nhánh một cách hiệu quả
- Khả năng tồn tại lâu dài của dữ liệu (Data persistence)
Những phương pháp này cung cấp các giao diện một cách thuận lợi để lưu trữ các dạng khác nhau của dữ liệu vào đĩa để có thể khôi phục khi cần thiết
1.5.3 Các tổ chức
Cấu trúc OpenCV gồm nhiều module
CXCORE bao gồm các dạng dữ liệu cơ bản rõ ràng Ví dụ cấu trức dữ liệu về
ảnh, điểm, hình chữ nhật được xác định trong file cxtypes.h CXCORE chứa các
phép đại số tuyến tính và thống kê, các hàm lưu trữ lâu dài, … và các lỗi thao tác Các hàm đồ họa cho việc vẽ ảnh cũng được lưu trữ tại đây
Những hàm còn lại được đặt trong HighGUI và CVCAM Cả hai đều nằm ở
thư mục có tên “otherlibs”, sử dụng rất dễ gặp lỗi
CVCAM là thư viện chứa các hàm truy cập vào video thông qua DirectX trên môi trường window 32 bit Tuy nhiên, HighGUI cũng có các giao diện video
Trong luận văn này sử dụng thư viện OpenCV phiên bản 2.4.9 để xử lý ảnh 1.6 ImageMagick
ImageMagick là một bộ phần mềm để tạo, chỉnh sửa, soạn thảo hoặc chuyển đổi hình ảnh bitmap Nó có thể đọc và ghi hình ảnh trong một loạt các định dạng (khoảng hơn 100 định dạng) bao gồm DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG và TIFF Sử dụng ImageMagick để thay đổi kích thước, lật, làm gương, xoay, bóp méo, biến dạng và biến đổi hình ảnh, điều chỉnh màu sắc hình ảnh, áp dụng hiệu ứng đặc biệt khác nhau, hoặc vẽ văn bản, đường,
đa giác, hình elip và đường cong Bézier
Trang 22Các chức năng của ImageMagick thường được sử dụng từ dòng lệnh hoặc bạn
có thể sử dụng các tính năng từ các chương trình viết bằng ngôn ngữ yêu thích của bạn Lựa chọn các giao diện này: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM +), Magick ++ (C++), JMagick (Java), L-Magick (Lisp), Lua, NMagick (Neco / haXe), MagickNet (.Net), PascalMagick (Pascal), PerlMagick (Perl), MagickWand cho PHP (PHP), imagick (PHP), PythonMagick (Python), RMagick (Ruby), hoặc TclMagick (Tcl / TK) Với một giao diện ngôn ngữ sử dụng ImageMagick để sửa đổi hoặc tạo ra hình ảnh động và Automagically
ImageMagick được cung cấp như một phần mềm miễn phí hoặc là mã nguồn
để bạn có thể tự do sử dụng
Một phần nhỏ trong luận văn có sử dụng đến ImageMagick, nội dung này sẽ được đề cập đến trong phần triển khai chương trình
Trang 23CHƯƠNG 2 – MỘT SỐ PHƯƠNG PHÁP TIỀN XỬ LÝ NÂNG CAO CHẤT
LƯỢNG ẢNH 2.1 Cải thiện ảnh sử dụng các toán tử điểm
Nâng cao chất lượng là bước cần thiết trong xử lý ảnh nhằm hoàn thiện một số đặc tính của ảnh Nâng cao chất lượng ảnh gồm hai công đoạn khác nhau: tăng cường ảnh và khôi phục ảnh Tăng cường ảnh nhằm hoàn thiện các đặc tính của ảnh như:
Khái niệm về toán tử điểm
Xử lý điểm ảnh thực chất là biến đổi giá trị của một điểm ảnh dựa vào giá trị của chính nó mà không hề dựa vào các điểm ảnh khác Có hai cách tiệm cận với phương pháp này Cách thứ nhất dùng một hàm biến đổi thích hợp với mục đích và yêu cầu đặt ra để biến đổi giá trị mức xám của điểm ảnh sang một giá trị mức xám khác Cách thứ hai là dùng lược đồ xám (Gray Histogram) Về mặt toán học, toán
tử điểm là một ánh xạ từ giá trị cường độ sáng u(m, n) tại tọa độ (m,n) sang giá trị cường độ ánh sáng khác v(m, n) thông qua hàm f(.), tức là:
Trang 24Nói một cách khác, toán tử điểm là toán tử không bộ nhớ, ở đó mức xác u thuộc [0, N] được ánh xạ sang một mức xám v thuộc [0, N]: v – f(u) Ứng dụng chính của các toán tử điểm là biên đổi độ tương phản của ảnh Ánh xạ f khác nhau tùy theo các ứng dụng Các dạng toán tử điểm được giới thiệu cụ thể như sau:
2.1.1 Tăng độ tương phản (Stretching Contrast)
(2.2)
Các cấp độ α ,β ,γ xác định độ tương phản tương đối L là số mức xám cực đại
Trước tiên cần làm rõ khái niệm độ tương phản Ảnh số là tập hợp các điểm, mỗi điểm có giá trị độ sáng khác nhau Ở đây, độ sáng để mắt người dễ cảm nhận ảnh song không phải là quyết định Thực tế chỉ ra rằng hai đối tượng có cùng độ sáng nhưng đặt trên hai nền khác nhau sẽ cho cảm nhận sáng khác nhau Như vậy,
độ tương phản biểu diễn sự thay đổi độ sáng của đối tượng so với nền Nói một cách khác, độ tương phản là độ nổi của điểm ảnh hay vùng ảnh so với nền Như vậy, nếu ảnh có độ tương phản kém, ta có thể thay đổi tùy ý theo ý muốn
Ảnh có độ tương phản thấp có thể do điều kiện sáng không đủ hay không đều, hoặc do tính không tuyến tính hay biến động nhỏ của bộ cảm nhận ánh sáng Để điều chỉnh lại độ tương phản của ảnh, cần điều chỉnh lại biên độ trên toàn dải hay trên vùng có giới hạn bằng cách biến đổi tuyến tính biên độ đầu vào (dùng hàm biến đổi là hàm tuyến tính) hay phi tuyến (hàm mũ hay hàm logarit) Khi dùng hàm
tuyến tính các độ dốc α ,β ,γ phải chọn lớn hơn một trong miền cần dãn Các tham
số a và b (các cận) có thể chọn khi xem xét lược đồ xám của ảnh Chú ý, nếu dãn
Trang 25Hình 2.1 Dãn độ tương phản Hàm mũ thường được dùng để dãn độ tương phản Hàm có dạng:
với p là bậc thay đổi, thường chọn bằng 2
2.1.2 Tách nhiễu và phân ngưỡng
(2.5)
Trong đó a = b = t gọi là phân ngưỡng
Tách nhiễu là trường hợp đặc biệt của dãn độ tương phản khi hệ số góc α= β =
0 Tách nhiễu được ứng dụng có hiệu quả để giảm nhiễu khi biết tín hiệu vào
khoảng [a, b]
Phân ngưỡng là trường hợp đặc biệt của tách nhiễu khi a = b = const Trong
trường hợp này, ảnh đầu vào là ảnh nhị phân (có 2 mức) Phân ngưỡng thường dùng trong kỹ thuật in ảnh 2 màu vì ảnh gần nhị phân không cho ảnh nhị phân khi quét ảnh do có nhiễu từ bộ cảm biến và biến đổi của nền ví dụ trường hợp lọc nhiễu của ảnh vân tay
Trang 26Hình 2.2 Tách nhiễu và phân ngưỡng
Hình 2.2 Lược đồ xám 2.1.3 Biến đổi âm bản (Digital Negative)
Âm bản nhận được bằng phép biến đổi âm Phép biến đổi này rất có hữu ích trong các phim ảnh dùng trong ảnh y học
Hình 2.3 Biến đổi âm bản 2.1.4 Cắt theo mức (Intensity Level Slicing)
Kỹ thuật này dùng 2 phép ánh xạ khác nhau cho trường hợp có nền và không nền
Trang 27Hình 2.4 Cắt theo mức Biến đổi này cho phép phân đoạn một số mức xám từ phần tử còn lại của ảnh
Nó có tác dụng khi nhiều đặc tính khác nhau của ảnh nằm trên nhiều miền mức xám khác nhau
2.1.5 Trích chọn bit (Bit Extraction)
Như đã trình bày trên, mỗi điểm ảnh thường được mã hóa trên B bit Nếu B = 8
ta có ảnh 2 8 = 256 mức xám (ảnh nhị phân ứng với B = 1) Trong các bit mã hóa
này, người ta chia làm 2 loại: bit bậc thấp và bit bậc cao Với bit bậc cao, độ bảo
toàn thông tin cao hơn so với bit bậc thấp Các bit bậc thấp thường biểu diễn nhiễu hay nền Trong kỹ thuật này, ta có:
Để trích chọn bit có nghĩa nhất: bit thứ n và hiển thị chúng, dùng biến đổi sau:
(2.10)
Dễ thấy: k n = i n – 2i n-1
Trang 282.1.6 Trừ ảnh
Trừ ảnh được dùng đẻ tách nhiễu khỏi nền T quan sát ảnh ở 2 thời điểm khác
nhau, so sánh chúng để tìm ra sự khác nhau Sau đó dóng thẳng 2 ảnh rồi trừ đi và thu được ảnh mới Ảnh mới này chính là sự khác nhau Kỹ thuật này hay được dùng trong dự báo thời tiết, y học
2.1.7 Nén dải độ sáng
Đôi khi do dải độ sáng rộng của ảnh lớn, việc quan sát ảnh không thuận tiện Cần phải thu nhỏ dải độ sáng lại mà ta gọi là nén dải độ sáng Ta dùng phép biến đổi logarit sau:
với c là hằng số tỉ lệ, δđược coi là nhỏ so với u(m,n) Thường δ được chọn
trong khoảng 3 – 10
2.1.8 Mô hình hóa và biến đổi lược đồ xám
Về ý nghĩa của lược đồ xám và một số phép biến đổi lược đồ đã được trình bày trong luận văn, xét đến một số biến đổi hay dùng sau:
(2.12)
Trong đó, h(x i) là lược đồ mức xám xi
Ngoài các biến đổi trên, người ta còn dùng một số biến đổi khác Trong các
biến đổi này, mức xám đầu vào u,trước tiên được biến đổi phi tuyến bởi một trong
các hàm sau:
(2.14)
Trang 29f(u) = log(1+u); u >= 0 (2.15)
Sau các biến đổi đó, đầu ra được lượng hóa đều Ba phép biến đổi này được dùng trong lượng hóa ảnh Nói chung, các biến đổi lược đồ nhằm biến đổi lược đồ
từ một đường không thuần nhất sang đồng nhất để tiện cho phân tích ảnh
2.2 Cải thiện ảnh dùng toán tử không gian
Cải thiện ảnh là làm cho ảnh có chất lượng tốt hơn theo ý đồ sử dụng Thường
là ảnh thu nhận được có nhiễu cần phải loại bỏ nhiễu hay ảnh không sắc nét bị mờ hoặc cần làm rõ các chi tiết như đường biên ảnh Các toán tử không gian dùng trong kỹ thuật tăng cường ảnh được phân nhóm theo công dụng: làm trơn biên, nổi biên Để làm trơn nhiễu hay tách nhiễu, ta sử dụng các bộ lọc tuyến tính (lọc trung bình, thông thấp) hay lọc phi tuyến (trung vị, giả trung vị, lọc đồng hình) Từ bản chất của nhiễu (thường tương ứng với tần số cao) và từ cơ sở lý thuyết lọc là: bộ lọc chỉ cho tín hiệu có tần số nào đó thông qua do đó, để lọc nhiễu người ta thường dùng lọc thông thấp (theo quan điểm tần số không gian), hay lấy tổ hợp tuyến tính
để san bằng (lọc trung bình) Để làm nổi biên (ứng với tần số cao), ta dùng các bộ lọc thông cao, lọc Laplace
Trước khi xem xét chi tiết các kỹ thuật áp dụng, cần phân biệt các loại nhiễu hay can thiệp trong quá trình xử lý ảnh Trên thực tế tồn tại nhiều loại nhiễu, tuy nhiên người ta thường xem xét 3 loại nhiễu chính: nhiễu cộng, nhiễu nhân và nhiễu xung:
Nhiễu cộng: thường phân bố khắp ảnh Nếu gọi ảnh quan sát (ảnh thu được) là
X qs , ảnh gốc là X gốc , nhiễu là η, ảnh thu được có thể biểu diễn bởi công thức:
Trang 30Nhiễu nhân: thường phần bố khắp ảnh và ảnh thu được sẽ biểu diễn bởi công thức:
Nhiễu xung: thường gây đột biến tại một số điểm ảnh
2.2.1 Làm trơn nhiễu bằng lọc tuyến tính: lọc trung bình và lọc dải thông thấp
Do có nhiều loại nhiễu can thiệp vào quá trình xử lý ảnh nên cần có nhiều bộ lọc thích hợp Với nhiễu cộng và nhiễu nhân ta dùng các bộ lọc thông thấp, trung bình và lọc đồng hình (Homomorphie), với nhiễu xung ta dùng lọc trung vị, giả trung vị và lọc ngoài (Outlier)
a Lọc trung bình không gian
Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm ảnh lân cận và được định nghĩa như sau:
(2.19)
Nếu trong kỹ thuật lọc này, ta dùng các trọng số như nhau, phương trình trên sẽ trở thành:
(2.20) Với y(m,n): là ảnh đầu vào,
v(m,n): là ảnh đầu ra,
a(k,l) : là cửa sổ lọc
với a k,l = và N w là số điểm ảnh trong cửa sổ lọc W
Lọc trung bình có trọng số chính là thực hiện chập ảnh đầu vào với nhân chập
H Nhân chập H trong trường hợp này có dạng:
(2.21)
Trang 31Trong lọc trung bình, thường người ta ưu tiên cho các hướng để bảo vệ biên của ảnh khỏi bị mờ khi làm trơn ảnh Các kiểu mặt nạ được sử dụng tùy theo các trường hợp khác nhau Các bộ lọc trên là bộ lọc tuyến tính theo nghĩa là điểm ảnh ở tâm cửa sổ sẽ được thay bởi tổ hợp các điểm lân cận chập với mặt nạ
b Lọc thông thấp
Lọc thông thấp thường được sử dụng để làm trơn nhiễu Về nguyên lý của bộ lọc thông thấp giống như đã trình bày ở trên Trong kỹ thuật này người ta hay dùng một số nhân chập có dạng sau:
(2.22)
(2.23)
Ta dễ dàng nhận thấy khi b = 1, H b chính là nhân chập của H t1 (lọc trung bình)
Để hiểu rõ hơn bản chất khử nhiễu cộng của các bộ lọc này, ta viết lại phương trình thu nhận ảnh dưới dạng:
Trang 32Kỹ thuật lọc này hiệu quả với ảnh có nhiễu nhân Thực tế, ảnh quan sát được
gồm ảnh gốc nhân với một hệ số nhiễu Gọi (m,n) là ảnh thu được, X(m,n) là ảnh gốc và η[m,n] là nhiễu, như vậy:
X(m,n) = (m,n)* η(m,n) (2.27)
Lọc đồng hình thực hiện lấy logarit của ảnh quan sát Do vậy ta có kết quả sau:
log(X(m,n)) = log( (m,n)) + log(η(m,n))(2.28)
Rõ ràng, nhiễu nhân có trong ảnh sẽ bị giảm Sau quá trình lọc tuyến tính, ta
chuyển về ảnh cũ bằng phép chuyển đổi hàm e mũ
2.2.2 Làm trơn nhiễu bằng lọc phi tuyến
Các bộ lọc phi tuyến cũng hay được dùng trong kỹ thuật tăng cường ảnh Trong
kỹ thuật này người ta dùng bộ lọc trung vị, giả trung vị, lọc ngoài Với lọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểm ảnh, còn lọc giả trung vị
sẽ dùng trung bình cộng của 2 giá trị “trung vị” (trung bình cộng của max và min)
a Lọc trung vị
Trung vị được viết với công thức:
v(m,n) = Trungvi(y(m-k, n-l)) với {k, l} ∈ W (2.29)
Kỹ thuật này đòi hỏi giá trị của các điểm ảnh trong cửa sổ phải sắp xếp theo thứ
tự tăng hay giảm dần so với giá trị trung vị Kích thước cửa sổ thường được chọn sao cho số điểm ảnh trong cửa sổ là lẻ Các cửa sổ hay dùng là cửa sổ có kích thước
Trang 33v[2] = Trungvi(3,4,8) = 4;
v[3] = Trungvi(8,4,2) = 4;
v[4] = 2 <giá trị biên>;
Tính chất của lọc trung vị:
- Lọc trung vị là loại lọc phi tuyến Điều này dễ nhận thấy từ:
Trungvi(x(m) + y(m)) ≠ Trungvi(x(m)) + Trungvi(y(m)) (2.30)
- Có lợi cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ phân giải
- Hiệu quả giảm khi số điểm ảnh trong cửa sổ lớn hay bằng một nửa số điểm
trong cửa sổ Điều nay dễ giải thích vì trung vị là (N w +1)/2 giá trị lớn nhất nếu N w
lẻ Lọc trung vị cho trường hợp 2 chiều coi như lọc trung vị tách được theo từng chiều
b Lọc ngoài (Outlier Filter)
Giả thiết có ngưỡng nào đó cho các mức nhiễu (có thể dựa vào lược đồ xám) Tiến hành so sánh giá trị độ xám của một điểm ảnh với trung bình số học 8 điểm lân cận của nó Nếu sai lệch lớn hơn ngưỡng, điểm ảnh này được coi là nhiễu Trong trường hợp đó, thay thế giá trị của điểm ảnh bằng giá trị trung bình 8 điểm lân cận vừa tính được Bộ lọc ngoài có thể diễn tả bằng công thức sau:
(2.31)
Với α(w) là trung bình cộng các điểm trong lân cận w; u là ngưỡng ngoài
Các cửa sổ tính toán thường chọn là 3x3 Tuy nhiên, cửa sổ có thể mở rộng đến
5x5 hay 7x7 để đảm bảo tính tương quan giữa các điểm ảnh Vấn đề quan trọng là
xác định ngưỡng để loại nhiễu mà vẫn không làm mất thông tin của ảnh