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

NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE

68 64 1

Đ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

Định dạng
Số trang 68
Dung lượng 2,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU 1. Lý do chọn đề tài Ngày nay cùng với sự phát triển khoa học kỹ thuật, nhu cầu đi lại của con người ngày càng tăng, lưu lượng giao thông ngày càng lớn. Với số lượng phương tiện giao thông ngày càng lớn và còn không ngừng tăng thì việc quản lý các phương tiện giao thông gặp rất nhiều khó khăn do đó cần có một hệ thống tự động. Trên thế giới cùng với sự tăng trưởng kinh tế là sự phát triển vượt bậc của các ngành khoa học kỹ thuật nói chung và ngành công nghiệp sản xuất các phương tiện giao thông nói riêng. Sự phát triển ấy được thể hiện rõ nhất khi số lượng các phương tiện giao thông trên thế giới ngày một tăng cao. Điều đó gây ra một áp lực rất lớn đối các cấp quản lý, các cơ quan, đơn vị, những người làm công tác quản lý, giám sát, xử lý vi phạm giao thông. Và đây cũng là một trong những vấn nạn ở Việt Nam, khi mà công tác quản lý phương tiện giao thông nói chung, quản lý ô tô, xe máy nói riêng, cũng như công tác phát hiện, xử phạt các hành vi vi phạm giao thông, chống trộm v.v… sẽ tốn rất nhiều thời gian và công sức. Để nâng cao chất lượng quản lý, đồng thời giảm số lượng nhân viên quản lý trong việc giám sát, việc ứng dụng công nghệ thông tin nhằm xây dựng hệ thống giám sát tự động đối với các phương triện giao thông (cụ thể giám sát biển số xe) đã được áp dụng triệt để. Một số ứng dụng nhận dạng đã được xây dựng và áp dụng. Tất cả đều có ưu điểm nhận dạng nhanh, lưu hình ảnh dưới dạng mã Code trong cơ sở dữ liệu để đối chiếu so sánh mẫu, ví dụ như hệ thống nhận dạng biển số xe ở các siêu thị, công viên… Tuy nhiên, phần lớn các ứng dụng vẫn chưa ứng dụng kỹ thuật xử lý ảnh vào nhận dạng ký tự để có kết quả tốt nhất trong trường hợp hình ảnh không được rõ. Xuất phát từ nhận định trên tôi đã chọn đề tài “Nghiên cứu xây dựng phần mềm nhận dạng xử lý ảnh ứng dụng nhận dạng biển số xe” với mục đích xây dựng phần mềm nhận dạng xử lý ảnh. Phần mềm có khả năng nhận dạng các ký tự từ đó ứng dụng nhận dạng biển số xe phục vụ công tác giám sát, quản lý, xử lý các phương tiện giao thông. 2. Mục đích nghiên cứu của đề tài Xây dựng ứng dụng xử lý ảnh ứng dụng nhận dạng biển số xe tự động, hỗ trợ trong công tác quản lý, kiểm soát, xử lý vi phạm của các phương tiện giao thông. Ứng dụng 6 được xây dựng có giao diện thân thiện, dễ sử dụng có thể nhận dạng ký từ hình ảnh: chữ màu, draw text, các ngôn ngữ khác nhau, trên cơ sở đó có thể nhận dạng các biển số xe. Phần mềm ứng dụng được viết trên môi trường ngôn ngữ C, cùng việc sử dụng thư viện tích hợp OpenCV cho quá trình nhận dạng và xử lý ảnh. 3. Nhiệm vụ nghiên cứu đề tài Tìm hiểu bài toán nhận dạng, bài toán xử lý ảnh áp dụng vào ứng dụng nhận dạng biển số xe. Tìm hiểu các kỹ thuật lập trình và ứng dụng thư viên OpenCV trong việc giải quyết bài toán nhận dạng xử lý ảnh. Xây dựng phần mêm nhận dạng xử lý ảnh ứng dụng nhận dạng biển số xe.

Trang 1

LỜI CẢM ƠN

Tôi xin chân thành cảm ơn quý thầy cô giáo trong khoa Công Nghệ Thông Tin

đã giảng dạy, quan tâm và tạo điều kiện thuận lợi nhất để tôi học tập và rèn luyện trong suốt thời gian theo học tại trường

Đặc biệt tôi xin bày tỏ lòng biết ơn sâu sắc nhất đến thầy giáo TS Phùng Thế Bảo đã tận tình hướng dẫn, giúp đỡ tôi trong quá trình học tập và đặc biệt là trong suốt

thời gian làm đồ án tốt nghiệp Thầy luôn quan tâm và rất nhiệt tình hướng dẫn tôi từ việc tìm tài liệu cho đến việc định hướng lựa chọn giải pháp để triển khai đồ án Thầy cũng luôn nhắc nhở, động viên tôi mỗi khi gặp khó khăn, nhờ vậy mà tôi đã hoàn thành tốt đồ án tốt nghiệp của mình đúng thời hạn

Tôi cũng xin gửi lời cảm ơn tới gia đình, bạn bè, những người đã động viên, giúp đỡ tôi rất nhiều trong thời gian học tập và làm đồ án tốt nghiệp

Mặc dù tôi đã hết sức cố gắng để hoàn thiện báo cáo tốt nghiệp song do khả năng còn hạn chế nên bài báo cáo vẫn còn nhiều thiếu sót Vì vậy tôi rất mong được sự góp ý quý báo của các thầy cô và bạn bè

Một lần nữa tôi xin chân thành cảm ơn!

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan đồ án tốt nghiệp là công trình nghiên cứu riêng của tôi Các tài liệu trích dẫn trong đồ án có nguồn gốc rõ ràng, tuân thủ đúng nguyên tắc trình bày Kết quả thu được trong quá trình nghiên cứu đồ án là trung thực và chưa từng công bố trước đây

