Lưu đồ quá trình nhận dạng khói, lửa

Một phần của tài liệu Ứng dụng xử lý ảnh để phát hiện và cảnh báo cháy rừng qua tin nhắn điện thoại (Trang 64)

Kết quả sau q trình nhận dạng khói:

(a) (b)

Hình 4.16: Khói được nhận dạng trên khung ảnh đã xử lý (a), khung ảnh gốc được làm nổi vùng có khói (b).

Phần mềm lập trình và mơ phỏng MATLAB

a. Giới thiệu phần mềm MATLAB

MATLAB là một mơi trường tính tốn số và lập trình, được thiết kế bởi công ty MathWorks. MATLAB cho phép tính tốn số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngơn ngữ lập trình khác. MATLAB giúp đơn giản hóa việc giải quyết các bài tốn tính tốn kĩ thuật so với các ngơn ngữ lập trình truyền thống như C, C++, và Fortran.

MATLAB được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thơng, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mơ hình tài chính, hay tính tốn sinh học. Với hàng triệu kĩ sư và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi trường hàn lâm, MATLAB là ngơn ngữ của tính tốn khoa học.

b. Hướng dẫn sử dụng phần mềm MATLAB

Giải thích:

- Mục số 1 là khung Curent Folder: hiển thị danh sách file và thư mục có trong thư mục hiện đang làm việc, ta có thể xố, mở, đổi tên file hay folder bất kì trong danh sách trên.

- Mục số 2 là Command Window: hiển thị các dòng lệnh đã thực hiện, giống như cmd trong Window hay Terminal trong Linux, đây là nơi ta gõ trực tiếp dòng lệnh và xem kết quả trả về.

- Mục số 3 là khung Workspace: hiển thị tất cả các tên biến, mảng mà ta đã tạo trong phiên làm việc. Ta có thể xố trắng phiên làm việc bằng cách gõ lệnh Clear vào khung Command Window.

- Mục số 4 là các Tab làm việc bao gồm Tab Home, Plots và Apps.

Tạo file M-File để lập trình:

Hàm và Script files trong Matlab đều được quản lý dưới dạng các tập tin có phần mở rộng .m, thường được soạn thảo bởi Matlab Editor. Khởi động Matlab Editor bằng một cách sau:

- Di chuyển tới Tab Home, bấm vào New Script

- Chương trình sẽ tạo ra một khung soạn thảo, file được tạo mặc định sẽ tên là Untitled.m.

Hình 4.19: Khung soạn thảo code của MATLAB.

- Ta thêm các dòng lệnh và bấm Run trong mục Run ở trong Tab Help:

Hình 4.20: Bấm nút Run để chạy chương trình trong MATLAB.

Hình 4.21: Thêm comment trong code ở MATLAB.

Lập trình giao diện trong MATLAB:

- Trong khung Command Window gõ lệnh guide và nhấn Enter. Giao diện tạo GUIDE hiện ra như hình 4.22.

Hình 4.22: Hộp thoại tạo GUIDE hiện ra.

- Ta chọn Blank GUI (Default), bấm OK. Ta đi vào phần tạo bằng cách kéo thả các đối tượng. Đặt tên và thuộc tính cũng như viết hàm cho các đối tượng.

Hình 4.23: Giao diện kéo thả của phần GUIDE.

- Các mục trong khung số 1 là các đối tượng bao gồm Button, Slider, Radio Button, Check Box, Edit Text và Static Text,… Tuỳ theo người sử dụng mà ta thêm các mục vào khung số 2.

- Khung số 2 là giao diện khi xuất hiện với người dùng. Người lập trình kéo các đối tượng vào khung này và sắp xếp hợp lý, sau đó bấm vào nút Run Figure hoặc có thể sử dụng tổ hợp phím tắt Ctrl + T.

- Mặc định khi tạo một Giao diện mới MATLAB sẽ tạo luôn một M-Flie đi kèm trùng tên với file giao diện, chỉ khác phần đuôi mở rộng. File giao diện phần mở rộng là .fig, còn M-Flie phần mở rộng là .m.

Hình 4.24: Các button được tạo ví dụ trong MATLAB.

 Nhận xét: MATLAB là một công cụ giúp người kỹ sư mô phỏng các hệ thống một cách tốt nhất. Giúp ta có thể xây dụng các hệ thống phức tạp và kiểm thử hoạt động. Ngoài ra MATLAB cịn có các cộng cụ khác trong các lĩnh vực như: điều khiển tự động, xử lý dữ liệu lớn (Big Data), thống kê số liệu,…

