1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

MÔ PHỎNG NHẬN DẠNG BIỂN số XE bằng OPEN CV7 (có code)

30 520 4

Đ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 30
Dung lượng 470,62 KB

Nội dung

MÔ PHỎNG NHẬN DẠNG BIỂN số XE bằng OPEN CV7 (có code) ........ MÔ PHỎNG NHẬN DẠNG BIỂN số XE bằng OPEN CV7 (có code) ........ MÔ PHỎNG NHẬN DẠNG BIỂN số XE bằng OPEN CV7 (có code) ........ MÔ PHỎNG NHẬN DẠNG BIỂN số XE bằng OPEN CV7 (có code) ........

Trang 2

CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG NHẬN DẠNG BIỂN SỐ XE 1 1.1 GIỚI THIỆU 1

1.1.1 Tính chất của nhận dạng 1

1.1.2 Một số ứng dụng của việc nhận dạng 1

CHƯƠNG 2 BÀI TOÁN NHẬN DẠNG 3 2.1 TÌM HIỂU VỀ ẢNH SỐ 3 2.1.1 Các khái niệm cơ bản về ảnh 3

2.1.2 Cách phân loại ảnh 3

2.2 MÔ HÌNH VÀ BẢN CHẤT CỦA VIỆC NHẬN DẠNG 3 2.2.1 Không gian biểu diễn đối tượng 3

2.2.2 Không gian diễn dịch 4

2.2.3 Mô hình nhận dạng 4

2.2.4 Bản chất của việc nhận dạng 5

CHƯƠNG 3 QUÁ TRÌNH XỬ LÝ ẢNH BẰNG OPEN CV7 3.1 HƯỚNG GIẢI QUYẾT 7 3.1.1 Các tiêu chuẩn về kích thước 7

3.1.2 Số lượng ký tự trong biển số xe 7

3.2 SƠ ĐỒ GIẢI THUẬT 8 3.3 TIỀN XỬ LÝ ẢNH 8 3.3.1 Biến đổi ảnh xám 9

3.3.2 Xử lý nhị phân 9

3.3.3 Tìm đối tượng bằng findContours 10

3.4 THUẬT TOÁN SVM TRONG NHẬN DẠNG BIỂN SỐ XE 11 3.4.1 Giới thiệu 11

Trang 4

HINH 1-3: BIẾN ĐỔI XÁM 11

HÌNH 1-4:BIẾN ĐỔI NHỊ PHÂN 12

HÌNH 1-5: DÒ BIÊN 13

Trang 7

CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG NHẬN DẠNG BIỂN SỐ XE

1.1 Giới thiệu

Hiện nay với lượng phương tiện giao thông ngày một tăng mạnh, việc quản lý phương tiện giao thông là một bài toán cần lưu tâm Và với sự phát triển mạnh mẽ của công nghệ thông tin, việc nhận dạng biể số xe ngày càng được tối ưu hóa hiệu quả hơn bằng việc sử dụng các công cụ toán học và tin học, cụ thể ở đây là mô phỏng trên open cv với phương pháp SVM Phần mềm mô phỏng open cv với phương pháp SVM có tính chính xác và ứng dụng cao, là tiền đề để phát việc nhận dạng ngày một tốt hơn

1.1.1 Tính chất của nhận dạng

Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó và gán cho chúng vào một lớp, dựa theo những quy luật và các mẫu chuẩn quá trình nhận dạng dựa vào những mẫu biết trước gọi là nhận dạng có thầy, và trong trường hợp còn lại gọi là học không có thầy.

1.1.2 Một số ứng dụng của việc nhận dạng

Ứng dụng của việc nhận dạng như việc chấm công dựa trên dấu vân tay, hay nhận dạng bằng vân tay trên máy ATM mà không cần quẹt thẻ và còn nhiều ứng dụng thực tế khác như nhận dạng giọng nói như ứng dụng Jibbigo trên điện thoại di động

Hình 1-1: Nhận dạng vân tay trên máy ATM

Trang 8

CHƯƠNG 2 BÀI TOÁN NHẬN DẠNG

là C=Cyan: xanh lơ, M=Magenta: hồng xẫm, và Y=Yellow: vàng để biểu diễn các màu sắc khác nhau

2.2 Mô hình và bản chất của việc nhận dạng

2.2.1 Không gian biểu diễn đối tượng

Các đối tượng khi quan sát hay thu nhập được thường được biểu diễn bởi tập các đặc trưng hay đặc tính Như trong trường hợp xử lý ảnh, ảnh sau khi được tăng cường để nâng cao chất lượng, phân vùng và trich lọc đặc tính, được biểu diễn bởi các đặc trưng như biên, miền đồng nhất … người ta thường phân các đặc trưng này theo các đặc trưng như: đặc trưng tô pô, đặc trưng hình học và đặc trưng các chức năng Việc biểu diễn ảnh theo đặc trưng nào còn phụ thuộc vào ứng dụng tiếp theo

Trang 9

Ví dụ : giả sử đối tường X (ảnh, chữ viết, dấu vân tay,…) được biểu diễn

bởi n thành phần đặc trưng: X={x1,x2….,xn}; mỗi xi biểu diễn một đặc tính.

Không gian biểu diễn đối tượng thường gọi tắt là không gian đối tượng A được

định nghĩa:

A={X1,X2……,Xm} Trong đó mỗi Xi biểu diễn một đối tượng Không gian này có thể là vô hạn nhưng để tiện xem xét thì ta chỉ xét tập hữu hạn.

2.2.2 Không gian diễn dịch

Không gian diễn dịch là tập các tên gọi của đối tượng Kết thúc quá trình nhận dạng ta xác định được tên gọi cho các đối tượng trong tập không gian đối tượng hay nói là đã nhận dạng được đối tượng.

Một hình thức gọi là Ω là tập tên đối tượng:

Ω ={ w1 ,w2,….wk} với wi, i= 1,2,….k là tên các đối tượng

2.2.3 Mô hình nhận dạng

Việc chọn lựa một quá trình nhận dạng có liên quan mật thiết đến kiểu mô tả

mà người ta sử dụng để đặc tả đối tượng Trong nhận dạng, người ta phân chia theo hai họ lớp:

- Học mô tả theo tham số.

- Học mô tả theo cấu trúc.

Cách mô tả được lựa chọn sẽ xác định mô hình của đối tượng Như vậy, chúng sẽ

có 2 loại mô hình: mô hình theo tham số và mô hình cấu trúc.

 Mô hình tham số

Mô hình tham số sử dụng một vector để đặc đối tương Mỗi phần tử củavector

là tọa độ điểm Như vậy, moment trung tâm bậc p,q của đường bao là :

Trang 10

 Mô hình cấu trúc

Cách tiếp cận của mô hình này dựa vào việc mô tả đối tượng nhờ một số khái niệm biểu thị các đối tượng cơ sở trong ngôn ngữ tự nhiên Để mô tả đối tượng, người ta dùng một số dạng nguyên thủy như đoạn thẳng, cung … Chẳng hạn một hình chữ nhật được định nghĩa gồm 4 đoạng thẳng vuông góc với nhau từng đôi một Trong mô hình này người ta sử dụng một bộ kí hiệu kết thúc Vt, một bộ kí hiệu không kết thúc gọi là Vn Ngoài ra còn dùng một tập các luật sản xuất để mô tả cách xây dựng các đối tượng phù hợp dựa trên các đối tượng đơn giản hơn hoặc đối tượng nguyên thủy Trong cách tiếp cận này, ta chấp nhận một khẳng định là: cấu trúc là kết quả của việc áp dụng luật sản xuất theo những nguyên tắc xác định bắt đầu từ một dạng gốc bắt đầu Một cách hình thức, ta có thể coi mô hình này tương đương một văn phạm G=(Vt,Vn,P,S) với Vt là bộ kí hiệu kết thúc, Vn là bộ ký hiệu không kết thúc,

P là luật sản xuất, S là dạng ( ký hiệu bắt đầu).

2.2.4 Bản chất của việc nhận dạng

 Quá trình nhận dạng gồm 3 giai đoạn chính:

- Lựa chọn mô hình biểu diễn đối tượng.

- Lựa chọn luật ra quyết định (phương pháp nhận dạng) và suy diễn quá trình học.

- Học nhận dạng.

Khi mô hình biểu diễn đối tượng đã được xác định, có thể là định lượng ( mô hình tham số) hay định tính ( mô hình cấu trúc), quá trình nhận dạng chuyển sang giai đoạn học Học là giai đoạn quan trọng Thao tác học nhằm cải thiện, điểu chỉnh việc phân hoạch tập đối tượng thành lớp.

Việc nhận dạng chính là tìm ra quy luật và các thuật toán để có thể gán đối tượng vào một lớp hay nói một cách khác gán cho đối tượng một tên.

 Học có thầy

Trang 11

 Học không có thầy

Trang 12

CHƯƠNG 3 QUÁ TRÌNH XỬ LÝ ẢNH BẰNG OPEN CV

3.1 Hướng giải quyết

Nhận thấy các vùng biển số là các vùng đặc trưng có hình chữ nhật, có tỉ lệ kích thước theo tiêu chuẩn Vì vậy sau khi tách ngường và tìm vùng (OpenCV hỗ trợ findContourns) ta tìm những vùng có tỷ lệ theo kích thước giống với tỉ lệ của biển