Tôi xin hoàn toàn chịu trách nhiệm trước nhà trường về lời cam đoan này

TP Hồ Chí Minh, tháng 10 năm 2021

Sinh viên thực hiện

Trần Thị Ngọc Châu

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỞ ĐẦU 5

1 Lý do chọn đề tài 5

2 Mục đích nghiên cứu của đề tài 5

3 Nhiệm vụ nghiên cứu đề tài 6

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7

1.1 Xử lý ảnh 7

1.1.1 Xử lý ảnh số là gì ? 7

1.1.2 Nguồn gốc của xử lý ảnh số 7

1.1.3 Các ứng dụng của xử lý ảnh số 7

1.1.4 Các bước cơ bản trong xử lý ảnh số 8

1.2 Thư viện OpenCV 13

1.2.1 Giới thiệu chung về OpenCV: 13

1.2.2 Ứng dụng OpenCV trong nhận dạng xử lý ảnh: 17

1.3 Bài toán nhận dạng biển số xe 38

1.3.1 Khái niệm 38

1.3.2 Ứng dụng 40

1.3.3 Một số hướng giải quyết bài toán nhận dạng biển số xe 40

Tóm tắt chương 1 : 47

CHƯƠNG 2: NGHIÊN CỨU XÂY DỰNG ỨNG DỤNG XỬ LÝ ẢNH 48

2.1 Mô tả ứng dụng 48

2.2 Quá trình xử lý nhận dạng ảnh của ứng dụng 48

2.3 Cài đặt ứng dụng: 50

2.3.1 Giao diện phần mềm: 50

2.3.2 Nhận dạng biển số xe: 50

Tóm tắt chương 2: 55

KẾT LUẬN 56

TÀI LIỆU THAM KHẢO 57

PHỤ LỤC 58

Phụ lục 1: Danh mục các hình vẽ 58

Trang 4

Phụ lục 2: Hướng dẫn cấu hình OpenCV 60 Phụ lục 3: Hướng dẫn cài đặt DevExpress: 60 Phụ lục 4: Đoạn mã chương trình 64

Trang 5

MỞ ĐẦU

1 Lý do chọn đề tài

Ngày nay cùng với sự phát triển khoa học kỹ thuật, nhu cầu đi lại của con người ngày càng tăng, lưu lượng giao thông ngày càng lớn Với số lượng phương tiện giao thông ngày càng lớn và còn không ngừng tăng thì việc quản lý các phương tiện giao thông gặp rất nhiều khó khăn do đó cần có một hệ thống tự động

Trên thế giới cùng với sự tăng trưởng kinh tế là sự phát triển vượt bậc của các ngành khoa học kỹ thuật nói chung và ngành công nghiệp sản xuất các phương tiện giao thông nói riêng Sự phát triển ấy được thể hiện rõ nhất khi số lượng các phương tiện giao thông trên thế giới ngày một tăng cao Điều đó gây ra một áp lực rất lớn đối các cấp quản lý, các cơ quan, đơn vị, những người làm công tác quản lý, giám sát, xử

lý vi phạm giao thông

Và đây cũng là một trong những vấn nạn ở Việt Nam, khi mà công tác quản lý phương tiện giao thông nói chung, quản lý ô tô, xe máy nói riêng, cũng như công tác phát hiện, xử phạt các hành vi vi phạm giao thông, chống trộm v.v… sẽ tốn rất nhiều thời gian và công sức

Để nâng cao chất lượng quản lý, đồng thời giảm số lượng nhân viên quản lý trong việc giám sát, việc ứng dụng công nghệ thông tin nhằm xây dựng hệ thống giám sát tự động đối với các phương triện giao thông (cụ thể giám sát biển số xe) đã được áp dụng triệt để Một số ứng dụng nhận dạng đã được xây dựng và áp dụng Tất cả đều có

ưu điểm nhận dạng nhanh, lưu hình ảnh dưới dạng mã Code trong cơ sở dữ liệu để đối chiếu so sánh mẫu, ví dụ như hệ thống nhận dạng biển số xe ở các siêu thị, công viên… Tuy nhiên, phần lớn các ứng dụng vẫn chưa ứng dụng kỹ thuật xử lý ảnh vào nhận dạng ký tự để có kết quả tốt nhất trong trường hợp hình ảnh không được rõ

Xuất phát từ nhận định trên tôi đã chọn đề tài “Nghiên cứu xây dựng phần mềm nhận dạng xử lý ảnh ứng dụng nhận dạng biển số xe” với mục đích xây dựng phần mềm nhận dạng xử lý ảnh Phần mềm có khả năng nhận dạng các ký tự từ đó ứng dụng nhận dạng biển số xe phục vụ công tác giám sát, quản lý, xử lý các phương tiện giao thông

2 Mục đích nghiên cứu của đề tài

Xây dựng ứng dụng xử lý ảnh ứng dụng nhận dạng biển số xe tự động, hỗ trợ trong công tác quản lý, kiểm soát, xử lý vi phạm của các phương tiện giao thông Ứng dụng

Trang 6

được xây dựng có giao diện thân thiện, dễ sử dụng có thể nhận dạng ký từ hình ảnh: chữ màu, draw text, các ngôn ngữ khác nhau, trên cơ sở đó có thể nhận dạng các biển

số xe Phần mềm ứng dụng được viết trên môi trường ngôn ngữ C#, cùng việc sử dụng thư viện tích hợp OpenCV cho quá trình nhận dạng và xử lý ảnh

3 Nhiệm vụ nghiên cứu đề tài

- Tìm hiểu bài toán nhận dạng, bài toán xử lý ảnh áp dụng vào ứng dụng nhận dạng biển số xe

- Tìm hiểu các kỹ thuật lập trình và ứng dụng thư viên OpenCV trong việc giải quyết bài toán nhận dạng xử lý ảnh

- Xây dựng phần mêm nhận dạng xử lý ảnh ứng dụng nhận dạng biển số xe

Trang 7

NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Xử lý ảnh

1.1.1 Xử lý ảnh số là gì ?

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ố là 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ích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn… Thứ hai, các công cụ toán như Đại số tuyến tính, xác suất, thống kê Một số kiến thứ cần thiết như Trí tuệ nhân tao, Mạng nơ-ron nhân tạo cũng được đề cập trong quá trình phân tích và nhận dạng ảnh

1.1.2 Nguồn gốc của xử lý ảnh số

Ứ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ừ Luân đôn đế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 phân bố mức 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 nơ- ron 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

1.1.3 Các ứng dụng của xử lý ảnh số

a Biến đổi ảnh (Image Transform)

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 lâu 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ử

Trang 8

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:

- Biến đổi Fourier, Cosin, Sin

- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker (theo xử lý số tín

hiệu)

- Các biến đổi khác như KL (Karhumen Loeve), Hadamard

Một số các công cụ xác xuất thống kê cũng được sử dụng trong xử lý ảnh

b 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.1.4 Các bước cơ bản trong xử lý ảnh số

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

Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầ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) Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại Camera ống kiểu CCIR) 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 tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo (Máy ảnh số hiện nay là một thí 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 đâ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

Trang 9

Sơ đồ này bao gồm các thành phần sau:

a Phần thu nhận ảnh (Image Acquisition)

Ảnh có thể nhận qua camera màu hoặc đen trắng Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh

25 dòng), cũng có loại camera đã số hoá (như loại CCD – Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh

Camera thường dùng 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)

b Tiền xử lý (Image Processing)

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

c Phân đoạn (Segmentation) hay 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 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

d Biểu diễn ảnh (Image Representation)

Đầ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 Việc chọn

các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature election) gắn

với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ

sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác

e Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)

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 (hoặc lưu) từ trước Nội suy là phán

Trang 10

đoán theo ý nghĩa trên cơ sở nhận dạng Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội suy thành mã điện thoại Có nhiều cách phân loại ảnh khác nhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:

- Nhận dạng theo tham số

- Nhận dạng theo cấu trúc

Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người…

f Cơ sở tri thức (Knowledge Base)

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, 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 các phương pháp trí tuệ con người Vì vậy, ở đây các

cơ sở tri thức được phát huy

g Mô tả (biểu diễn ảnh)

Từ Hình 1.1, ảnh sau khi số hoá sẽ được lưu vào bộ nhớ, hoặc chuyển sang các khâu tiếp theo để phân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnh thô đó được đặc tả (biểu diễn) lại (hay đơn

giản là mã hoá) theo các đặc điểm của ảnh được gọi là các đặc trưng ảnh (Image Features) như: biên ảnh (Boundary), vùng ảnh (Region) Một số phương pháp biểu

diễn thường dùng:

• Biểu diễn bằng mã chạy (Run-Length Code)

• Biểu diễn bằng mã xích (Chaine -Code)

• Biểu diễn bằng mã tứ phân (Quad-Tree Code)

Biểu diễn bằng mã chạy

Phương pháp này thường biểu diễn cho vùng ảnh và áp dụng cho ảnh nhị phân Một vùng ảnh R có thể mã hoá đơn giản nhờ một ma trận nhị phân:

Trang 11

- U(m, n) = 1 nếu (m, n) thuộc R

- U(m, n) = 0 nếu (m, n) không thuộc R

Trong đó: U(m, n) là hàm mô tả mức xám ảnh tại tọa độ (m, n) Với cách biểu diễn trên, một vùng ảnh được mô tả bằng một tập các chuỗi số 0 hoặc 1 Giả

sử chúng ta mô tả ảnh nhị phân của một vùng ảnh được thể hiện theo toạ độ (x, y) theo các chiều và đặc tả chỉ đối với giá trị “1” khi đó dạng mô tả có thể là: (x, y)r; trong đó (x, y) là toạ độ, r là số lượng các bit có giá trị “1” liên tục theo chiều ngang

hoặc dọc

Biểu diễn bằng mã xích

Phương pháp này thường dùng để biểu diễn đường biên ảnh Một đường bất

kỳ được chia thành các đoạn nhỏ Nối các điểm chia, ta có các đoạn thẳng kế tiếp được gán hướng cho đoạn thẳng đó tạo thành một dây xích gồm các đoạn Các hướng có thể chọn 4, 8, 12, 24,… Mỗi hướng được mã hoá theo số thập phân hoặc

số nhị phân thành mã của hướng

Biểu diễn bằng mã tứ phân

Phương pháp mã tứ phân được dùng để mã hoá cho vùng ảnh Vùng ảnh đầu tiên được chia làm bốn phần thường là bằng nhau Nếu mỗi vùng đã đồng nhất (chứa toàn điểm đen (1) hay trắng (0)), thì gán cho vùng đó một mã và không chia tiếp Các vùng không đồng nhất được chia tiếp làm bốn phần theo thủ tục trên cho đến khi tất cả các vùng đều đồng nhất Các mã phân chia thành các vùng con tạo thành một cây phân chia các vùng đồng nhất

Hình 1 2 Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối

Trang 12