CHƯƠNG 5. KẾT QUẢ THỰC NGHIỆM

THU THẬP DỮ LIỆU

Trong 15 tuần thực hiện đề tài do giới hạn thời gian nên đối tượng thu thập được chỉ là các đoạn clip ghi lại cảnh cháy hoặc một vật thể cháy nhỏ và có những vệt khói kéo theo, từ các đoạn clip ta có thể chạy mơ phỏng trên máy tính. Tiến hành thu thập các trạng thái như: khói ít, khói nhiều, có lửa hoặc khơng có lửa.

Từ yêu cầu đó, nhóm đã thu thập được các đoạn video clip bao quát các trường hợp cần mô phỏng, từ đó đánh giá khả năng cũng như có thể lấy cơ sở để cân chỉnh lại hệ thống để hoạt động chính xác. Bảng sau mơ tả các đoạn video clip nhóm đã thu thập được.

Bảng 5-1: Bảng mô tả đoạn clip thu thập được.

STT Frame hình đầu tiên Mơ tả

1 Cháy đi kèm với

2 Chỉ có khói trắng và có người mặc áo gần giống với màu trắng của khói. 3 Đoạn clip do nhóm thực hiện chỉ có khói trắng bốc lên từ từ và mờ. 4 Được thu hình từ camera góc quan sát rộng, khói xuất hiện khá xa so với vị trí đặt camera.

5 Đoạn clip được thu hình từ camera được di chuyển liên tục.

KẾT QUẢ NHẬN DẠNG KHÓI VÀ LỬA

Giao diện chương trình trên máy tính

Để sắp xếp một cách trực quan để so sánh, nhóm đã thiết kế giao diện với người dùng như hình sau:

Hình 5.1: Giao diện chương trình nhận dạng trên máy tính.

nối với máy tính sau đó bấm vào nút Kết nối Camera. Khi chương trình tìm thấy camera thì sẽ tự động kết nối và thông báo cho người dùng thông qua chữ CONNECT màu xanh.

Hình 5.2: Trạng thái kết nối của camera trong chương trình.

Để tiện cho việc cân chỉnh, nhóm đã tích hợp thêm tính năng chạy thử chương trình trên một đoạn clip có sẵn. Để thực hiện ta bấm vào nút Browse, khi đó ta sẽ thấy một hộp thoại như hình sau:

Hình 5.3: Hộp thoại để chọn đường dẫn đến file video cần chạy thử.

Ta đi đến nơi chứa file video, sau đó bấm Open để chương trình xử lý tiếp. Sau khi xử lý xong, khung hình đầu tiên sẽ được hiển thị; để chạy ta bấm Start.

Hình ảnh chạy thực tế

Hình 5.4: Phát hiện khói đen.

Hình 5.6: Khói ít được phát hiện.

Hình 5.7: Khói xuất hiện ở xa hệ thống không phát hiện kịp thời.

Bảng 5-2: Bảng hiệu suất kết quả nhận dạng. Video Video thực nghiệm Số Frame ảnh Frames Khói ít Frames Khói nhiều Frames Có lửa Frames Khơng có Hiệu xuất % Số frame Nhận dạng đúng Số frame Nhận dạng đúng Số frame Nhận dạng đúng Số frame Nhận dạng đúng Clip 1 517 200 193 233 221 51 46 33 30 93.1 Clip 2 707 74 71 83 79 701 697 12 10 93.5 Clip 3 2886 1055 997 2599 2587 0 0 5 4 91.3 Clip 4 1200 789 654 276 255 0 0 90 87 90.6 Clip 5 1800 682 654 776 755 465 460 70 66 96.6 93.02

Hiệu suất = (số lần đúng)/(tổng số ảnh thực nghiệm)

 Nhận xét:

- Hệ thống hoạt động khá tốt trong khu vực quan sát gần camera và trong điều kiện ban ngày ánh sáng vừa đủ không gay gắt, khoảng cách xa tốc độ phát hiện khói chận, khi camera di chuyển thì hệ thống phát hiện khơng chính xác vùng có khói hoặc lửa. Do thuật tốn nên khi cài đặt ban đầu cần phải giữ khu vực giám sát khơng có lửa hoặc khói để hệ thống có thể nhận dạng chính xác.

- Kết quả nhận dạng phụ thuộc vào quá trình chọn ngưỡng, để làm tốt thì hệ thống phải qua cân chỉnh tuy vào môi trường đặt camera quan sát cũng như đối tượng xuất hiện trong khung hình của camera. Ngồi ra, kết quả cũng phụ thuộc vào chất lượng của camera nên kết quả cũng chưa được tối ưu nhất.

