(Đồ án hcmute) ứng dụng xử lý ảnh điều khiển đèn giao thông tại ngã tư

119 4 0
(Đồ án hcmute) ứng dụng xử lý ảnh điều khiển đèn giao thông tại ngã tư

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THỐNG TẠI NÚT GIAO THÔNG GVHD: VÕ ĐỨC DŨNG SVTH: NGUYỄN HOÀN HẢO HUỲNH NGỌC GIANG SKL 0 9 Tp Hồ Chí Minh, tháng 12/2019 an 15141148 15141140 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THỐNG TẠI NÚT GIAO THÔNG GVHD: ThS Võ Đức Dũng SVTH: Nguyễn Hồn Hảo Huỳnh Ngọc Giang Tp Hồ Chí Minh - 12/2019 an 15141148 15141140 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Hoàn Hảo Huỳnh Ngọc Giang Kỹ thuật Điện Tử Truyền Thông Đại học quy 2015 MSSV: 15141148 MSSV: 15141140 Chuyên ngành: Mã ngành: 01 Hệ đào tạo: Mã hệ: 01 Khóa: Lớp: 15141DT1A 15141DT2B I TÊN ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG TẠI NÚT GIAO THÔNG II NHIỆM VỤ Các số liệu ban đầu: - Matlab phiên R2017a - Vi điều khiển Arduino Mega 2560 - video đầu vào, video đường xe hay lượng xe vừa phải, video đường nhiều xe Nội dung thực hiện: Xây dựng hệ thống đèn giao thông tự động dựa việc đếm đối tượng qua hình ảnh Đầu vào từ video chứa đối tượng phương tiện giao thông nói chung Kết đếm gửi xuống vi điều khiển Arduino Mega 2560 để điều khiển cột đèn giao thơng mơ hình Nhóm chúng em thực nội dung sau:  Nội dung 1: Tìm hiểu nghiên cứu phần mềm matlab, kit Arduino Mega 2560, cách kết nối Arduino với matlab, xây dựng thư viện cho Arduino  Nội dung 2: Tìm hiểu thuật tốn phát vật thể, phương tiện giao thơng  Nội dung 3: Tìm hiểu, nghiên cứu, xây dựng trình xử lý ảnh đầu vào  Nội dung 4: Thiết kế, xây dựng hệ thống đếm phương tiện qua ảnh, lập trình giao diện sử dụng để thu thập liệu gửi liệu xuống kit Arduino  Nội dung 5: Thiết kế mơ hình thành phẩm  Nội dung 6: Đánh giá kết thực III NGÀY GIAO NHIỆM VỤ: 06/09/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 25/12/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Võ Đức Dũng CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i an BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THỐNG TẠI NÚT GIAO THƠNG GVHD: ThS Võ Đức Dũng SVTH: Nguyễn Hồn Hảo MSSV: 15141148 SVTH: Huỳnh Ngọc Giang MSSV: 15141140 Tp Hồ Chí Minh - 12/2019 an MỤC LỤC TRANG BÌA i NHIỆM VỤ ĐỒ ÁN ii LỊCH TRÌNH THỰC HIỆN iv LỜI CAM ĐOAN vi LỜI CẢM ƠN vii MỤC LỤC viii LIỆT KÊ HÌNH ẢNH xi LIỆT KÊ BẢNG VẼ xiv TÓM TẮT xv CHƯƠNG TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU ĐỀ TÀI 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN ĐỀ TÀI 1.5 BỐ CỤC CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU XỬ LÝ ẢNH 2.2 TỔNG QUAN MATLAB 2.3 GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO 2.4 GIỚI THIỆU PHẦN CỨNG 10 2.4.1 Kit arduino mega 2560 10 2.4.2 Led quét đoạn loại digit 13 2.4.2.1 Led đoạn 13 2.4.2.2 Led quét đoạn loại digit 14 2.4.3 Led đơn 15 2.5 QUY TRÌNH XỬ LÝ ẢNH 15 2.5.1 Xử lý ảnh gì? 15 2.5.2 Quá trình thu nhận ảnh 16 2.5.3 Quá trình tiền xử lý ảnh 16 2.5.4 Quá trình phân đoạn ảnh 16 v an 2.5.5 Biểu diễn mô tả 17 2.5.6 Nhận dạng nội suy ảnh 17 2.5.7 Cơ sở tri thức 18 2.6 CÁC PHƯƠNG PHÁP XỬ LÝ CƠ BẢN VỚI MỘT SỐ ẢNH ĐỐI TƯỢNG ĐẦU VÀO 18 2.6.1 Chuyển đổi ảnh màu sang ảnh màu xám 18 2.6.2 Nhị phân hóa ảnh 20 2.6.3 Các phương pháp lọc nhiễu ảnh nhằm cải thiện ảnh 21 2.6.4 Làm trơn nhiễu lọc tuyến tính 21 2.6.5 Làm trơn nhiễu lọc phi tuyến 24 2.6.6 Phân vùng ảnh 24 2.7 CÁC HÀM CƠ BẢN ĐƯỢC SỬ DỤNG TRONG QUÁ TRÌNH PHÁT HIỆN VÀ ĐẾM SỐ LƯỢNG PHƯƠNG TIỆN TRONG ĐỀ TÀI 25 2.7.1 Hàm imread() 25 2.7.2 Hàm imshow() imagesc() 25 2.7.3 Hàm rgb2gray() 26 2.7.4 Hàm imadjust() 27 2.7.5 Hàm tự tính ngưỡng để chuyển sang ảnh nhị phân graythresh(), hàm chuyển đổi ảnh nhị phân imbinarize() 28 2.7.6 Hàm imdilate() 28 2.7.7 Hàm imerode() 29 2.7.8 Hàm bwareaopen() 30 2.7.9 Hàm bwlable 31 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ 32 3.1 GIỚI THIỆU 32 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 32 3.2.1 Thiết kế sơ đồ khối hệ thống 32 3.2.2 Thiết kế khối hệ thống 33 3.2.3 Thiết kế mơ hình đèn giao thơng 40 3.2.4 Sơ đồ nguyên lý toàn mạch 41 CHƯƠNG THI CÔNG HỆ THỐNG 43 4.1 GIỚI THIỆU 43 4.2 THI CÔNG HỆ THỐNG 43 4.2.1 Thi công bo mạch 43 vi an 4.2.2 Láp ráp kiểm tra 44 4.2.3 Thiết kế giao diện cho người điều khiển 45 4.3 ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH 45 4.4 LẬP TRÌNH HỆ THỐNG 46 4.4.1 Lập trình phần mềm matlab 46 4.4.1.1 Lưu đồ tổng quát matlab 46 4.4.1.2 Chi tiết hệ thống 46 4.4.2 Lập trình kit Arduino Mega 2560 53 4.4.2.1 Lưu đồ tổng quát arduino 53 4.4.2.2 Chương trình điều khiển arduino 54 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 60 4.5.1 Viết tài liệu hướng dẫn sử dụng 60 4.5.2 Quy trình thao tác giao diện 60 CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 61 5.1 KẾT QUẢ 61 5.2 NHẬN XÉT 72 5.3 ĐÁNH GIÁ 73 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 74 6.1 KẾT LUẬN 74 6.2 HƯỚNG PHÁT TRIỂN 74 TÀI LIỆU THAM KHẢO PHỤ LỤC CODE ARDUINO CODE MATLAB vi an LỜI CAM ĐOAN Đồ án tốt nghiệp cơng trình tự thực nghiên cứu nhóm chúng em hướng dẫn Thạc sĩ Võ Đức Dũng Các số liệu kết đồ án “ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG TẠI NÚT GIAO THƠNG” trung thực khơng chép từ cơng trình khác Nhóm chúng em chịu trách nhiệm lời cam đoan Người thực đề tài Nguyễn Hoàn Hảo - Huỳnh Ngọc Giang iii an TRƯỜNG ĐẠI HỌC SPKT TPHCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC Tp Hồ Chí Minh, ngày 18 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Hoàn Hảo Lớp: 15141DT2B MSSV: 15141148 Họ tên sinh viên 2: Huỳnh Ngọc Giang Lớp: 15141DT1A MSSV: 15141140 Tên đề tài: ỨNG DỤNG XỬ LÍ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG TẠI NÚT GIAO THÔNG Xác nhận Nội dung Tuần/ngày GVHD (26/8 – 08/9) (11/9 – 17/9) 3-4-5 (18/9 – 7/10) 5-6-7 (7/10 – 21/10) 8-9-10 (21/10 – 10/11) 11-12-13 (11/11 – 2/12) 15 (3/12 – 18/12) 16 19/10/2019 Nhận đề tài, tìm hiểu đề tài Tìm hiểu hoạt động arduino matlab Tìm hiểu hàm sử dụng Tìm hiểu thuật tốn xử lý ảnh đầu vào Lựa chọn linh kiện Xây dựng cách giao tiếp vi điều khiển led đoạn đơi, led đơn Viết lưu đồ chương trình Tiến hành viết chương trình Xây dựng mơ hình Kiểm tra, viết báo cáo,kiểm tra phần cứng Làm slide trình chiếu Hoàn thành nhiệm vụ đồ án GV HƯỚNG DẪN (Ký ghi rõ họ tên) ii an LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Máy in 3D Materia 101 Hình 2.2 Xe điều khiển từ xa Hình 2.3 Board Arduino Mega 2560 10 Hình 2.4: Sơ đồ chức chân Arduino Mega 2560 10 Hình 2.5: Giao tiếp hệ thống dùng chuẩn UART 12 Hình 2.6: Nguyên lý hoạt động chuẩn UART 13 Hình 2.7 Sơ đồ chân LED Anode 13 Hình 2.8: Cấu tạo led đoạn digit 14 Hình 2.9: Sơ đồ chân Led đoạn loại digit 14 Hình 2.10: Led đơn sắc 15 Hình 2.11: Sơ đồ chân led đơn sắc 15 Hình 2.12: Kết đầu trình xử lý ảnh 15 Hình 2.13: Sơ đồ trình xử lý ảnh 16 Hình 2.14: Chuyển ảnh màu thành ảnh xám 19 Hình 2.15: Lược đồ xám 20 Hình 2.16: Ảnh xám ảnh nhị phân 20 Hình 2.17: Hiển thị ảnh hàm imshow() 25 Hình 2.18: Hiển thị ảnh hàm imagesc() 26 Hình 2.19: Chuyển đổi ảnh màu thành ảnh xám 26 Hình 2.20: Tăng cường độ tương phản anh hàm imadjust() 27 Hình 2.21: Chuyển đổi ảnh xám sang ảnh nhị phân 27 Hình 2.22: Ảnh đầu vào 29 Hình 2.23: Ảnh sau giản nở 29 Hình 2.24: Ảnh đầu vào 30 Hình 2.25: Ảnh sau xói mịn 30 Hình 2.26: So sánh ảnh gốc ảnh sau xử lý hàm bwareaopen() 30 Hình 3.1: Sơ đồ khối hệ thống 32 Hình 3.2: Sơ đồ nối dây vi điều khiển Board Arduino Mega 34 Hình 3.3: Sơ đồ nối dây mạch nạp Arduino Mega 35 Hình 3.4: Sơ đồ nguyên lý led đoạn digit anode chung 36 Hình 3.5 Led đoạn digit thực tế 36 viii an PHỤ LỤC % handles empty - handles not created until after all CreateFcns calle logo = imread('logokhoa.jpg'); imshow(logo); global s; s = serial('COM6'); s.BytesAvailableFcnMode = 'byte'; s.BytesAvailableFcnCount = 1; fopen(s); % if(strcmp(get(s, 'Status'),'closed')) % fopen(s); % end Giao diện chương trình đk tay function varargout = GIAO_DIEN_1(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @ GIAO_DIEN_1OpeningFcn, 'gui_OutputFcn', @ GIAO_DIEN_1OutputFcn, '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 function GIAO_DIEN_1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = GIAO_DIEN_1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit_xanh1_Callback(hObject, eventdata, handles) function edit_xanh1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit_xanh2_Callback(hObject, eventdata, handles) function edit_xanh2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function btn_bd_Callback(hObject, eventdata, handles) global a1; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH an PHỤ LỤC global b1; global s; a = get(handles.edit_xanh1,'String'); b = get(handles.edit_xanh2,'String'); if isempty(str2num(a)) || isempty(str2num(b)) set(handles.edit_xanh1,'String',''); set(handles.edit_xanh2,'String',''); F = msgbox('HAY NHAP DU LIEU SO', 'lOI','error'); else set(handles.btn_bd,'visible','off'); a1 = str2num(['uint8(',a,')']); b1 = str2num(['uint8(',b,')']); fwrite(s,a1); s.BytesAvailableFcn = {@read_data,handles}; end function pushbutton3_Callback(hObject, eventdata, handles) close; chon_che_do; global s; s = serial('COM6'); s.BytesAvailableFcnMode = 'byte'; s.BytesAvailableFcnCount = 1; fopen(s); function figure1_DeleteFcn(hObject, eventdata, handles) out = instrfind; fclose(out); function read_data(obj, event, handles) global s; global a1; global b1; data = fread(obj,1) if (mod(data,2)==1) fwrite(s,b1); else fwrite(s,a1); end Chương trình nhúng video vào matlab function fig fig2 = gcf; PushButton = uicontrol(fig2, 'Style', 'push', 'String', 'Play', 'Position', [0.0 0.0 50 50], 'CallBack', @play, 'UserData', 0); PushButton1 = 'Position', 'CallBack', 'UserData', uicontrol(fig2, 'Style', 'push', 'String', 'Pause', [50 50 50], @pause, 1); ax11 = subplot(2,1,1, 'Parent', fig2); ax12 = subplot(2,1,2, 'Parent', fig2); function pause(PushButton, EventData) if(strcmp(get(PushButton1,'String'),'Pause')) set(PushButton1,'String','Countinue'); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH an PHỤ LỤC uiwait(); else set(PushButton1,'String','Pause'); uiresume(); end end function play(PushButton, EventData) v1 = VideoReader('vua_xe_lan11.mp4'); v2 = VideoReader('vua_xe_lan2.mp4'); i1 = 0; i2 = 0; while i1 < v1.NumberOfFrames || i2 < v2.NumberOfFrames if i1 < v1.NumberOfFrames i1 = i1+1; frame = v1.read(i1); imwrite(frame,'input_1.jpg','jpg'); if ishandle(ax11) image(ax11, frame); title(ax11,'LÀN 1'); else break; %axes is gone, figure is probably gone too end else i1=0; end if i2 < v2.NumberOfFrames i2 = i2+1; frame2 = v2.read(i2); imwrite(frame2,'input_2.jpg','jpg'); if ishandle(ax12) image(ax12, frame2); title(ax12,'LÀN 2'); else break; %axes is gone, figure is probably gone too end else i2=0; end drawnow end end end - Chương trình điều khiển tay function varargout = GIAO_DIEN_1(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @DO_AN_TOT_NGHIEP_1_OpeningFcn, 'gui_OutputFcn', @DO_AN_TOT_NGHIEP_1_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{:}); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH an PHỤ LỤC end function DO_AN_TOT_NGHIEP_1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = DO_AN_TOT_NGHIEP_1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit_Sgiayxanh1_Callback(hObject, eventdata, handles) function edit_Sgiayxanh1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit_Sgiayxanh2_Callback(hObject, eventdata, handles) function edit_Sgiayxanh2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function btn_bd_Callback(hObject, eventdata, handles) global a1; global b1; global s; a = get(handles.edit_Sgiayxanh1,'String'); b = get(handles.edit_Sgiayxanh2,'String'); if isempty(str2num(a)) || isempty(str2num(b)) set(handles.edit_Sgiayxanh1,'String',''); set(handles.edit_Sgiayxanh2,'String',''); F = msgbox('HAY NHAP DU LIEU SO', 'lOI','error'); else set(handles.btn_bd,'visible','off'); a1 = str2num(['uint8(',a,')']); b1 = str2num(['uint8(',b,')']); fwrite(s,a1); s.BytesAvailableFcn = {@read_data,handles}; end function pushbutton3_Callback(hObject, eventdata, handles) close; luachonchedo; function figure1_CreateFcn(hObject, eventdata, handles) img = imread('logo.png'); img2 = imresize(img, [200 1400]); imshow(img2); global s; s = serial('COM3'); s.BytesAvailableFcnMode = 'byte'; s.BytesAvailableFcnCount = 1; fopen(s); function figure1_DeleteFcn(hObject, eventdata, handles) out = instrfind; fclose(out); function read_data(obj, event, handles) global s; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH an PHỤ LỤC global a1; global b1; data = fread(obj,1) if (mod(data,2)==1) fwrite(s,b1); else fwrite(s,a1); end - Chương trình xử lý với lưu lượng xe bình thường function varargout = guiit_xe(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @guiit_xe_OpeningFcn, 'gui_OutputFcn', @guiit_xe_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 function guiit_xe_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = guiit_xe_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function btn_bd_Callback(hObject, eventdata, handles) set(handles.btn_bd,'visible','off'); global s; global anhnen_lan1; global anhnen_lan2; img = imread('logo.png'); img2 = imresize(img, [200 1400]); imshow(img2,'Parent',handles.axes4); %===??c ?nh n?n==== anhnen_lan1 = imread('hinhnenitxel1.jpg'); anhnen_lan2 = imread('hinhnenitxel2.jpg'); %===??c ?nh ??u vào 1======= MV = imread('input_1.jpg'); MV1 = anhnen_lan1; A = double(rgb2gray(MV));%chuy?n sang ?nh xám B= double(rgb2gray(MV1));% [height, width] = size(A);%l?y kích th??c ?nh %=== so sánh ?nh === thresh=33; fr_diff = abs(A-B); for j = 1:width for k = 1:height if (fr_diff(k,j)>thresh) fg(k,j) = A(k,j); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH an PHỤ LỤC else fg(k,j) = 0; end end end sd=imadjust(fg);%t?ng ?? t??ng ph?n level=graythresh(sd);%l?y ng??ng ?? nh? phân ?nh bw=imbinarize(sd,level); se = strel('square',8); anh_mo_rong = imdilate(bw,se);%m? r?ng ?i?m ?nh se = strel('square', 10);%l?c nhi?u filteredForeground = imopen(anh_mo_rong, se); bw_0= filteredForeground; anh_lap_lo=imfill(bw_0,'holes');%l?p l? tr?ng ??i t??ng anh_xoa = bwareaopen(anh_lap_lo,1000);%xóa ??i t??ng nh? labeled = bwlabel(anh_xoa,8);%?ánh nhãn ??i t??ng blobMeasurements = regionprops(labeled,'all');%l?y thông tin ??i t??ng ?ánh nhãn numberofcars = size(blobMeasurements, 1);%l?y s? l??ng ??i t??ng ?nh axes(handles.axes1); MV2 = imresize(MV, [700 1200]); imshow(MV2,'Parent',handles.axes1);%hi?n th? ?nh axes(handles.axes11); imagesc(labeled,'Parent',handles.axes11);%hi?n th? k?t qu? sau x? lý set(handles.ed_slxe,'String',numberofcars);%hi?n th? s? l??ng ??i t??ng ??m ???c set(handles.ed_lanxe,'String','LÀN 1');%hi?n th? xe ?ang x? lý %quy ??i hi?n th? th?i gian ?èn xanh if (numberofcars

Ngày đăng: 02/02/2023, 09:35

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan