Mô hình demo

Một phần của tài liệu Luận văn tốt nghiệp XÂY DỰNG HỆ THỐNG BÃI GIỮ XE THÔNG MINH (Trang 56 - 91)

- Số bản vẽ tay Số bản vẽ trên máy tính

3.3Mô hình demo

9. Đánh giá chun g( bằng chữ: Giỏi, Khá, TB ): Điểm

3.3Mô hình demo

- Mô hình đơn giản được sử dụng để demo hệ thống như sau: - Camera: Webcam Logitech C200 1.3MPixel , kết nối USB 2.0.

- PC: Laptop HP dv6700,WindowXP SP3, CPU intel Core 2 Dou 1,66 Ghz, Ram 2GB, VGA card Mobile Intel 965 Express Chipset Family.

- SQL Server: CSDL Microsoft SQL Server 2008 được tích hợp trong laptop. - Đường đi mô hình, xe mô hình có gắn biển số xe mẫu…

40

Hình 3.3: Mô hình demo nhìn nghiêng góc 150 theo hướng ngang.

Chương III: Thiết kế và thực hiện phần cứng

41

42

CHƢƠNG IV: THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM

4.1 Chƣơng trình nhận dạng biển số 4.1.1 Yêu cầu thiết kế và phân tích

A. Yêu cầu thiết kế

Xây dựng chương trình có thể nhận diện và đọc ký tự trên biển số xe máy ở Việt Nam qua hình ảnh chụp được từ camera tại bãi giữ xe với độ chính xác chấp nhận được.

B. Phân tích

1. Điều kiện ngoại cảnh

Các điều kiện ngoại cảnh tác động nhiều đến độ chính xác của chương trình nhận dạng và đọc biển số xe. Do đó chương trình chỉ có thể thực hiện với độ chính xác cho phép trong các điều kiện sau:

- Ảnh chụp có ánh sáng tốt, không quá chói, không quá tối.

- Biển số xe máy với tình trạng nguyên vẹn, không bám quá nhiều bụi bẩn, kích thước đúng chuẩn, ký tự trên biển phải rõ nét không bị che khuất.

Chương IV: Thiết kế và thực hiện phần mềm

43

Hình 4.2: Biển số xe bị mất thông tin do ánh sáng và vật cản.

- Biển số xe không quá nghiêng, góc nghiêng cho phép khoảng từ -45° đến +45° là góc hợp bởi đường thẳng đứng so với khung ảnh và cạnh trái hoặc phải của tấm biển số.

Hình 4.3: Góc nghiêng cho phép của biển số.

- Camera đặt tại vị trí cố định, tránh ánh sáng phản chiếu từ biển số và vật cản tầm nhìn biển số, góc lệch của camera cho phép khoảng từ -30° đến +30°.

44 - Chỉ có 1 tấm biển xe được chụp trong hình và không có nhiều hình ảnh tương tự xuất hiện trong hình chụp.

- Do sử dụng webcam khi demo chương trình nên biển số khi được chụp không quá xa, chỉ từ 0,5m đến 1m.

2. Cấu trúc biển số xe máy

Ở Việt Nam, biển kiểm soát xe cơ giới (hay còn gọi tắt là biển số xe) là tấm biển gắn trên mỗi xe cơ giới, được cơ quan công an cấp khi mua xe mới hoặc chuyển nhượng xe. Biển số xe được làm bằng hợp kim nhôm sắt, có dạng hình chữ nhật hoặc hơi vuông, trên đó có in những con số và chữ cho biết: vùng và địa phương quản lý, các con số cụ thể khi tra trên máy tính còn cho biết danh tính người chủ hay đơn vị đã mua nó, thời gian mua nó phục vụ cho công tác an ninh... Đặc biệt trên đó còn có hình quốc huy dập nổi của Việt Nam.

Theo Phụ lục 4 – Thông tư 36/2010/TT-BCA Quy định kích thước của chữ và số trên biển số PTGTCGĐB, đối với biển số mô tô trong nước:

* Biển số gồm các nhóm chữ và số sắp xếp cụ thể như sau:

- Nhóm số thứ nhất là ký hiệu địa phương đăng ký xe và sê ri đăng ký. Giữa ký hiệu địa phương và sê ri đăng ký được phân cách bằng dấu gạch ngang (-). (adsbygoogle = window.adsbygoogle || []).push({});