số xe Để có thế lọc các vùng biển số một lần nữa thì ta tiếp tục tìm số vùng con trên vùng biển số và so sánh với số lượng ký tự của biển số.

3.1.1 Các tiêu chuẩn về kích thước

Ở mỗi nước thường có tiêu chuẩn về kích thước nhất định Đối với nước ta, biển

số xe qui định khá đồng đều cho mỗi loại xe, tỷ lệ chiều dài, rộng cho mỗi loại xe là như nhau.

- Đối với loại xe có một hàng ký tự thì tỉ lệ dài/rộng là: 3.5 W / H 4.5.

- Đối với loại xe có hai hàng ký tự thì tỉ lệ dài/rộng là: 0.8 W / H 1.4

Từ những đặc điểm này, ta có có thể xác định được các vùng con thỏa mãn thì khả năng chứa biển số là rất cao.

3.1.2 Số lượng ký tự trong biển số xe

Mỗi ký tự thường có tỷ lệ kích thước chiều rộng, chiều cao tương ứng với chiều dài và rộng của biển số xe Ví dụ, chiều cao của mỗi ký tự luôn nhỏ hơn 85% chiều cao của biển số xe và luôn lớn hơn 33% chiều cao của biển xe Còn chiều rộng của

ký tự không lớn hơn 20% chiều dài của biển số xe Mỗi ký tự của biển số xe được xem như là một vùng liên thông con Do đó, chúng ta có thể đếm vùng liên thông con thỏa mãn tích chất đó là ký tự Chú ý số ký tự trên biển số xe là từ 6 đến 10 ký

tự ở nước ta chỉ có số ký tự trên mỗi biền số xe nằm trong khoảng 6 đến 9 ký tự Vậy ta có thể dùng ngưỡng [6.9] để nhận dạng vùng biển số xe.

3.2 Sơ đồ giải thuật

Trang 13

Hình 1-2: Sơ đồ bài toán nhận dạng

3.3 Tiền xử lý ảnh

Các thao tác xử lý trên ảnh để chuẩn bị cho những bước phân tích tiếp theo Chẳng hạn như các thao tác: chọn ngưỡng để chuyển ảnh đa cấp xám, ảnh màu về dạng nhị phân, giảm nhiễu để loại bỏ những dữ diệu không liên quan, phân đoạn để phân tách cách thành phần trong ảnh và cuối cùng là làm mảnh hay dò biên để đễ dàng xác định các vùng, các đặc trưng thích hợp và đối tượng cần quan tâm.

Trang 14

3.3.2 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.

Để 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.

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

Trang 15

Hình 1-4: Biến đổi nhị phân

3.3.3 Tìm đối tượng bằng findContours

Ở đây chúng ta sẽ tìm đối tượng thông qua biên Nó không chính thống là một thuật toán vì vậy em để findContours vào phần này coi như các hàm OpenCV hữu ích trong việc tìm đối tượng trong ảnh.

Sau đây chúng ta xem cách sử dụng hàm findContours và xem nó hữu như thế nào khi dùng các công cụ khác để đánh dấu những vùng tìm được.

void findContours ( InputOutputArray image , OutputArrayOfArrays contours, OutputArray hierarchy , int mode , int method , Point offset =Point() )

 image: ảnh nguồn 8-bit kênh đơn ( ảnh qua các xử lý nhị phân , tách ngưỡng, canny)

 contours: đường viền được lưu trữ như một vector các điểm.

 hierarchy: tùy chọn đầu ra vector bao gồm các thông tin về cấu trúc liên kết hình ảnh Nó có nhiều yếu tố như số lượng các đường nét.

 Mode: đường viền hồi chế độ: ví dụ CV_RETR_TREE lấy tất cả các

Trang 16

lồng nhau.

 Method: phương pháp lấy đường viền xấp xỉ ví dụ:

CV_CHAIN_APPROX_SIMPLE nén phân đoạn ngang , dọc chéo và chỉ

Support vector machine (SVM) xây dựng (learn) một siêu phẳng (hyperplane)

để phân lớp (classify) tập dữ liệu thành 2 lớp riêng biệt.SVM là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy.SVM là một thuật toán phân loại nhị phân, SVM nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau Với một bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó.

Trang 17

CHƯƠNG 4 NHẬN XÉT

4.1 Nhận xét

Bài toán nhận dạng biển số xe vẫn còn nhiểu khuyết điểm là vẫn không thể nhận dạng được một số biển khi có độ sáng mờ và biển số có góc nghiêng

Trang 18

CHƯƠNG 5 KẾT LUẬN

5.1 Ưu điểm

Đối với những biển số có góc chụp chính diện thì việc nhận dạng biển số chính xác hoàn toàn Và với việc sử dụng thuật toán SVM thì dữ liệu nhận dạng sẽ được tối ưu hóa và đa dạng hơn.

Trang 19

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Stdio.vn

[2] Tailieu.vn

Trang 20

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

private: System::Windows::Forms::Label^ label3;

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::PictureBox^ ptbCha;

Trang 21

private: System::Windows::Forms::PictureBox^ ptbPlate;

private: System::Windows::Forms::GroupBox^ groupBox3;

private: System::Windows::Forms::Button^ btnProcess;

private: System::Windows::Forms::Button^ btnLoad;

private: System::Windows::Forms::Label^ label4;

private: System::Windows::Forms::Label^ imgSize;

private: System::ComponentModel::IContainer^ components;

private:

#pragma region Windows Form Designer generated code

void InitializeComponent(void)

{

this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());

this->ptbSrc = (gcnew System::Windows::Forms::PictureBox());

this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->label3 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->label1 = (gcnew System::Windows::Forms::Label());

this->ptbCha = (gcnew System::Windows::Forms::PictureBox());

this->ptbPlate = (gcnew System::Windows::Forms::PictureBox());

this->groupBox3 = (gcnew System::Windows::Forms::GroupBox());

this->btnProcess = (gcnew System::Windows::Forms::Button());

this->btnLoad = (gcnew System::Windows::Forms::Button());

this->label4 = (gcnew System::Windows::Forms::Label());

this->imgSize = (gcnew System::Windows::Forms::Label());

this->groupBox1->Text = L"Anh goc";

this->groupBox1->Enter += gcnew System::EventHandler(this,

&MainForm::groupBox1_Enter);

this->ptbSrc->BorderStyle =

Trang 22

this->groupBox2->Text = L"ket qua";

this->groupBox2->Enter += gcnew System::EventHandler(this,

&MainForm::groupBox2_Enter);

this->textBox1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif",

Trang 23

this->groupBox3->Size = System::Drawing::Size(158, 110);this->groupBox3->TabIndex = 1;

this->groupBox3->TabStop = false;

this->groupBox3->Text = L"dieu khien";

this->btnProcess->Location = System::Drawing::Point(10, 48);this->btnProcess->Name = L"btnProcess";

this->btnProcess->Size = System::Drawing::Size(142, 23);this->btnProcess->TabIndex = 0;

this->btnProcess->Text = L"nhan dang";

this->btnProcess->UseVisualStyleBackColor = true;

this->btnProcess->Click += gcnew System::EventHandler(this,

&MainForm::btnProcess_Click);

this->btnLoad->Location = System::Drawing::Point(10, 19);this->btnLoad->Name = L"btnLoad";

this->btnLoad->Size = System::Drawing::Size(142, 23);

this->btnLoad->TabIndex = 0;

this->btnLoad->Text = L"Load anh";

Trang 24

OpenFileDialog^ dgOpen = gcnew OpenFileDialog();

dgOpen->Filter = "Image(*.bmp; *.jpg)|*.bmp;*.jpg|All files (*.*)|*.*||";

if (dgOpen->ShowDialog() == System::Windows::Forms::DialogResult::Cancel){

return;

}

Bitmap^ bmpSrc = gcnew Bitmap(dgOpen->FileName);

ptbSrc->Image = bmpSrc;

Trang 25

srcImg = imread(stringTochar.ConvertString2Char(dgOpen->FileName));

int dbSize_H = srcImg.rows;

int dbSize_W = srcImg.cols;

System::String^ h = gcnew System::String(to_string(dbSize_H).c_str());

System::String^ w = gcnew System::String(to_string(dbSize_W).c_str());

imgSize->Text = w + "x" + h;

}

private: System::Void btnLearn_Click(System::Object^ sender, System::EventArgs^ e) {

FolderBrowserDialog^ folderOpen = gcnew FolderBrowserDialog();

if (folderOpen->ShowDialog() == System::Windows::Forms::DialogResult::Cancel){

SaveFileDialog^ saveFile= gcnew SaveFileDialog();

if (saveFile->ShowDialog() == System::Windows::Forms::DialogResult::Cancel){

Trang 26

DIR *dir = opendir(path.c_str());

struct dirent *entry;

while ((entry = readdir(dir)) != NULL)

DIR *dir = opendir(folder_path.c_str());

struct dirent *entry;

while ((entry = readdir(dir)) != NULL)

vector<float> feature = calculate_feature(img_character);

Mat m = Mat(1, number_of_feature, CV_32FC1);

for (size_t i = 0; i < feature.size(); ++i)

Ngày đăng: 21/01/2018, 16:48

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w