Trên đây là các thành phần cơ bản trong các khâu xử lý ảnh Trong thực tế, các quá trình sử dụng ảnh số không nhất thiết phải qua hết các khâu đó tùy theo đặc điểm ứng dụng Hình 1.2 cho sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối một cách đầu đủ Ảnh sau khi được số hóa được nén, lưu lại để truyền cho các hệ thông khác sử dụng hoặc để xử lý tiếp theo Mặt khác, ảnh sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng (khi ảnh đủ chất lượng theo một yêu cầu nào đó) để chuyển tới khâu phân đoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực tiếp tới khâu trích chọn đặc trưng Hình 1.2 cũng chia các nhánh song song như: nâng cao chất lượng ảnh có hai nhánh phân biệt: nâng cao chất lượng ảnh (tăng độ sáng,

độ tương phản, lọc nhiễu) hoặc khôi phục ảnh (hồi phục ảnh thật khi ảnh nhận được

bị méo) v.v…

1.1.5 Các thành phần của một hệ thống xử lý ảnh

Theo quan điểm của quy trình xử lý, chúng ta đã thể hiện các khối cơ bản trên Hình 1.1, các khối chi tiết và luồng thông tin trên Hình 1.2 Theo quan điểm của hệ thống xử lý trên máy tính số, hệ thống gồm các đầu đo (thu nhận ảnh); bộ

số hóa; máy tính số; bộ hiển thị; bộ nhớ

Một hệ thống xử lý ảnh cơ bản có thể gồm: máy tính cá nhân kèm theo vỉ mạch chuyển đổi đồ hoạ VGA hoặc SVGA, đĩa chứa các ảnh dùng để kiểm tra các thuật toán và một màn hình có hỗ trợ VGA hoặc SVGA Nếu điều kiện cho phép,

nên có một hệ thống như Hình 1.4 bao gồm một máy tính PC kèm theo thiết bị

xử lý ảnh Nối với cổng vào của thiết bị thu nhận ảnh là một video camera, và cổng

Hình 1 3 Các thành phần chính của hệ thống xử lý

Trang 13

đưa ra trên ảnh mức xám (ảnh đen trắng) Bởi vậy, hệ thống sẽ bao gồm một thiết

bị xử lý ảnh đen trắng và một màn hình đen trắng

Ả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 Với ảnh màu, nên sử dụng một

hệ thống mới như Hình 1.3, trừ trường hợp bạn cần một camera TV màu và một

màn hình đa tần số (ví dụ như NEC MultiSync, Sony Multiscan, hoặc Mitsubishi Diamond Scan) để hiển thị ảnh màu Nếu khả năng hạn chế, có thể dùng PC kèm theo vỉ mạch VGA và màn hình VGA, để dựng ảnh được

Hình 1 4 Ví dụ một hệ thống xử lý ảnh.

1.2 Thư viện OpenCV

1.2.1 Giới thiệu chung về OpenCV

OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở chức năng lập trình cho ngành thị giác máy tính OpenCV được phát hành theo BSD license và nó là miễn phí cho cả hai học thuật và thương mại OpenCV được dùng với các ngôn ngữ C++, C, Python và Java(Android) và hỗ trợ các hệ điều hành Windows, Liniux, Android và Mac OS Trong thư viện OpenCV có hơn 500 hàm và

2500 các thuật toán tối ưu về xử lý ảnh và các vấn đề liên quan đến thị giác máy Việc sử dụng thư viện OpenCV tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó có thể sử dụng thư viện này miễn phí

Trang 14

Thư viện OpenCV có nhiều ưu điểm:

• Là công cụ chuyên dụng được thiết kế theo hướng tối ưu hóa các ứng dụng xử lý

• Truy xuất ảnh và phim: đọc ảnh từ camera, file, ghi ảnh và phim

• Cấu trúc dữ liệu ảnh số hóa và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu và cây

• Xử lý ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu nhỏ và hiệu chỉnh histograms

• Xử lý cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối chiếu bản mẫu, …

• Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân thích chuyển động

• Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thông số

• Chức năng vẽ và chú thích lên ảnh

- Cài đặt OpenCV

• Tải về và cài đặt

Bước 1: Download OpenCV từ trang chủ về: https://opencv.org/releases.html

Bước 2: Sau khi download xong, chạy file này như file cài đặt thông thường, chọn đường dẫn mà OpenCV sẽ được giải nén ra

Bước 3: Mở visual studio tạo Empty project mới-> thêm file C++ vào project

vừa tạo -> Click chuột vào project và chọn Property để mở cửa sổ Project Property

Bước 4: Chọn mục C/C++->General Ở dòng Additional Include Directories, thêm vào đường dẫn đến thư mục build\include của thư mục OpenCV đã giải nén ở

bước trên -> Chọn Apply

Trang 15

Hình 1 5 Chọn phiên bản Visual cài đặt OpenCV

Chuyển sang mục Linker->General Ở dòng Additional Library Directories, thêm vào đường dẫn đến thư mục build\x64\vc15\lib (thư mục chứa các file lib) -> Chọn Apply như hình sau:

Bước 5: Chuyển sang mục Linker->Input Ở dòng Additional Dependencies, thêm

vào tên file opencv_world342d.lib (vì đang build ở chế độ Debug) Nếu build ở chế

độ Release thì tên file là opencv_world342.lib 2 file này có thể được tìm thấy trong thư mục build\x64 \bin Bấm vào Apply

Bước 6: Cuối cùng bấm vào OK

Sao chép file opencv_word341d/dll ( hay opencv_word341.dll nếu đang build Release) trong thư mục build\x64….\bin vào trong Project

- EmguCv

• Giới thiệu EmguCV:

- Là một viên bản mới nhất của Open CV, được xem như vỏ bọc của OpenCV, là một cross flatform NET, một thư viện xử lý hình ảnh mạnh dành riêng cho ngôn ngữ C# Cho phép gọi được chức năng của OpenCV là từ NET

- Tương thích ngôn ngữ C#, VB, VC++, Iron Python…

- Wrapper có thể được biên dịch bởi Visual Studio, Xamarin Studio và Unity

- Nó có thể chạy trên Windows, Linux, Mac OS X, IOS, Android và Windows Phone