- Nhóm số thứ hai là thứ tự xe đăng ký gồm 04 chữ số tự nhiên từ 0001 đến 9999,hoặc 05 chữ số tự nhiên từ 000.01 đến 999.99

Hình 4.5: Cấu trúc biển số xe máy.

Ví dụ: trên biển số hình vẽ H2 thể hiện: + 29 chỉ ký hiệu địa phương đăng ký. + K6 chỉ ký hiệu sê ri đăng ký. + .43 số thứ tự đăng ký.

Chương IV: Thiết kế và thực hiện phần mềm

45 * Về kích thước biển số xe:

- Chiều cao của tấm biển : 140 mm. - Chiều rộng của tấm biển : 190 mm.

* Kích thước chữ và số:

- Chiều cao của chữ và số: 55 mm. - Chiều rộng của chữ và số: 22 mm. - Nét đậm của chữ và số: 7 mm.

- Khoảng cách giữa các chữ và số: 5 mm. Khoảng cách giữa các số thứ tự đăng ký là 12 mm.

* Vị trí ký hiệu trên biển số: Quốc huy được dập nổi ở vị trí phía trên gạch ngang hàng trên của biển số, cách mép trên của biển số 5mm.

* Màu sắc:

- Nền biển màu trắng, chữ màu đen là xe thuộc sở hữu cá nhân và xe của các doanh nghiệp.

- Nền biển màu xanh dương, chữ màu trắng là biển xe của các cơ quan hành chính sự nghiệp (dân sự).

- Nền biển màu đỏ, chữ màu trắng là xe quân đội, xe của các doanh nghiệp quân đội. - Nền biển màu vàng chữ trắng là xe thuộc Bộ tư lệnh Biên phòng (ít gặp).

- Nền biển màu vàng chữ đen là xe cơ giới chuyên dụng làm công trình.

4.1.2 Lƣu đồ giải thuật tổng quát

46

Hình 4.6: Lưu đồ giải thuật tổng quát.

Ban đầu, chương trình sẽ kết nối với camera để chụp hình xe được gửi, để đưa vào CSDL và được sử dụng cho việc phát hiện biển số xe.

Hình 4.7: Ảnh gốc ban đầu. Nhận dạng ký tự tách được Tách các ký tự trên biển Phát hiện biển số xe Chụp hình từ camera Ảnh gốc ban đầu Ảnh chỉ chứa vùng có biển số Ảnh của các ký tự trên biển số xe Các ký tự biển số xe ở dạng string

Chương IV: Thiết kế và thực hiện phần mềm

47 Ảnh gốc này được vào một chương trình con dùng để trích xuất ra vùng ảnh chứa biển số xe. Chương trình trích xuất biển số xe sử dụng các thuật toán xử lý ảnh được hỗ trợ như Morphology, Sobel, Smooth Gaussin, Find Contours… để tìm ra vị trí , đóng khung và cắt lấy phần ảnh chứa biển số để xử lý tiếp.

Hình 4.8: Ảnh gốc được đóng khung phần biển số và ảnh chỉ chứa biển số được cắt ra.

Tiếp theo, ảnh chỉ chứa biển số được vào chương trình con tách các ký tự biển số thành tập hợp các ảnh đen trắng với thứ tự đọc từ trái sang phải, từ trên xuống.

Hình 4.9 : Tập hợp các ảnh ký tự được đánh dấu đúng thứ tự đọc.

Các hình ảnh ký tự này lần lượt đưa vào chương trình con ảnh ký tự chuyển thành ký tự ASCII ở dạng String và xuất ra chương trình.

48

4.1.3 Sơ đồ giải thuật các chƣơng trình con a. Chƣơng trình con phát hiện biển số xe

Ảnh gốc chụp từ camera chưa qua xử lý sẽ là ảnh đầu vào của chương trình con. Dựa vào đặc tính quan trọng của biển số xe là nền chữ đen nổi bật trên nền màu trắng của tấm biển. Ở điều kiện ảnh được chụp với ánh sáng tốt, ta sử dụng thuật toán MorphologyEx với tính năng BlackHat để làm nổi bật phần ký tự trên biển số. Trước khi làm điều này ta cần phải Smooth ảnh đầu vào để lọc bớt nhiễu và mịn cách góc cạnh trên hình.Sau đó, ảnh được chuyển đổi từ không gian màu BGR sang không gian màu GRAY bằng hàm Convert( ).

Tiếp theo ta sử dụng hàm Sobel để phát hiện các đặc tính cạnh theo chiều dọc của các ký tự chứa biển số. Khi đã phát hiện các cạnh dọc của ký tự ta dùng hàm Dilate để kết nối các ký tự lại theo chiều ngang và ta tiếp tục sử dụng Smooth. Ở đây ta sử dụng thuật toán Otsu kết hợp với lấy ảnh ngưỡng Threshold Binary để chuyển ảnh sang dạng nhị phân trắng đen, nhằm lọc đi các thành phần không cần thiết. Dựa vào ảnh ngưỡng có được ta dùng hàm Find Contours để kiếm cách vùng có các đặc tính về kích thước gần giống với biển số xe như là diện tích, tỉ lệ chiều rộng và chiều ngang. Ở đây ta chọn ngưỡng tỉ lệ giữa chiều rộng và ngang là từ 1 đến 2, phù hợp với kích thước biển số xe máy Việt nam. (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi có được vùng đạt yêu cầu như trên, ta khoanh vùng trên ảnh gốc và cắt vùng ảnh này để đưa vào chương trình phân tách từng ký tự trên biển số. [12][17][19][20][24]

Chương IV: Thiết kế và thực hiện phần mềm

49

Chương IV: Thiết kế và thực hiện phần mềm

51

Hình 4.12: Kết quả cuối cùng của quá trình nhận diện biển số xe.

b. Chƣơng trình con tách ký tự

Ảnh biển số được trích xuất từ chương trình trên được vào chương trình tách ký tự. Thuật toán chủ yếu được sử dụng ở chương trình này là Find Contours, tìm kiếm các vùng chứa ký tự.

Đầu tiên ảnh sẽ được chuyển sang dạng ảnh binary bằng thuật toán Threshold Binary Otsu. Sau bước này ảnh sẽ có nền màu đen, các ký tự và một số nhiễu có màu trắng. Tiếp theo ta sử dụng thuật toán Find Contours để xác định các vùng trắng trên nền đen, so sánh các vùng này với đặc điểm về khoảng diện tích ,chiều cao, chiều rộng, tỉ lệ giữa chiều cao và chiều rộng. Từ đó ta lấy được các vùng chứa ký tự đưa vào một mảng. Sau đó, ta dựa vào vị trí các vùng xác định được trong mảng đó sắp xếp theo thứ tự đọc để đưa vào chương trình đọc ký tự. [12][14]

52 Lưu đồ giải thuật:

Hình 4.13: Lưu đồ giải thuật tách ký tự.

c. Chƣơng trình đọc ký tự

Nhận dạng ký tự với chương trình mã nguồn mở Tesseract OCR được tích hợp vào trong EmguCV, hỗ trợ nhận dạng các file ảnh ký tự thành các ký tự ACSII. Chương trình OCR cần phải được huấn luyện với các mẫu ký tự cụ thể để có thể nhận dạng thành công các ký tự ở dạng ảnh. Code chương trình tesseract OCR được sử dụng trong chương trình:[24]

Chương IV: Thiết kế và thực hiện phần mềm

53 Tesseract.Charactor[] words;

StringBuilder strBuilder = new StringBuilder();

_ocr.Recognize(plateMask); words = _ocr.GetCharactors(); //string text = _ocr.GetText();

for (int i = 0; i < words.Length; i++) {

strBuilder.Append(words[i].Text); }

string licenses = null;

licenses = strBuilder.ToString(); //string tenbao = "thai" + "bao";

BienSoLabel.Text = String.Format("License: {0}", licenses);

4.1.4 Kết quả demo

54

Hinh 4.15: Kết quả demo 2.

Chương IV: Thiết kế và thực hiện phần mềm

55

Hinh 4.17: Kết quả demo 4.

4.2 Hệ thống CSDL

4.2.1 Tạo CSDL (adsbygoogle = window.adsbygoogle || []).push({});

Tạo dữ liệu “QUANLYGIUXE.mdf” và nhật ký lưu trữ “QUANLYGIUXE.ldf” lưu trữ trong ổ đĩa D với kích thước lần lượt là 50MB và 10MB

create database QUANLYGIUXE

on primary ( name=QUANLYGIUXE_mdf, Filename='D:\QUANLYGIUXE\QUANLYGIUXE.mdf', Size=50MB, MaxSize=Unlimited, FileGrowth=10% ) Log on ( Name=QUANLYGIUXE_Log, FileName='D:\QUANLYGIUXE\QUANLYGIUXE.ldf', Size=10MB, MaxSize=Unlimited, FileGrowth=5% )

56 Xây dựng bảng dữ liệu “ThongTinXe” với khóa chính la “MaPhieu” và kiểu dữ liệu được khia báo như sau:

Create Table ThongTinXe

(

MaPhieu varchar(50) Not Null,

SoXe varchar(50) Not Null,

BienSoRa varchar(50),

NgayVao Datetime Not Null,

NgayRa Datetime,

TienGui int,

HinhAnhVao Nvarchar(50) Not Null,

HinhAnhRa Nvarchar(50),

AnhBienSoVao Nvarchar(50) Not Null,

AnhBienSoRa Nvarchar(50),

TinhTrang Smallint Not Null

Constraint PK_ThongTinXe Primary Key(MaPhieu)

)

Bảng dữ liệu được tạo

Chương IV: Thiết kế và thực hiện phần mềm

57

4.2.2 Sơ đồ tổng quát hệ thống

Khi xe vào

Hình 4.19: Sơ đồ tổng quát hệ thống khi xe vào.

Khi xe ra

58 Tìm kiếm thông tin xe

Hình 4.21: Sơ đồ tổng quát hệ thống khi tìm kiếm thông tin xe.

4.2.3 Lập trình CSDL với C#

- Kết nối đến CSDL (adsbygoogle = window.adsbygoogle || []).push({});

SqlConnection con = new SqlConnection();

con.ConnectionString= "Data Source= Tên_PC\\SQLEXPRESS;Initial Catalog= QUANLYGIUXE;

Integrated Security=True";

SqlCommand cmd = new SqlCommand();

cmd.Connection = con; con.Open();

SqlDataAdapter ad = new SqlDataAdapter(cmd.CommandText, con);

DataTable tb = new DataTable();

ad.Fill(tb);

- Đưa dữ liệu vào bảng “ThongTinXe” khi xe vào

cmd.CommandText ="INSERT INTO ThongTinXe values ('Mã_phiếu', 'Biển_số_xe_vào', NULL, 'Ngày_xe_vào', NULL, NULL, 'Đường_dẫn_hình_ảnh_xe_vào', 'Đường_dẫn_hình_ảnh_xe_ra',

'Đường_dẫn_ảnh_biển_số_xe_vào',NULL) ";