CẢNH BÁO THÔNG QUA SIM800A

Phần cảnh báo qua điện thoại vẫn gặp một vài lỗi nhỏ, lý do là do module SIM800 khởi động khá lâu hoặc mất kết nối lúc đang hoạt động. Nhóm đã cải thiện bằng cách gắn thêm anten cho module cũng như cải thiện module nguồn từ nguồn cấp bằng cổng USB có dịng định mức 500 mA sang nguồn 5V 2A có cơng suất và độ ổn định cao hơn.

Hình 5.9: Ăn-ten gắn thêm cho module SIM800A.

Về phần cảnh báo qua tin nhắn, trong đề tài này thì mức độ cảnh báo được chia làm 3 mức độ:

- Ít khói: chương trình sẽ chỉ cảnh báo tin nhắn qua điện thoại và cho chuông báo hoạt động ngay tại vị trí người giám sát.

- Khói nhiều: chương trình sẽ thơng báo bằng cuộc gọi đồng thời cho chuông báo hoạt động.

- Xuất hiện lửa: chương trình sẽ thực hiện cả việc thơng báo bằng điện thoại tới người giám sát và cơ sở chữa cháy gần nhất, đồng thời chuông báo hoạt động liên tục.

Một số hình ảnh hoạt động của phần cảnh báo:

(a) (b)

Hình 5.10: Cảnh báo khi phát hiện lửa; cuộc gọi đến điện thoại, hình (a); tin nhắn cảnh báo cháy, hình (b).

(a) (b)

Hình 5.11: Tin nhắn thơng báo phát hiện khói trong khu vực quét của camera; cảnh báo khói nhiều, hình (a); khói ít, hình (b).

 Nhận xét: module SIM800 hoạt động không ổn định khi cấp nguồn khơng đủ hoặc

hoạt động với ăn-ten có độ lợi thấp, nhóm đã sửa lại tích hợp phần cấp nguồn và nâng cấp ăn-ten thu phát sóng. Từ đó module đã hoạt động ổn định, khi đặt bộ cảnh báo trong nhà hoạt động khá tốt nếu đặt ở ngoài trời thì module khởi động khá nhanh từ 5-10s so với khi đặt module trong nhà từ 20-30s.

CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TRIỂN

KẾT LUẬN

Từ các thuật toán nhận dạng ảnh tĩnh ban đầu, nhóm đã cải tiến để thuật tốn nhận dạng có thể chạy được trên một đoạn clip ngắn. Mục tiêu ban đầu nhóm đưa ra đã đạt được khá tốt: thiết kế và thi công hệ thống cảnh báo cháy rừng dựa trên phương pháp xử lý ảnh để nhận biết khói và lửa, cảnh báo thơng qua module SIM800 qua tin nhắn và cuộc gọi. Hệ thống có thể phát hiện được khói, lửa gồm những dạng tự nhiên của một đám cháy thường có: khói xuất hiện ít, khói dày đặc và có thể nhận dạng mức độ một vài đám cháy nhỏ cho đến cháy lớn. Toàn bộ hệ thống xử lý ảnh được lập trình trên MATLAB, hệ thống cảnh báo được lập trình bằng phần mềm CCS và có khả năng giao tiếp với máy tính.

HƯỚNG PHÁT TRIỂN

Từ sản phẩm đã hồn thành, ta có thể phát triển chương trình có thể hoạt động trên các board nhúng nhỏ gọn hoặc có thể nhúng vào trong camera quan sát trở thành một chức năng mặc định của thiết bị. Ngoài ra, từ phần cảnh báo qua sóng điện thoại ta có thể phát triển một sever từ đó kết nối các camera với nhau có thể giám sát cũng như cảnh báo cháy.

Hệ thống cảnh báo có thể kết hợp với tính năng phát hiện vật di chuyển trong khu vực qt của camera, đây là tính năng có ý nghĩa to lớn đối với việc giám sát một khu vực cần an ninh cao trong công nghiệp cũng như trong quân sự. Giá thành của một hệ thống sẽ được giảm xuống khá nhiều, nơi mà các cảm biến của các hãng lớn trên thế giới có giá khá cao so với chi phí đầu tư một hệ thống camera quan sát.

TÀI LIỆU THAM KHẢO