• Tính năng của EmguCV:

- EmguCV được viết bằng C# Có thể chạy trên bất kỳ nền tảng hổ trợ bao gồm

Trang 16

IOS, Android, Windows Phone, Hệ điều hành Mac OS X và Linux

- EmguCV có thể được sử dụng từ nhiều ngôn ngữ khác nhau, bao gồm C#, VB.NET, C++ và Iron Python

- Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể…

- Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng…

- Nhận dạng cử chỉ

- Hổ trợ tài liệu XML và intellisense

- Sự lựa chọn để sử dụng hình ảnh lớp hoặc trực tiếp gọi chức năng từ OpenCV

• Cài đặt EmguCV

Emgu CV là một gói bao bên ngoài (wrapper) thư viện xử lí ảnh OpenCV của Intel, cho phép lập trình viên có thể gọi các hàm của OpenCV từ trong các ngôn ngữ NET C#, VB, VC++, IronPython… Gói này có thể được biên dịch trong Mono và chạy trên Linux/Mac OS X

✓ Cài đặt: Tải phiên bản EmguCV mới nhất tại đây:

✓ Khai báo các tham chiếu: Trong Solution Explorer, click phải lên tên project => Add reference… => chọn tab Browse => duyệt đến thư mục {Emgu folder}\bin => chọn 3 file Emgu.CV.dll, Emgu.CV.UI.dll, Emgu.Util.dll => OK

✓ Khai báo trong code

using Emgu.CV;

using Emgu.CV.Structure;

using Emgu.Util;

Trang 17

Hình 1 6 (a) ngưỡng 40, (b) ngưỡng 121

✓ Vào thư mục {Emgu folder}\bin\x86, chép các file sau

cudart32_XXX.dll npp32_XXX.dll opencv_coreXXX.dll opencv_imgprocXXX.dll (XXX là số hiệu phiên bản)

✓ Vào thư mục của project {project folder}\bin\Debug

1.2.2 Ứng dụng OpenCV trong nhận dạng xử lý ảnh:

a Xử lý nhị phân

Mức xám là giá trị có thể có của điểm ảnh Với những ảnh đa cấp xám các thông tin đã sẵn ở dạng nhị phân chẳng hạn như các chuỗi văn bản hay các đối tượng ảnh, thì phương pháp nhị phân thông thường sẽ được thực hiện trước Mục đích của phương pháp này sẽ tự động chọn một ngưỡng cần thiết để tách ảnh ra làm hai phần: thông tin ảnh và thông tin nền Việc chọn ngưỡng tốt (ngưỡng mà có thể tách ảnh thành hai phần: phần ảnh, phần nền một cách chính xác) luôn là một quá trình khó và dễ gây ra lỗi

(a) (b)

Kết quả này sẽ gặp khó khăn khi độ tương phản giữa nền và các giá trị điểm ảnh là thấp (chẳng hạn như xe màu xám nền mầu trắng), nét của văn bản mỏng hoặc

dữ liệu không được chiếu sáng tốt

Để thực hiện việc tách ngưỡng này thì OpenCV cung cấp chức năng threshold

threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );

- src_gray: hình ảnh đầu vào

- dst: hình ảnh đầu ra

- threshold_value: giá trị thực hiện tách ngưỡng

- max_BINARY_value: giá trị thực hiện tách ngưỡng nhị phân

Trang 18

Hình 1 7 Ngưỡng Threshold Binary trong OpenCV

Hình 1 8 Ngưỡng Threshold Binary, inverted trong OpenCV

- threshold_type: một trong 5 ngưỡng hoạt động

Năm ngưỡng hoạt động OpenCV cung cấp 5 ngưỡng hoạt động:

- Threshold Binary:

Nếu giá trị các điểm ảnh cao hơn giá trị ngưỡng thì được thiết lập giá trị mới

là giá trị cao nhất (255), thấp hơn giá trị các điểm ảnh về mức 0

- Threshold binaru, inverted:

Ngược với Threshold Binary

Giá trị các điểm ảnh cao hơn giá trị ngưỡng sẽ được giữ lại còn các điểm ảnh

có giá trị thấp hơn giá trị ngưỡng sẽ đưa về giá trị 0

Trang 19

Hình 1 10 Ngưỡng Threshold to Zero trong OpenCV

Hình 1 11 Ngưỡng Threshold to Zero, inverted trong OpenCV

-Threshold to Zero, inverted :

Ngược lại với Threshold to Zero

b Giảm nhiễu

Nhiễu trong ảnh là do nhiều nguyên nhân bao gồm: sự thoái hóa theo thời gian, quá trình sao chép Một số kỹ thuật xử lý ảnh sẽ được áp dụng để loại bỏ nhiễu Sau khi được nhị phân hóa, ảnh sẽ được lọc để giảm nhiễu Trên thực thế tồn tại nhiều loại nhiễu, tuy nhiên người ta thường xem xét 3 loại chính: nhiễu cộng, nhiễu nhân và nhiễu xung Chúng xuất hiện những điểm ảnh khác biệt so với vùng xung quanh

Bản chất của nhiễu là thường tương ứng với tần số cao và cơ sở lý thuyết của các bộ lọc là chỉ cho những tín hiệu có tần số nào đó thông qua, do đó để lọc nhiệu người ta thường sử dụng bộ lọc thông thấp hay trung bình 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ới nhiễu xung ta dùng lọc trung vị giả trung bị

Trong lọc trung bình, 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 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 ở 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ạ Lọc thông thấp thường dùng để làm trơn nhiễu

Các bộ lọc phi tuyến cũng đượ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ị, bộ lọc giả trung vị Với bộ lọc trung vị các điểm ảnh sẽ được thay thế bởi trung vị các điệm ảnh, bộ lọc giả trung vị thì các điểm ảnh được thay thế bỏi trung bình cộng của giá trị “trung vi.”

