Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
1,68 MB
Nội dung
TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THAM GIA XÉT GIẢI THƯỞNG NGHIÊN CỨU KHOA HỌC SINH VIÊN SỬ DỤNG CÔNG NGHỆ NHẬN DIỆN GƯƠNG MẶT ĐỂ XÁC ĐỊNH HUYỆT VỊ TRONG “DIỆN CHẨN HỌC” Mã số đề tài: Thuộc nhóm ngành khoa học: Cơng Nghệ Thông Tin TPHCM, ngày 02 tháng 04 năm 2014 TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THAM GIA XÉT GIẢI THƯỞNG NGHIÊN CỨU KHOA HỌC SINH VIÊN SỬ DỤNG CÔNG NGHỆ NHẬN DIỆN GƯƠNG MẶT ĐỂ XÁC ĐỊNH HUYỆT VỊ TRONG “DIỆN CHẨN HỌC” Mã số đề tài: Thuộc nhóm ngành khoa học: Cơng Nghệ Thông Tin Sinh viên thực hiện: Lê Đức Hiệp Giới tính: Nam Dân tộc: Kinh Lớp, khoa:TH10A4, khoa Cơng Nghệ Thông Tin Năm thứ: /Số năm đào tạo:4 Ngành học: Tin học (Ghi rõ họ tên sinh viên chịu trách nhiệm thực đề tài) Người hướng dẫn: TS Lê Xuân Trường TPHCM, ngày 02 tháng 04 năm 2014 TÓM TẮT Trong Y học cổ truyền, hệ thống Huyệt vị kinh lạc quan tâm hàng đầu, chúng ứng dụng hầu hết các phương pháp khám chữa bệnh Am hiểu nắm vững hệ thống Huyệt vị giúp người thầy thuốc đưa định xác hiệu Tuy nhiên, hệ thống Huyệt vị phức tạp để am hiểu chúng điều dễ dàng, phải kể đến phương pháp Diện Chẩn, với 500 Huyệt vị gương mặt Diện Chẩn - Ðiều Khiển Liệu Pháp phương pháp chữa bệnh củaViệt Nam đời vào năm 1980 TP Hồ Chí Minh nhà nghiên cứu y học dân tộc VN Bùi Quốc Châu phát minh Ðây phương pháp chẩn đoán chữa bệnh qua da vùng MẶT tồn thân, khơng dùng thuốc, khơng dùng kim, không bắt mạch, dùng chủ yếu các dụng cụ y khoa phương pháp lăn, cào, búa gõ, que dò tác động lên các điểm vùng tương ứng Ðồ Hình với các phận bị bệnh toàn thân tương ứng với 500 huyệt mặt Hiệu phương pháp công nhận ứng dụng rộng rãi giới Đông Y học Bên cạnh hiệu phương pháp người bệnh, cịn rào cản khá lớn người chữa bệnh Đây phương pháp mới, tác giả biên soạn với các phương pháp khoa học, để tiếp cận tiếp thu mơn Diện Chẩn cần có đầu tư thời gian kiến thức Một khó khăn phương pháp các huyệt vị mặt ĐÁNH SỐ, muốn tìm huyệt việc tra cứu gây khó khăn, đơi khơng xác có 500 hụt khn mặt người Để khắc phục khó khăn hỗ trợ cho việc khám chữa bệnh đạt hiệu cao nhất, nhóm đề xuất hiện thực ứng dụng số hóa đồ Diện Chẩn có chức nhận diện gương mặt bệnh nhân khám, giúp cải thiện thời gian xác chẩn đoán bệnh, tăng hiệu chữa bệnh giúp ích việc giảng dạy mơn Diện Chẩn nói riêng ngành Y học cổ truyền nói chung Đề tài đặt trọng tâm vào việc số hóa liệu hệ thống Huyệt vị mặt – đặc biệt phù hợp với môn Diện Chẩn, kết hợp nhận diện gương mặt người bệnh, giúp việc chẩn đoán xác trực quan Bác sĩ kết hợp tài liệu chun mơn chương trình đề tài để xác định nhanh chóng huyệt vị Đồng thời cung cấp công cụ trực quan môi trường giảng dạy hệ thống Huyệt vị môn Diện Chẩn, sinh viên dễ tiếp cận tiếp thu Bên cạnh đó, ứng dụng phát triển để chạy Smartphone, qua tương tác từ xa, bệnh viện tuyến cần tham khảo chuyên môn tuyến cần chạy ứng dụng smartphone để chụp hình người bệnh, gửi qua tương tác tham khảo ý kiến… Để thực hiện đề tài, nhóm kết hợp sử dụng ngơn ngữ lập trình C# Visual Studio 2010 NET Framework 4.0 để thiết kế giao diện ứng dụng , tương tác trực tiếp với người dùng, liên kết với sở liệu thông qua công nghệ ADO.NET Sử dụng SQL Server 2008 để thiết kế cở sở liệu Nghiên cứu thuật toán nhận dạng gương mặt, sử dụng thư viện mã nguồn mở EmguCV kết hợp các phương pháp PCA (Principal Component Analysis), ICA(Independent Component Analysis), LDA(Linear Discriminant Analysis) Mục lục Chương 1:TỔNG QUAN 1.1 Tình hình nghiên cứu 1.2 Mục đích nghiên cứu .1 1.3 Đối tượng và phạm vi nghiên cứu 1.4 Phương pháp nghiên cứu 1.5 Đóng góp đề tài .2 1.5.1 Ý nghĩa xã hội 1.5.2 Ý nghĩa khoa học 1.6 Bố cục báo cáo Chương 2:NỘI DUNG NGHIÊN CỨU .4 2.1 Phân tích thiết kế hệ thống 2.1.1 Vai trò phân tích thiết kế hệ thống phát triển phần mềm 2.1.2 Phương pháp phân tích thiết kế MERISE 2.1.3 PowerAMC – công cụ hỗ trợ phân tích và thiết kế 2.1.3.1 Chức PowerAMC 2.1.3.2 Môi trường làm việc PowerAMC 2.1.3.3 Các mơ hình PowerAMC 2.2 Cơ sở liệu 2.2.1 Ngôn ngữ SQL 2.2.1.1 SQL là ngôn ngữ liệu quan hệ 2.2.1.2 Vai trò SQL .8 2.2.2 Ngôn ngữ T-SQL .8 2.2.3 Microsoft SQL Server .9 2.3 Ngơn ngữ lập trình 2.3.1 Visual Studio 2010 2.3.1.1 Tổng quan 2.3.1.2 Một số đổi mới Visual Studio 2010 2.3.1.3 Một số tính Visual Studio 2010 10 2.3.1.4 Hệ điều hành hỗ trợ 10 2.3.2 Nền tảng NET 10 2.3.3 Kết nối sở liệu MS-SQL tảng ADO.NET 11 2.3.3.1 Giới thiệu ADO.NET 11 2.3.3.2 Kiến trúc ADO.NET .11 2.3.3.3 Các đối tượng ADO.NET 13 2.4 Nhận dạng gương mặt 13 2.4.1 Các phương pháp chính nhận diện gương mặt 13 2.4.1.1 Phương pháp phân tích thành phần chính (PCA) 13 2.4.1.2 Phương pháp phân tích thành phần độc lập (ICA) 13 2.4.1.3 Phương pháp đồ thị giãn hồi (EBMG) .13 2.4.2 OPEN CV 14 2.4.2.1 Tổng quan 14 2.4.2.2 Những điểm đặc trưng .14 2.4.3 EMGUCV 15 2.4.3.1 Cross Platform 16 2.4.3.2 Ưu điểm khác 16 2.4.3.3 Kiến trúc bên Emgu CV 16 2.4.3.4 Các thành phần xử lý ảnh Emgu CV .17 2.4.3.5 Nhận diện gương mặt Emgu CV 19 Chương 3: NỘI DUNG THỰC HIỆN ĐỀ TÀI 22 3.1 Phân tích thiết kế hệ thớng 22 3.1.1 Các mơ hình phân tích .22 3.1.1.1 Mơ hình ý niệm liệu 22 3.1.1.2 Mơ hình logic liệu 23 3.1.1.3 Mơ hình vật lý liệu 24 3.1.2 Thiết kế sở liệu 25 3.1.2.1 Sơ đồ sở liệu (database diagram) 25 3.1.2.2 Chi tiết bảng sở liệu 26 3.2 Chi tiết cài đặt 30 3.2.1 Sơ đồ tổ chức 30 3.2.1.1 Sơ đồ xác định huyệt vị 30 3.2.1.2 Sơ đồ nhận diện gương mặt và xác định huyệt vị 31 3.2.2 Giao diện sử dụng .38 3.2.2.1 Giao diện chính chương trình 38 3.2.2.2 Giao diện xác định huyệt vị .41 3.2.3 Mã lệnh sớ hàm, thủ tục sử dụng chương trình 46 3.2.3.1 Các class được cài đặt 46 3.2.3.2 UserControl_benhan 46 3.2.3.3 Form_dohinh 49 3.2.3.4 UserControl_DetectedFace .52 Chương 4:KẾT LUẬN 55 4.1 Ưu điểm 55 4.2 Khuyết điểm 55 4.3 Hướng phát triển 55 DANH MỤC HÌNH ẢNH Hình 2.1: Hệ qui chiếu Merise Hình 2.2 Kiến trúc ADO.NET 11 Hình 2.3 Mơ hình đối tượng Dataset .12 Hình 2.4: Kiến trúc EMGU CV 17 Hình 2.5 Quy trình nhận dạng gương mặt Emgu CV 21 Hình 3.1 : Mơ hình ý niệm liệu 22 Hình 3.2 : Mơ hình logic liệu 23 Hình 3.3 : Mơ hình vật lý liệu 24 Hình 3.4 : Sơ đồ sở liệu 25 Hình 3.5 : Sơ đồ xác định huyệt vị 30 Hình 3.6 : Sơ đồ nhận diện gương mặt từ ảnh .31 Hình 3.7 : Sơ đồ nhận diện mắt, mũi miệng từ gương mặt .33 Hình 3.8 : Sơ đồ xác định hiển thị huyệt vị tìm thấy 35 Hình 3.9 Sơ đồ tổng quát nhận dạng gương mặt huyệt vị .37 Hình 3.10 : Giao diện bệnh án 38 Hình 3.11 : Giao diện thêm bệnh án 39 Hình 3.12 : Giao diện thêm bệnh nhân .39 Hình 3.13 : Giao diện sửa bệnh nhân 40 Hình 3.11 : Đọc bệnh nhân .40 Hình 3.14 : Dialog thơng báo 41 Hình 3.15 : Dialog xác nhận .41 Hình 3.16 : Giao diện xác định huyệt đồ hình 42 Hình 3.17 : Giao diện xác định huyệt hình ảnh 43 Hình 3.18: thơng báo nhận diện gương mặt thành cơng .44 Hình 3.19: Nhận diện xác định gương mặt 44 Hình 3.20: Nhận diện xác định mắt 45 Hình 3.21: Nhận diện xác định mũi 45 Hình 3.22: Kết nhận dạng huyệt vị từ ảnh 46 DANH MỤC BẢNG BIỂU Bảng 3.1: Bảng Huyệt vị 26 Bảng 3.2: Bảng Bộ huyệt 26 Bảng 3.3: Bảng Tác dụng 26 Bảng 3.4: Bảng Triệu chứng .26 Bảng 3.5: Bảng Cơ quan cấp 27 Bảng 3.6: Bảng Cơ quan cấp 27 Bảng 3.7: Bảng Huyệt vị theo Bộ huyệt 27 Bảng 3.8: Bảng Huyệt vị theo Tác dụng 27 Bảng 3.9: Bảng Huyệt vị theo Triệu chứng 27 Bảng 3.10: Bảng Huyệt vị theo Cơ quan 28 Bảng 3.11: Bảng Bệnh nhân 28 Bảng 3.12: Bảng Bác sĩ 28 Bảng 3.13: Bảng Bệnh án 29 Bảng 3.14: Bảng Huyệt vị Bệnh án 29 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP.HCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: SỬ DỤNG CÔNG NGHỆ NHẬN DIỆN GƯƠNG MẶT ĐỂ XÁC ĐỊNH HUYỆT VỊ TRONG “DIỆN CHẨN HỌC” - Sinh viên chịu trách nhiệm thực hiện: Lê Đức Hiệp - Lớp: TH10A4 Khoa: CNTT Năm thứ: Số năm đào tạo: - Người hướng dẫn: TS Lê Xuân Trường Mục tiêu đề tài: Ứng dụng công nghệ nhận diện gương mặt để xác định Huyệt vị (đã số hóa liệu) hệ thống Huyệt vị mặt, đặc biệt môn Diện Chẩn, giúp việc chẩn đoán xác trực quan Bác sĩ kết hợp tài liệu chun mơn chương trình đề tài để xác định nhanh chóng huyệt vị Đồng thời cung cấp công cụ trực quan môi trường giảng dạy hệ thống Huyệt vị môn Diện Chẩn Tính mới và sáng tạo: Ứng dụng công nghệ - đặc biệt phương pháp nhận diện gương mặt với mã nguồn mở, kỹ học tập được tạo chương trình hỗ trợ xác định Hụt vị mơn Diện Chẩn nói riêng ngành Y học cổ truyền nói chung Kết nghiên cứu: Xây dựng chương trình hỗ trợ xác định huyệt vị mặt người môn Diện Chẩn cách nhanh chóng xác Đóng góp mặt kinh tế - xã hội, giáo dục và đào tạo, an ninh, q́c phịng khả áp dụng đề tài: Đề tài công cụ hỗ trợ đắc lực cho đối tượng sử dụng nghiên cứu phương pháp Diện Chẩn hệ thống Huyệt vị Y học cổ truyền, giúp bác sĩ chẩn đoán bệnh nhanh chóng xác, giúp sinh viên, các nhà nghiên cứu hay chí cá nhân - khơng có kiến thức chun mơn, dễ dàng tiếp cận Ngày 02 tháng năm 2014 Sinh viên chịu trách nhiệm chính thực đề tài (ký, họ tên) Nhận xét người hướng dẫn đóng góp khoa học sinh viên thực đề tài (phần người hướng dẫn ghi): Ngày 02 tháng năm 2014 Xác nhận đơn vị Người hướng dẫn (ký tên đóng dấu) (ký, họ tên) BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP.HCM THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM CHÍNH THỰC HIỆN ĐỀ TÀI I SƠ LƯỢC VỀ SINH VIÊN: Ảnh 4x6 Họ tên: Lê Đức Hiệp Sinh ngày: 01 tháng 01 năm 1991 Nơi sinh: Xuân Hiệp – Xuân Lộc – Đồng Nai Lớp: TH10A4 Khóa:2010 - 2014 Khoa: Công Nghệ Thông Tin Địa liên hệ: E968, Khu phố 5A, Long Bình, Biên Hịa, Đồng Nai Điện thoại: 01649525073 Email: duchiep.ou@gmail.com II QUÁ TRÌNH HỌC TẬP (kê khai thành tích sinh viên từ năm thứ đến năm học): * Năm thứ 1: Ngành học: Tin học Khoa: Công Nghệ Thông Tin Kết xếp loại học tập: Trung Bình Khá * Năm thứ 2: Ngành học: Tin học Khoa: Công Nghệ Thông Tin Kết xếp loại học tập: Trung bình Khá *Năm thứ : Ngành học: Tin học Khoa: Công Nghệ Thơng Tin Kết xếp loại học tập: Trung Bình Khá Xác nhận đơn vị (ký tên đóng dấu) Ngày 02 tháng năm 2014 Sinh viên chịu trách nhiệm chính thực đề tài (ký, họ tên) Hình 3.16 : Giao diện xác định huyệt đồ hình Giao diện form “Đồ hình” bao gồm: pictureBox hiển thị đồ hình pictureBox hiển thị thị hình ảnh phóng to đồ hình có kiện MouseMove đồ hình trackBar để điều chỉnh độ phóng to hình ảnh groupBox “Chế độ” cho phép lựa chọn hiển thị hay nhiều huyệt tìm huyệt groupBox “Xác định huyệt vị” bao gồm các comboBox cho phép chọn theo Mã huyệt, theo Bộ huyệt, theo Cơ quan, theo Tác dụng hay theo Triệu chứng Các button Tìm kiếm cho phép tìm kiếm hiển thị Huyệt vị lên đồ hình theo liệu chọn từ các comboBox 42 Button Clear cho phép xóa các hụt tìm đồ hình Button Save Image cho phép lưu đồ hình thành tập tin để lưu vào hồ sơ bệnh án Button Close để đóng cửa sổ làm việc (b) Giao diện xác định huyệt vị Hình ảnh Hình 3.17 : Giao diện xác định huyệt hình ảnh :Nhận dạng huyệt vị từ file ảnh :Lưu ảnh xác định huyệt vị 43 :Chọn đế độ nhận dạng huyệt vị : nhận dạng huyệt vị theo mã huyệt vị chọn từ “Mã huyệt vị” : nhận dạng tất huyệt vị xác định gương mặt xóa tất huyệt vị nhận dạng Mở camera (webcam) Chụp lại ảnh từ camera Hình 3.18: thơng báo nhận diện gương mặt thành cơng Hình 3.19: Nhận diện xác định gương mặt 44 Hình 3.20: Nhận diện xác định mắt Hình 3.21: Nhận diện xác định mũi 45 Hình 3.22: Kết nhận dạng huyệt vị từ ảnh 3.2.3 Mã lệnh sớ hàm, thủ tục sử dụng chương trình 3.2.3.1 Các class được cài đặt Class HuyetVi.cs Class BoHuyet.cs Class CoQuan.cs Class TacDung.cs Class TrieuChung.cs Class BenhAn.cs Class BenhNhan.cs 3.2.3.2 UserControl_benhan //Load liệu lên dataGridview private void LoadGrid() { benhan.ConnectionString = Program.connstr; dataGridView_benhAn.DataSource = benhan.LoadBenhAn(); } //Sự kiện click button Thêm, Sửa, Xóa OK 46 private void button_thembenhan_Click(object sender, EventArgs e) { EnabledControl(true); flagThem = true; comboBox_benhnhan.Visible = false; button_bncu.Visible = true; button_bnmoi.Visible = true; string str = dataGridView_benhAn.Rows[dataGridView_benhAn.Rows.Count2].Cells[0].Value.ToString(); str.Trim(); int lastID = int.Parse(str.Substring(2, str.Length - 2)); if(lastID 100) textBox_maba.Text = "BA0" + (lastID + 1).ToString(); else textBox_maba.Text = "BA" + (lastID + 1).ToString(); comboBox_bacsi.DataSource = benhan.LoadBacSi(); comboBox_bacsi.ValueMember = "MABS"; comboBox_bacsi.DisplayMember = "HOTEN"; dateTimePicker_ngaykham.Value = DateTime.Now; textBox_chandoan.Text = ""; textBox_dieutri.Text = ""; textBox_hinhanhpath.Text = ""; textBox_ghichu.Text = ""; } private void button_suabenhan_Click(object sender, EventArgs e) { EnabledControl(true); flagSua = true; button_bncu.Visible = false; button_bnmoi.Visible = false; comboBox_benhnhan.Visible = true; LoadControl(); } private void button_xoabenhan_Click(object sender, EventArgs e) { benhan.Maba = textBox_maba.Text; 47 if ((MessageBox.Show("Bạn có muốn xóa bệnh án " + benhan.Maba + " ?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes)) { if(benhan.Delete()!=0) MessageBox.Show("Xóa thành cơng", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Xóa khơng thành công", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error); } LoadGrid(); } private void button_ok_Click(object sender, EventArgs e) { benhan.Maba = textBox_maba.Text; benhan.Chandoan = textBox_chandoan.Text; benhan.Dieutri = textBox_dieutri.Text; benhan.Hinhanh = textBox_hinhanhpath.Text; benhan.Ghichu = textBox_ghichu.Text; if (flagThem){ benhan.Mabn = comboBox_benhnhan.SelectedValue.ToString(); benhan.Mabs = comboBox_bacsi.SelectedValue.ToString(); benhan.Ngaykham = dateTimePicker_ngaykham.Value; if (benhan.Insert() != 0) MessageBox.Show("Thêm thành công", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Thêm không thành công", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (flagSua) if (benhan.Update() != 0) MessageBox.Show("Sửa thành công", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Sửa không thành công", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error); LoadGrid(); flagThem = false; flagSua = false; EnabledControl(false); } 48 3.2.3.3 Form_dohinh //Sự kiện MouseMove đồ hình private void pictureBox_image_MouseMove(object sender, MouseEventArgs e) { UpdateZoomedImage(e); } //Hàm phóng to ảnh private void UpdateZoomedImage(MouseEventArgs e) { int zoomWidth = pictureBox_zoom.Width / _ZoomFactor; int zoomHeight = pictureBox_zoom.Height / _ZoomFactor; int halfWidth = zoomWidth / 2; int halfHeight = zoomHeight / 2; Bitmap tempBitmap = new Bitmap(zoomWidth, zoomHeight, PixelFormat.Format24bppRgb); Graphics bmGraphics = Graphics.FromImage(tempBitmap); bmGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic; bmGraphics.DrawImage(bmp,new Rectangle(0, 0, zoomWidth, zoomHeight), new Rectangle(e.X - halfWidth, e.Y - halfHeight, zoomWidth, zoomHeight), GraphicsUnit.Pixel); pictureBox_zoom.Image = tempBitmap; bmGraphics.DrawLine(Pens.Black, halfWidth + 1, halfHeight - 4, halfWidth + 1, halfHeight - 1); bmGraphics.DrawLine(Pens.Black, halfWidth + 1, halfHeight + 6, halfWidth + 1, halfHeight + 3); bmGraphics.DrawLine(Pens.Black, halfWidth - 4, halfHeight + 1, halfWidth 1, halfHeight + 1); bmGraphics.DrawLine(Pens.Black, halfWidth + 6, halfHeight + 1, halfWidth + 3, halfHeight + 1); bmGraphics.Dispose(); pictureBox_zoom.Refresh(); } //Hàm vẽ lại đồ hình gốc private void reDraw() { pictureBox_image.Invalidate(); pictureBox_image.Refresh(); bmp = new Bitmap(pictureBox_image.Image); } 49 //Hàm vẽ hình trịn chấm lên huyệt đồ hình private void ShowHvi() { MyDataSet.DataSet1TableAdapters.QueriesTableAdapter ds = new MyDataSet.DataSet1TableAdapters.QueriesTableAdapter(); try { int x1 = (int)ds.TOADOX1Query(hvi.Mahvi); int y1 = (int)ds.TOADOY1Query(hvi.Mahvi); int x2 = (int)ds.TOADOX2Query(hvi.Mahvi); int y2 = (int)ds.TOADOY2Query(hvi.Mahvi); cir = this.pictureBox_image.CreateGraphics(); sav = Graphics.FromImage(bmp);// ve len bitmap Pen pen = new Pen(clrHvi); pen.Width = 4.5f; cir.DrawEllipse(pen, x1 - 2, y1 - 2, 6, 6); cir.DrawEllipse(pen, x2 - 2, y2 - 2, 6, 6); sav.DrawEllipse(pen, x1 - 2, y1 - 2, 6, 6); sav.DrawEllipse(pen, x2 - 2, y2 - 2, 6, 6); } catch { } } private void button_findhvi_Click(object sender, EventArgs e) { if (sel == 1) reDraw(); hvi.Mahvi = (int)comboBox_hvi.SelectedValue; Random rd= new Random(); Array ar = new string[7] { "red", "blue", "green", "yellow", "pink", "greenyellow", "brown" }; clrHvi = Color.FromName(ar.GetValue(rd.Next(ar.Length)).ToString()); ShowHvi(); } private void button_findbh_Click(object sender, EventArgs e) { if (sel == 1) reDraw(); clrHvi = Color.Blue; string mabh = comboBox_bhuyet.SelectedValue.ToString(); 50 DataTable dtb = bhuyet.ReadBH(mabh); for (int i = 0; i < dtb.Rows.Count; i++) { Object a = dtb.Rows[i][0]; hvi.Mahvi=(int)a; ShowHvi(); } } private void button_findcq_Click(object sender, EventArgs e) { if (sel == 1) reDraw(); clrHvi = Color.Red; string macq = comboBox_coquan.SelectedValue.ToString(); DataTable dtb = cquan.ReadCQ(macq); for (int i = 0; i < dtb.Rows.Count; i++) { Object a = dtb.Rows[i][0]; hvi.Mahvi = (int)a; ShowHvi(); } } private void button_findtd_Click(object sender, EventArgs e) { if (sel == 1) reDraw(); clrHvi = Color.DarkGreen; string matd = comboBox_tacdung.SelectedValue.ToString(); DataTable dtb = tdung.ReadTD(matd); for (int i = 0; i < dtb.Rows.Count; i++) { Object a = dtb.Rows[i][0]; hvi.Mahvi = (int)a; ShowHvi(); } } private void button_findtrch_Click(object sender, EventArgs e) { if (sel == 1) 51 reDraw(); clrHvi = Color.DarkOrange; string matc = comboBox_trchung.SelectedValue.ToString(); DataTable dtb = trchung.ReadTC(matc); for (int i = 0; i < dtb.Rows.Count; i++) { Object a = dtb.Rows[i][0]; hvi.Mahvi = (int)a; ShowHvi(); } } private void button_saveimage_Click(object sender, EventArgs e) { SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "image files (*.jpg)|*.jpg|All files (*.*)|*.*"; savefile.RestoreDirectory = true; if (savefile.ShowDialog() == DialogResult.OK) bmp.Save(savefile.FileName); } 3.2.3.4 (a) UserControl_DetectedFace Các biến toàn cục #region Các biến lưu trữ liệu nhận dạng từ file XML private Capture capture; //đối tượng khởi tạo lưu trữ liệu từ Camera private HaarCascade haar; //lưu trữ thông tin từ file xml chứa cấu trúc nhận diện gương mặt private HaarCascade eye; // lưu trữ thông tin từ file xml chứa cấu trúc nhận diện mắt người private HaarCascade mouth; // lưu trữ thông tin từ file xml chứa cấu trúc nhận diện mmiệng private HaarCascade noise; // lưu trữ thông tin từ file xml chứa cấu trúc nhận diện mũi Point[] PointLeft = new Point[600]; //Mảng huyệt vị mắt trái Point[] PointRight = new Point[600];//Mảng huyệt vị mắt phải #endregion #region Các tham số hàm nhận diện gương mặt, mũi miệng private int WindowsSizeHeight = 25; 52 private int WindowsSizeWidth = 20; private Double ScaleIncreaseRate = 1.1; private int MinNeighbors = 3; #endregion (b) Các hàm người dùng định nghĩa #region Các phương thức người dùng định nghĩa private void DetectFaces() //Hàm nhận dạng gương mặt { Image grayframe = ImageFrame.Convert(); var faces = grayframe.DetectHaarCascade(haar, ScaleIncreaseRate, MinNeighbors, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(WindowsSizeWidth, WindowsSizeHeight))[0]; MessageBox.Show("Đã xác định " + faces.Length.ToString() + " gương mặt"); MCvAvgComp[][] eyes = grayframe.DetectHaarCascade(eye, 1.1, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20)); MCvAvgComp[][] mouthsDetected = grayframe.DetectHaarCascade(mouth, 1.1, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20)); MCvAvgComp[][] noisesDetected = grayframe.DetectHaarCascade(noise, 1.1, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20)); grayframe.ROI = Rectangle.Empty; foreach (var face in faces) { MCvAvgComp t = eyes[0][0]; eyeRect1 = eyes[0][0].rect; eyeRect2 = eyes[0][1].rect; noiseRect = noisesDetected[0][0].rect; } XoaDanhSachHuyetVi(PointLeft); XoaDanhSachHuyetVi(PointRight); bmpTemp = imageBox_Cam.Image.Bitmap; TaoHuyetVi(eyeRect1,0); TaoHuyetVi(eyeRect2,1); comboBox_hvi.Enabled = true; if (radioButton_Multi.Checked == true) { HienThiHuyetVi(PointLeft); HienThiHuyetVi(PointRight); } } //Phương thức bật/tạm dừng Camera private void ProcessFrame(object sender, EventArgs arg) { 53 ImageFrame = capture.QueryFrame(); imageBox_Cam.Image = ImageFrame; } // Phương thức khởi tạo vị trí huyệt vị theo cho phận (gương mặt, mắt, mũi) Tham số: • rect: vị trí hình vng xác định (tức vị trí gương mặt, mắt mũi nhận dạng) • RectID: Xác định vị trí huyệt vị tùy biến công thức (0: mắt trái, 1: mắt phải ) // Phương thức vẽ tất huyệt vị lên ảnh private void HienThiHuyetVi(Point[] P) { for (int i = 0; i < 600; i++) VeHuyetVi(P[i].X, P[i].Y); } // Phương thức vẽ huyệt vị theo tọa độ (X,Y) private void VeHuyetVi(int x, int y) { try { cirTemp = Graphics.FromImage(bmpTemp); cir = this.imageBox_Cam.CreateGraphics(); Pen pen = new Pen(Color.Red); pen.Width = 4.5f; cir.DrawEllipse(pen, x, y, 3, 3); cir.DrawEllipse(pen, x, y, 3, 3); cirTemp.DrawEllipse(pen, x, y, 3, 3); cirTemp.DrawEllipse(pen, x, y, 3, 3); } catch { } } //Khởi tạo lại giá trị Mảng lưu trữ private void XoaDanhSachHuyetVi(Point[] P) huyệt vị { for (int i = 0; i < 600; i++) P[i] = new Point(); } #endregion 54 Chương 4: KẾT LUẬN Chương trình kết sau thời gian nhóm tổng hợp tài liệu, tìm kiếm thơng tin, kết hợp với kiến thức học giúp đỡ giảng viên hướng dẫn, để nghiên cứu xây dựng chương trình đáp ứng mục đích đề tài Tuy nhiên, hạn chế kiến thức, mà chế độ chẩn đoán kết hợp nhận diện gương mặt cịn chưa xác tụt đối, chương trình tích hợp số chức phát triển thêm chức vào các phiên 4.1 Ưu điểm Giải mục đích đề tài, hiển thị đầy đủ xác các huyệt vị yêu cầu đồ hình mẫu Ứng dụng công nghệ nhận diện gương mặt vào khám chữa bệnh đông y học cổ truyền Sử dụng hệ thống thư viện mã nguồn mở Hệ thống nhận diện gương mặt xác cao sử dụng thư viện mở cộng đồng phát triên Giao diện thiết kế đơn giản, dễ tiếp cận với các chức chương trình Chương trình thiết kế theo phương pháp hướng đối tượng, giúp việc soạn thảo cập nhật dễ dàng 4.2 Khuyết điểm Chế độ nhận diện gương mặt hoàn thành, nhiên áp dụng vào xác định huyệt chưa xác tụt đối Giao diện sử dụng cịn thiếu số chức nghiệp vụ chuyên môn Cơ sở liệu cần thiết kế lại có nhu cầu cài đặt cho các mục đích sử dụng khác : nghiên cứu bệnh viện… 4.3 Hướng phát triển Cải thiện xác định huyệt vị qua chế độ nhận diện gương mặt xác Bổ sung sở liệu số chức nghiệp vụ chuyên môn ngành y tế cho phù hợp với quy trình khám chữa bệnh bệnh viện Hiện thức chức hỗ trợ từ xa cho bệnh nhân Kết nối trực tuyến y bác sĩ với Xây dựng chương trình smartphone 55 TÀI LIỆU THAM KHẢO • Diện Chẩn Học , nhóm Diện Chẩn AZ-CA, 2010 • Phân tích Thiết kế Hệ thơng Thơng tin Quản lý, PGS-TS Trần thành Trai • Giáo trình Cơng cụ thiết kế hệ thống, ThS Phan Thị Mỹ Trinh • Beginning Microsoft SQL Server 2008 Programming (Wrox Programmer to Programmer) - Robert Vieira • Pro C# 2010 and the NET Platform - Andrew W Troelsen • • • • • http://www.msdn.com http://codeproject.com http://silverlight.codeplex.com http://www.emgu.com 56 ... ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THAM GIA XÉT GIẢI THƯỞNG NGHIÊN CỨU KHOA HỌC SINH VIÊN SỬ DỤNG CÔNG NGHỆ NHẬN DIỆN GƯƠNG MẶT ĐỂ XÁC ĐỊNH... 30 3.2.1.1 Sơ đồ xác định huyệt vị 30 3.2.1.2 Sơ đồ nhận diện gương mặt và xác định huyệt vị 31 3.2.2 Giao diện sử dụng .38 3.2.2.1 Giao diện chính chương trình... Huyệt vị Bệnh án 29 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP.HCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: SỬ DỤNG CÔNG NGHỆ NHẬN DIỆN GƯƠNG MẶT ĐỂ XÁC ĐỊNH