[1] Bộ nông nghiệp và PTNT, “Tác động của biến đổi khí hậu đến nguy cơ cháy rừng”, Chương trình Hành động Thích ứng với Biến đổi khí hậu ngành Nơng nghiệp và Phát triển nông thôn.

[2] Nguyễn Quang Hoan (2006), “Xử lý ảnh”, NXB Bưu Chính Viễn Thơng.

[3] Lê Văn Quang, “Xử lý ảnh để phát hiện khói cho cảnh báo cháy rừng”, Đồ Án Tốt Nghiệp ĐH, Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2016.

[4] Wen-Bing Horng, Jian-Wen Peng, “A Fast Image-Based Fire Flame Detection Method Using Color Analysis”, 2008

[5] Chunyu Yu, Zhibin Mei, Xi Zhang, “A real-time video fire flame and smoke detection algorithm”, 2013.

[6] B. U. Toreyin, Y. Dedeoglu, and A. E. Cetin (2005), “Wavelet based real-time smoke detection in video,” in EUSIPCO.

[7] Nguyễn Thanh Hải, Giáo trình xử lý ảnh, NXB Ðại Học Quốc Gia TP. HCM, 2014

[8] Nhóm Thị Giác Máy Tính (CVA), “Khơng gian màu (Color space)”, 2012. [9] Nguyễn Quang Hoan, Xử lý ảnh, NXB Bưu Chính Viễn Thơng, 2006.

[10] Gonzalez, Woods and Eddins, “Digital Image Processing” (3rd Edition), 2009. [11] ThS. Hồ Đức Lĩnh, “Xử Lý Hình Thái Học Trên Ảnh Và Ứng Dụng”, Khoa Cơng

Nghệ Thông Tin, Đại Học Đông Á.

[12] Microchip Technology Incorporated, “PIC16F882/883/884/886/887 Data Sheet”, 2009.

PHỤ LỤC

I. CODE CHƯƠNG TRÌNH CHÍNH

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%

%

% FILE NAME: Video_Player % DESCRIPTION: Video Player %

% Name Date Reason

% LY HOANG ANH 01-Jan-2017 Basic GUI concepts %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%

function varargout = Video_Player(varargin)

% VIDEO_PLAYER MATLAB code for Video_Player.fig

% VIDEO_PLAYER, by itself, creates a new VIDEO_PLAYER or raises the existing

% singleton*. %

% H = VIDEO_PLAYER returns the handle to a new VIDEO_PLAYER or the handle to

%

% VIDEO_PLAYER('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in VIDEO_PLAYER.M with the given input arguments.

%

% VIDEO_PLAYER('Property','Value',...) creates a new VIDEO_PLAYER or raises the

% existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Video_Player_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Video_Player_OpeningFcn via varargin. %

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Video_Player

% Last Modified by GUIDE v2.5 06-Jan-2017 16:32:39

% Begin initialization code - DO NOT EDIT gui_Singleton = 1;

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Video_Player_OpeningFcn, ... 'gui_OutputFcn', @Video_Player_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% --- Executes just before Video_Player is made visible.

function Video_Player_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.

% hObject handle to figure

% Choose default command line output for Video_Player handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes Video_Player wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = Video_Player_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure varargout{1} = handles.output;

% ************************ BROWSE

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % global frame_1

clc;

[ video_file_name,video_file_path ] = uigetfile({'*.avi'},'Pick a video file'); %;*.png;*.yuv;*.bmp;*.tif'},'Pick a file'); if(video_file_path == 0) return; end input_video_file = [video_file_path,video_file_name]; set(handles.edit1,'String',input_video_file); % Acquiring video % videoObject = mmreader(input_video_file); videoObject = VideoReader(input_video_file); % Display first frame

frame_1 = read(videoObject,1);

% frame_1 = imresize(frame_1,[400 400]); % disp(bw_1);

% disp(frame_1);

imshow(frame_1); drawnow;

axis(handles.axes1,'off'); % Display Frame Number set(handles.text3,'String','1'); set(handles.text4,'String',[' / ',num2str(videoObject.NumberOfFrames)]); set(handles.text2,'Visible','on'); set(handles.text3,'Visible','on'); set(handles.text4,'Visible','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton1,'Enable','off'); %Update handles handles.videoObject = videoObject; guidata(hObject,handles);

% ************************ BROWSE TEXT BOX ********************************

function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

Một phần của tài liệu Ứng dụng xử lý ảnh để phát hiện và cảnh báo cháy rừng qua tin nhắn điện thoại (Trang 64)

Tải bản đầy đủ (PDF)

(100 trang)