Sau đây là một số bộ lọc thường dùng:

Trang 20

- Bộ lọc hộp thông thường (Normalized Box filter)

Đây là bộ lọc đơn giản nhất Mỗi điểm đầu ra là trung bình của các điểm láng

giềng hạt nhân của mình (tất cả các điểm xung quanh đóng góp với trọng lượng

bằng nhau) OpenCv cung cấp các chức năng blur để thực hiện giảm nhiễu với bộ

- Bộ lọc gaussian (Gaussian Filter)

Đây là bộ lọc hữu ích nhất (mặc dù không phải là nhanh nhất)

Nó được thực hiện bởi chức năng GaussianBlur trong OpenCV

gaussianBlur(src,dst,size(i,i),0,0)

• src: hình ảnh nguồn

• dst: hình ảnh đầu ra

• size(w,h) kích thước của hạt nhân sẽ được sử dụng w và h phải là số lẻ và tích

cự nếu không kích thước sẽ được tính bằng cách sử dụng đối số σx và σy.

• σx độ lệch chuẩn trong x Viết 0 ngụ ý rằng độ lệch được tính bằng các sử dụng kích thước hạt nhân

• σy độ lệch chuẩn y

Trang 21

Hình 1 13 Sử dụng bộ lọc Gaussian

- Bộ lọc Median (Median Filter):

Các bộ lọc trung bình chạy qua từng phần tử của tín hiệu và thay thế mỗi điểm ảnh với trung bình của các điểm ảnh lân cận nó

Bộ lọc này được cung cấp bởi các chức năng medianBlur trong thư viện OpenCV

medianBlur (src,dst,i);

▪ src: ảnh nguồn

▪ dst: ảnh đầu ra (có kích thước giống như src)

▪ i: kích thước của hạt nhân (i phải lẻ)

Hình 1 14 Sử dụng bộ lọc Median

- Bộ lọc song phương (Bilateral filter)

Hầu hết các bộ lọc có mục tiêu chính là làm mịn hình ảnh đầu vào Tuy nhiên các bộ lọc không chỉ giảm nhiễu mà còn làm mờ các cạnh Để tránh điếu này chúng

ta xử dụng bộ lọc song phương Và OpenCV cung cấp chức năng bilateralFilter

bilateralFilter(src,dst,i,i*2,i/2);

▪ src: ảnh nguồn

▪ dst: ảnh đầu ra

Trang 22

Hình 1 16 Filter2D nhân thay đổi tăng dần từ trái qua phải

▪ d: đường kính của vùng lân cận điểm ảnh

▪ σcolor: độ lệch chuẩn trong không gian màu

▪ σSpace: độ lệch chuẩn trong khoảng tọa độ

Hình 1 15 Sử dụng bộ lọc song phương

- Filter2D

Ngoài những bộ lọc thông dụng như trên thì thư viện OpenCV còn cung cấp

bộ lọc mà chúng ta có thể thay đổi kích thước hạt nhân Đó là filter2D

Filter2D(src, dst, ddepth, kernel, anchor, delta, BORDER_DEFAULT)

▪ Src: ảnh nguồn

▪ Dst: ảnh đầu ra

▪ Ddepth: độ sâu của dst Giá trị -1 là chỉ ra độ sâu như nguồn

▪ Kernel: hạt nhân

▪ Anchor: vị trí liên quan đến hạt nhân của nó

▪ Delta: giá trị được thêm vào mỗi điểm ảnh Mặc định bằng 0

▪ BORDER_DEFAULT: giá trị mặc định

d Biên và các phương pháp tìm biên

- Khái niệm về biên:

Biên là một vấn đề chủ yếu trong phân tích ảnh vì kỹ thuật phân đoạn chủ yếu dựa vào biên Một điểm ảnh có thể coi là điểm biên nếu có sự thay đổi đột ngột và mức xám hay biên là điểm có cấp xám có giái trị khác hẳn các điểm xung quanh, tập

Trang 23

hợp các điểm biên tạo thành biên hay đường bao của ảnh

Sau đây tôi sẽ giới thiệu một số phương pháp tìm biên mà thư viện OpenCV

Gradient trong gốc tọa độ (r,θ), với r là vector, θ là góc

'

max '

sin cos

x y

x

y

f tg

f f

Trang 24

Toán tử Sobel được Duda và Hart đặt ra vào năm 1973 với các mặt nạ tương

tự như của Robert nhưng cấu hình khác như sau:

Trang 25

+ Toán tử 4-lân cận (4-Neighbour Operator)

Toán tử 4-lân cận được Chaudhuri và Chandor (1984) nêu ra trong đó mặt nạ có kích thước 3x3 được thay thế cho mặt nạ 2x2 của toán tử Robert Mặt nạ 4-lân cận được cho như sau:

Theo hướng x Theo hướng y

Nhận xét:

Toán tử Prewitt có thể tách sườn tốt hơn toán tử Sobel, trong khi đó toán tử Sobel tách các sườn chéo tốt hơn Mặt khác, các toán tử Robert và các toán tử 4-lân cận có nhược điểm là nhạy với nhiễu, Các toán tử Gradient và Sobel giảm nhiễu do tác dụng của lọc trung bình các điểm lân cận Như vậy, để đạt được kết quả mong muốn các toán tử Gradient thường được dùng trước để làm sạch nhiễu

Các mặt nạ của toán tử trên có kích thước 2x2 hoặc 3x3 chiều Các mặt nạ có

số chiều lớn hơn cũng được sử dụng Ví dụ trong kỹ thuật phát hiện biên người ta dùng mặt nạ 5x5 cho toán tử Sobel