+ Dữ liệu lúc xe ra ta đặt giá trị NULL.

- Cập nhật dữ liệu vào bảng “ThongTinXe” khi xe ra

cmd.CommandText = "UPDATE ThongTinXe SET NgayRa='Ngày_giờ_ra' ,BienSoRa='Biển_số_xe_ra', AnhbienSoRa='Đường_dẫn_ảnh_biển_số_xe_ra',HinhAnhRa='Đường_dẫn_hình_ảnh_xe_ra'where

MaPhieu= ' " + textbox.txt + " ' ";

+ Mã_phiếu: lưu vào database dạng NgayThangNam-GioPhutGiay lúc chụp hình xe vào. + Biển_số: nhận từ ngõ ra của chương trình nhận diện biển số. Nếu kết quả nhận diện không đúng khi đối chiếu với ảnh ta có thể nhập bằng tay vào textBox1

Chương IV: Thiết kế và thực hiện phần mềm

59

cmd.CommandText = "UPDATE ThongTinXe SET SoXe ='" + textBox1.Text +"'where MaPhieu ='" + textBox2.Text + "'";

+ Ngày_xe_vào và ngày_xe_ra : lấy ngày giờ hệ thống bằng hàm getdate( ). + Đường_dẫn_hình_ảnh _xe_ vào: „E:\Hinh anh xe vao\Name1.jpg‟.

„Name1‟: tên hình ảnh xe vào được đặt cùng với mã phiếu.

+ Đường_dẫn_hình_ảnh _xe_ ra: „E:\Hinh anh xe ra\Name2.jpg‟.

„Name2‟: tên hình ảnh xe ra được đặt theo „NgayThangNam-GioPhutGiay‟ khi xe ra.

+ Đường_dẫn_ảnh_biển_số _xe_ vào: „E:\Hinh anh xe vao\Name3.jpg‟.

„Name3‟: tên ảnh biển số xe vào được đặt theo „NgayThangNamGioPhutGiay‟ khi xe vào.

+ Đường_dẫn_ảnh _biển_số_xe_ ra: „E:\Hinh anh xe ra\Name4.jpg‟.

„Name4‟: ảnh biển số xe ra được đặt theo‟ NgayThangNamGioPhutGiay‟ khi xe ra.

- Hiển thị dữ liệu lên giao diện

cmd.CommandText = "Select * from ThongTinXe where MaPhieu ='" + textBox.Text + "'"; (adsbygoogle = window.adsbygoogle || []).push({});

if (tb.Rows.Count > 0) {

textBox.Text = tb.Rows[0][n].ToString(); // n: số thứ tự trường chứa dữ liệu

}

- Hiển thị hình ảnh lên giao diện

cmd.CommandText = "Select * from ThongTinXe where MaPhieu ='" + textBox.Text + "'";

if (tb.Rows.Count > 0) {

String path = (String)tb.Rows[0][n]; // n: số thứ tự trường chứa dữ liệu

pictureBox.Image = Image.FromFile(path); }

60 - Tính tiền gửi xe

Hình 4.22: Lưu đồ giải thuật tính tiền gửi xe theo ngày.

DateTime NgayXeRa = (DateTime)tb.Rows[0][m]; // m: số thứ tự trường chứa dữ liệu Ngayra

DateTime NgayXeVao = (DateTime)tb.Rows[0][n]; // n: số thứ tự trường chứa dữ liệu Ngayvao

TimeSpan Ngay = NgayXeRa - NgayXeVao; int SoNgay = 0;

SoNgay = Convert.ToInt32(Ngay.TotalDays); if (SoNgay == 0)

{

cmd.CommandText="UPDATE ThongTinXe SET TienGui ='2000' where MaPhieu ='"+textBox.Text+"'"; }

else

{

int t = 2000 * (1 + SoNgay);

cmd.CommandText="UPDATE ThongTinXe SET TienGui ='"+t+"'where MaPhieu='" +textBox.Text+"'"; }

Chương IV: Thiết kế và thực hiện phần mềm

61 - Thiết lập 2 chế độ tìm kiếm thông tin xe : tìm theo mã phiếu và tìm theo biển số xe

if (radioButton1.Checked == true) {

cmd.CommandText = "Select * from ThongTinXe where MaPhieu ='" + textBox.Text + "'"; }

else

{

cmd.CommandText = "Select * from ThongTinXe where SoXe = '" + textBox.Text + "'"; }

4.3 Giao diện ngƣời dùng

Giao diện chính của chương trình quản lý

62 (adsbygoogle = window.adsbygoogle || []).push({});

CHƢƠNG V: KẾT QUẢ CHẠY HỆ THỐNG

Qua quá trình nghiên cứu đề tài, đã xây dựng được chương trình cơ bản để có thể ứng dụng vào hệ thống bãi giữ xe thông minh. Chương trình được thực hiện bằng ngôn ngữ C# với sự hỗ trợ của thư viện xử lý ảnh EmguCV v2.3, chương trình quản lý CSDL Microsoft SQL Server 2008.

Chƣơng trình đã thực hiện đƣợc tính năng sau

- Mỗi xe khi vào bãi gửi sẽ được sở hữu một thẻ gửi xe tương ứng với một bản ghi cơ sở dữ liệu với đầy đủ các thông tin: Mã số thẻ, hình ảnh chứa biển số xe, dữ liệu biển số xe dạng text (do phần mềm nhận dạng từ hình ảnh chụp biển số xe), thời gian…

- Nếu có sai sót khi nhận dạng biển số xe, chương trình có thể nhập tay để điều chỉnh lại thông tin.

- Khi xe ra khỏi bãi gửi, hệ thống làm công việc tương tự như lúc xe vào (nhận về mã số thẻ, nhận dạng biển số xe đang ra…), đồng thời thông qua mã số thẻ gửi xe, thông tin về xe gửi sẽ được tham chiếu và hiển thị, phần mềm hệ thống sẽ tự động so sánh biển số xe vào và ra để kết luận tính hợp lệ của lượt xe ra.

- Nếu hợp lệ, chương trình sẽ phát tiếng hiệu cho phép xe ra, nếu không thì sẽ báo hiệu cho

Một phần của tài liệu Luận văn tốt nghiệp XÂY DỰNG HỆ THỐNG BÃI GIỮ XE THÔNG MINH (Trang 56 - 91)