Trong thư viện OpenCv có chức năng Sobel với mặt nạ:

Cho kết quả tốt hơn so với Sobel theo chức năng tiêu chuẩn

Mat grad_x, grad_y;

Mat abs_grad_x, abs_grad_y;

// Gradient X

Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );

// Gradient Y

Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );

▪ Src_gray: hình ảnh đầu vào

▪ Grad_x/ grad_y: ảnh đầu ra

▪ Ddepth: độ sâu của hình ảnh đầu ra

Trang 26

▪ X_order: thứ tự của các phát sinh theo hướng x

▪ Y_order: thứ tự của các phát sinh theo hướng y

Hình 1 17 Tìm biên bằng chức năng Sobel trong OpenCV

- Toán tử la bàn

Kirsh đã đề xuất mặt nạ 8 hướng như 8 hướng la bàn Hình 2.8 là mô hình 8 hướng và được đặt tên theo hướng địa lý và theo chiều kim đồng hồ: Đông, Đông-Nam, Nam, Tây-Nam, Tây, Tây-Bắc, Bắc, Đông-Bắc; mỗi hướng lệch nhau 45 độ

Hình 1 18 Mặt nạ 8 hướng theo Kirsh

Trang 27

Ký hiệu Ai ; i= 1,2,….,8 là Gradient theo 8 hướng như 8 mặt nạ kể trên, khi đó biên

độ Gradient tại điểm (x,y) được tính theo

A(x,y) = Max(|gi(x,y)|) i= 1,2,….,8

Nếu lấy đạo hàm bậc hai của ảnh: ta có phương pháp Laplace hai phương pháp này gọi chung là phương pháp dò biên cục bộ

Trang 28

- Laplace

Để khắc phục hạn chế và nhược điểm của phương pháp Gradient, trong đó sử dụng đạo hàm riêng bậc nhất người ta nghĩ đến việc sử dụng đạo hàm riêng bậc hai hay toán tử Laplace Phương pháp do biên theo toán tử Laplace hiệu quả hơn phương pháp toán tử Gradient trong trường hợp mức xám biến đổi chậm, miền chuyển đổi mức xám có độ trải rộng

- Toán tử Laplace được định nghĩa như sau:

Ghi chú: mặt nạ H1 còn cải biên bằng việc lấy giá trị ở tâm bằng 8 thay vì giá trị 4

Để thấy rõ việc xấp xỉ đạo hàm riêng bậc 2 trong không gian 2 chiều với mặt nạ H1làm ví dụ, ta có thể tính gần đúng như sau:

Phương pháp Laplace được hỗ trợ sẵn có trong thư viện OpenCV

Laplacian( src_gray,dst,ddepth,kernel_size,scale,delta, BORDER_DEFAULT);

▪ Src_gray: ảnh đầu vào

▪ Dst: ảnh đầu ra

▪ Ddepth: độ sâu của ảnh

Trang 29

Hình 1 19 Tìm biên Laplace

▪ Kernel_size: kích thước hạt nhân

▪ Scale, delta and BORDER_DEFAULT: những giá trị mặc định

Kết quả : Hình 1.19

- Tách sườn ảnh theo Canny

Bộ tách sường ảnh theo Canny (1986) dựa trên cặp đạo hàm riêng bậc nhất

với việc làm sạch nhiễu Mục này được để riêng vì đây là phương pháp tách đường

biên khá phổ biến được biết đến như là phương pháp dò tối ưu, nó đáp ứng được ba

tiêu chí sau:

▪ Tỷ lệ lội thấp: phát hiện tốt các cạnh

▪ Phân vùng tốt: Khoảng cách giữa các điểm ảnh cạnh phát hiện và pixel thực tế phải được giảm nhiễu

▪ Đáp ứng tối thiểu: có cách dò cho mỗi cạnh

Các bước làm theo Canny:

+ Giảm nhiễu:

Để thực hiện việc giảm nhiễu bộ lọc Gaussian được sử dụng Một hạt nhân Gaussian

có cỡ bằng 5 có thể được sử dụng dưới đây:

2 4 5 4 2

4 9 12 9 41

5 12 15 12 5159

+ Tìm gradient cường độ của hình ảnh

Điều này được thực hiện tương tự như Sobel

Áp dụng một cặp mặt nạ theo hướng x và y:

Trang 30

 =  

 Hướng được làm tròn đến một trong bốn góc có thể (cụ thể là 0,45,90 hay 135)

+ Ức chế tối đa

Sử dụng để loại bỏ các điểm ảnh không được coi là một phần của một cạnh

+ Trễ

Ở đây Canny sử dụng hai ngưỡng cao và thấp

▪ Nếu một pixel cao hơn ngưỡng trên (cao), điểm ảnh được chấp nhận là một

cạnh

▪ Nếu một pixel thấp hơn ngưỡng thấp nó sẽ bị từ chối

▪ Nếu ở giữa hai ngưỡng Nó sẽ được chấp nhận khi nó gần với một pixel ở trên ngưỡng cao

Tỉ lệ đề nghị cao/thấp giữa 2/1 và 3/1

Hình 1 20 Tìm biên theo Canny

e Biến đổi Hough

Biến đổi Hough là phương pháp dùng để xác định đường thẳng (đường tròn

elip) gần đúng đi qua một tập hợp điểm

Với (x, y) là một điểm y = mx + c → c = mx +y

Như vậy nếu có N điểm nằm trên một đường thẳng

Trang 31

Hình 1 21 Trục tọa độ đề các đi qua 2 điểm

Thực chất biến đổi Hought là biến điểm thành đường thẳng

Trang 32

Hình 1 24 Đường thẳngHough trong tọa độ cực

Biến đổi Hough theo tọa độ cực

Hình 1 23 Hệ tọa độ cực

Biến đổi Hough ánh xạ N điểm thành N đường sin trong tọa độ chứa các đường này đều đi qua điểm (r, δi) Giao điểm (r, δi) của N đường sin sẽ xác định một đường thẳng trong hệ tọa độ đề các Như vậy, những đường thằng đi qua điểm (r, yi)

sẽ có bấy nhiêu cặp giá trị (r, δi) Mục đích tìm ra cặp (r, δi) sao cho số đường hình sin đi qua nhiều nhất, và cặp đó chính là cặp tham số cho đường thẳng

Hough với OpenCv

Để thuận tiện cho việc dùng Hough để tìm đường thẳng và đường tròn trong

ảnh thì OpenCv cung cấp chức năng HoughLines, HoughLinesP và HoughCircles

Trang 33

- Tìm đường thẳng với HoughLines và HoughLinesP Hình 2.17

➢ HoughLine

vector<Vec2f> lines;

HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 );

▪ Dst: đầu ra ( là ảnh xám)

▪ Lines: một vector lưu trữ thông số (r,θ) của các dòng được phát hiện

▪ Rho: độ phân giải của tham số r theo Pixel Thường sử dụng 1 pixel

▪ Theta: độ phân giải của tham số θ theo radian Thường sử dụng 1 độ (CV_PI/180)

▪ Threshold: số lượng tối thiểu của nút phát hiện

▪ Rho: độ phân giải của tham số r theo pixel (thường sử dụng 1 pixel)

▪ Theta: độ phân giải của tham số θ theo radian (thường sử dụng là 1 độ CV_PI/180)

▪ Threshold: số lượng tối thiểu nút

▪ MinhLinLength: số lượng tối thiểu của các điểm có thể tạo thành một đường, nếu ít hơn sẽ bị bỏ qua

▪ maxLinegap: khoảng các tối đa giữa hai điểm được xem xét trong cùng một dòng

Hình 1 25 Kết hợp giữa HoughLines với HoughCircles

Trang 34

- Tìm đường tròn với HoughCircles Hình 1 26

vector<Vec3f> circles;

HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8,

200, 100, 0, 0 );

Src_gray: đầu vào là một ảnh xám

Circles:một vector lưu chữ 3 giá trị xc, yc , r cho mỗi vòng tròn tìm được

CV_HOUGH_GRADIENT:xác định phương pháp phát hiện Đây là phương

pháp duy nhất sẵn có trong OpenCv

Dp=1: tỷ lệ nghịch đảo của độ phân giải

Min_dist = src_gray.rows/8: khoảng cách tối thiểu giữa tâm phát hiện được

Param_1 =200: ngưởng để phát hiện cạnh canny nội bộ

Pram_2 = 100*: ngưỡng phát hiện tâm

Min_radius = 0:đặt như mặc định

Max_radius =0: bán kính tối đa được phát hiện Nếu không biết thì đặt như là

mặc định ( giá trị 0)

Hình 1 26 Tìm thấy hình tròn trong mẫu có hình tròn

f Một số hàm cơ bản trong thư viện OpenCV

Trong những phần trước đã đề đến một số hàm của OpenCV, trong phần này

sẽ giới thiệu những hàm cơ bản hỗ trợ cho các hàm đã được đề cập ở trên Và đề cập tới hàm tìm đối tượng hữu hiệu trong thư viện OpenCV

- Tải một ảnh và hiển thị ảnh

Đây là một chức năng đơn giản không thể thiếu của OpenCV

Ngày đăng: 07/01/2022, 15:07

HÌNH ẢNH LIÊN QUAN

Hình 1. 2. Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 2. Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối (Trang 11)
Hình 1. 3. Các thành phần chính của hệ thống xử lý. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 3. Các thành phần chính của hệ thống xử lý (Trang 12)
Hình 1. 4. Ví dụ một hệ thống xử lý ảnh. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 4. Ví dụ một hệ thống xử lý ảnh (Trang 13)
Hình 1. 5. Chọn phiên bản Visual cài đặt OpenCV. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 5. Chọn phiên bản Visual cài đặt OpenCV (Trang 15)
Hình 1. 12. Sử dụng bộ lọc hộp thông thường. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 12. Sử dụng bộ lọc hộp thông thường (Trang 20)
Hình 1. 13. Sử dụng bộ lọc Gaussian. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 13. Sử dụng bộ lọc Gaussian (Trang 21)
Hình 1. 14. Sử dụng bộ lọc Median. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 14. Sử dụng bộ lọc Median (Trang 21)
Hình 1. 16. Filter2D nhân thay đổi tăng dần từ trái qua phải. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 16. Filter2D nhân thay đổi tăng dần từ trái qua phải (Trang 22)
Hình 1. 18. Mặt nạ 8 hướng theo Kirsh. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 18. Mặt nạ 8 hướng theo Kirsh (Trang 26)
Hình 1. 19. Tìm biên Laplace. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 19. Tìm biên Laplace (Trang 29)
Hình 1. 20. Tìm biên theo Canny. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 20. Tìm biên theo Canny (Trang 30)
Hình 1. 24. Đường thẳngHough trong tọa độ cực. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 24. Đường thẳngHough trong tọa độ cực (Trang 32)
Hình 1. 28. Chuyển ảnh màu sang ảnh xám. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 28. Chuyển ảnh màu sang ảnh xám (Trang 36)
Hình 1. 29. Sử dụng findContours tìm đối tượng. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 29. Sử dụng findContours tìm đối tượng (Trang 37)
Hình 1. 30. Hệ thống tự động nhận dạng biển số xe. - NGHIÊN CỨU XÂY DỰNG PHẦN MỀM NHẬN DẠNG XỬ LÝ ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE
Hình 1. 30. Hệ thống tự động nhận dạng biển số xe (Trang 39)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm