THIẾT KẾ VÀ CHẾ TẠO MÔ HÌNH NHẬN DẠNG CÁC VẬT THỂ CÓ HÌNH DẠNG KHÁC NHAU SỬ DỤNG CÔNG NGHỆ XỬ LÝ ẢNH

73 185 0
THIẾT KẾ VÀ CHẾ TẠO MÔ HÌNH NHẬN DẠNG CÁC VẬT THỂ CÓ HÌNH DẠNG KHÁC NHAU SỬ DỤNG CÔNG NGHỆ  XỬ LÝ ẢNH

Đ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 ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH KHĨA LUẬN TỐT NGHIỆP THIẾT KẾ CHẾ TẠO HÌNH NHẬN DẠNG CÁC VẬT THỂHÌNH DẠNG KHÁC NHAU SỬ DỤNG CƠNG NGHỆ XỬ ẢNH Họ tên sinh viên : ĐẶNG PHƯỚC THẢO (06153027) DƯƠNG NGỌC THÁNH QUAN MINH (07153024) Ngành: ĐIỆN TỬ Niên khóa: 2007-2011 Tp.HCM, Tháng 06/2011 LỜI CẢM ƠN Lời chúng em xin chân thành cám ơn tất Qúy Thầy/ trường Đại Học Nơng Lâm TP Hồ Chí Minh Qúy Thầy/ khoa khí giúp đỡ trang trang bị cho chúng em kiến thức suốt trình học tập trường người thân, bạn bè động viên chúng em trình thực Chúng em chân thành cảm ơn Thầy/ môn Điện Tử dạy nhiệt tình tạo điều kiện thuận lợi thời gian thực đề tài Đặc biệt chúng em cám ơn ThS NGUYỄN LÊ TƯỜNG hướng dẫn giúp đỡ chúng em suốt trình làm luận văn Chúng em bày tỏa lònng biết ơn Qúy Thầy/ Hội Đồng dành thời gian quý báu để nhận xét đóng góp ý kiến để luận văn hoàn thiện Cuối chúng em xin chúc Thầy/ thành công,hạnh phúc, đầy sức khỏe mặt TP Hồ Chí Minh, 06 Tháng 06 Năm 2011 Sinh viên thực ĐẶNG PHƯỚC THẢO DƯƠNG NGỌC THÁNH QUAN MINH i TÓM TẮT ĐỒ ÁN Đề tài “Thiết Kế Chế Tạo Hình Nhận Dạng Các Vật Thể Hình Dạng Khác Nhau Sử Dụng Công Nghệ Xử Ảnh” chúng em tìm hiểu từ ngày nhận đồ án hồn thành sơ đến ngày 6/6/2011 Đồ án tạo hình thiết kế giao diện phần mềm xử ảnh thông qua Webcam để nhận dạng, phân loại vật thể theo yêu cầu Phần mềm viết ngôn ngữ C# kết hợp với thư viện mã nguồn mở OpenCV Sau đặt vật vào vị trí so với Webcam qui trình nhận dạng, phân loại vật bắt đầu thực ta xử số giai đoạn phần mềm Qui trình nhận dạng, phân loại vật chủ yếu dựa vào kích thước vật giới hạn chương trình xử Cuối vật xác định kết nhận hay loại, thông số liên quan đến vật hiển thị thơng qua giao diện máy tính ii MỤC LỤC Trang tựa Trang Lời cảm ơn ii Tóm tắt iii Mục lục iv Danh sách hình vii CHƯƠNG 1: MỞ ĐẦU 1.1 Đặt vấn đề 1.2 Ý nghĩa thực tiễn 1.3 Mục đích nghiên cứu 1.4 Giơí hạn đề tài CHƯƠNG 2: TỔNG QUAN 2.1 Tổng quan nhận dạng vật thể 2.2 Tổng quan ứng dụng xử ảnh 2.2.1 Xử ảnh gì? 2.2.2 Ứng dụng xử ảnh 2.3 Sơ lược phần mềm xử ảnh Siemen 2.3.1 Spectation 2.3.2 Công cụ blob Spectation iii 2.4 Giới thiệu số phần mềm xử ảnh khác 11 2.4.1 Image Analyze 11 2.4.2 Paint Star 12 CHƯƠNG 3: NỘI DUNG PHƯƠNG PHÁP NGHIÊN CỨU 13 3.1 Chương trình xử ảnh 13 3.1.1Nhiệm vụ chương trình 13 3.2 Một số khái niệm xử ảnh 13 3.2.1 Ảnh điểm ảnh 13 3.2.2 Phần tử ảnh 15 3.2.3 Mức xám 15 3.2.4 Khái niệm biên 16 3.2.5 Tăng cường khôi phục ảnh 17 3.2.6 Biến đổi ảnh 17 3.2.7 Phân tích ảnh 17 3.2.8 Nhận dạng ảnh 18 3.2.9 Nén ảnh 19 3.2.10 Thu nhận ảnh 20 3.2.11 Xử nâng cao chất lượng ảnh 21 3.3 Các phương pháp chiếu sáng công nghiệp 26 3.3.1 Chiếu sáng khuếch tán trước đối tượng 26 3.3.2 Chiếu sáng trực tiếp vào đối tượng 26 3.3.3 Chiếu sáng đồng trục 27 iv 3.3.4 Chiếu sáng theo cấu trúc 27 3.3.5 Chiếu sáng phía sau 28 3.4 Sơ lược Webcam 28 3.5 Khái quát thư viện OpenCV 29 3.6 Tính tốn thơng số hình học vật thể 31 3.6.1 Hình tròn 31 3.6.2 Hình vng 31 3.6.3 Hình tam giác 31 3.6.4 Hình chữ nhật 32 3.6.5 Hình bình hành 32 3.6.6 Hình thoi 32 3.6.7 Hình khác 32 CHƯƠNG 4: KẾT QUẢ THẢO LUẬN 33 4.1 Thiết kế hình hệ thống 33 4.1.1 Sơ đồ khối 33 4.1.2 hình vẽ Autocad 34 4.2 Giao diện phần mềm 37 4.2.1 Giao diện phần mềm 37 4.2.2 Trình đơn 38 4.2.3 Hiển thị video 38 4.2.4 Hiển thị xử 38 4.2.5 Thanh kết 39 v 4.2.6 Biểu đồ cường độ sáng 39 4.2.7 Bảng kết 39 4.3 Lưu đồ giải thuật phần mềm 40 4.4 So sánh kết tính thực tế với kết tính phần mềm 43 4.4.1 Xử với hình tròn 43 4.4.2 Xử với hình vng 46 4.4.3 Xử với hình tam giác 49 4.4.4 Xử với hình 52 4.5 Bảng khảo nghiệm kết so sánh kích thước thực với phần mềm……… 54 CHƯƠNG 5: KẾT LUẬN ĐỀ NGHỊ 55 5.1 Kết đạt 55 5.2 Đề nghị 55 Tài liệu tham khảo 56 Phục lục 57 vi DANH SÁCH CÁC HÌNH Chương Hình 2.1 Sơ đồ khối trình xử ảnh Hình 2.2 Robot đánh bóng bàn TOPIO Hình 2.3 Robot SWAT Hình 2.4 Giao diện phần mềm Spectation .8 Hình 2.5 Camera VS724 Siemen Hình 2.6 Hình phân loại sản phẩm dựa vào vị trí Spectation 10 Hình 2.7 Hình phân loại sản phẩm dựa vào độ tròn Spectation 11 Chương Hình 3.1 Phương pháp chiếu sáng khuếch tán trước đối tượng 26 Hình 3.2 Phương pháp chiếu sáng trực tiếp vào đối tượng 26 Hình 3.3 Phương pháp chiếu sang đồng trục 27 Hình 3.4 Phương pháp chiếu sáng theo cấu trúc 27 Hình 3.5 Phương pháp chiếu sáng phí sau 28 Hình 3.6 Webcam .28 Hình 3.7 Nhận dạng khuôn mặt OpenCV 30 Chương Hình 4.1 Sơ đồ khối 33 Hình 4.2 Hình chiếu 34 Hình 4.3 Hình chiếu đứng 35 Hình 4.4 Hình chiếu cạnh 35 Hình 4.5 hình thực tế 36 Hình 4.6 Giao diện phần mềm 37 Hình 4.7 Bảng kết 39 vii Hình 4.8 Lưu đồ giải thuật phần trước sử dụng công cụ 40 Hình 4.9 Lưu đồ giải thuật phần sử dụng Generation 41 Hình 4.10 Lưu đồ giải thuật phần sử dụng Selector 42 Hình 4.11 Bảng giới hạn thơng số hình tròn 43 Hình 4.12 Ảnh kết vật tròn mẫu 44 Hình 4.13 Ảnh kết vật tròn so sánh .45 Hình 4.14 Bảng giới hạn thơng số hình vng 46 Hình 4.15 Ảnh kết hình vng mẫu 47 Hình 4.16 Ảnh kết hình vng so sánh 48 Hình 4.17 Bảng giới hạn thơng số hình tam giác .49 Hình 4.18 Ảnh kết hình tam giác mẫu .50 Hình 4.19 Ảnh kết hình tam giác so sánh 51 Hình 4.20 Ảnh kết vật mẫu 52 Hình 4.21 Ảnh kết vật so sánh 53 Hình 4.22 Bảng khảo nghiệm .54 viii Chương MỞ ĐẦU 1.1 Đặt vấn đề Trong năm gần với phát triển khoa học kỹ thuật đại ứng dụng nhiều thành tựu vào qui trình sản xuất cơng nghiệp để nâng cao suất hay tránh lỗi sai sót theo điều kiện tiêu chuẩn Với lại giai đoạn qui trình sản xuất bị hạn chế phụ thuộc vào sức người nên suất lao động thấp sản phẩm bị lỗi nhiều đưa thị trường tiêu thụ Một ứng dụng nhằm hạn chế nhược điểm cơng nghệ sử ảnh vào công đoạn: kiểm tra, xử lý, phân loại, hay nhận dạng vật thể xem đạt yệu cầu chưa Trong xu phát triển công nghệ thông tin mạnh mẽ, với xu phát triển hệ thống hoạt động sở nhận dạng xử ảnh Ảnh nhiều thông tin màu sắc, hình dáng, kích thước…Với cơng cụ xử ảnh cho khả nhận biết xác vật dựa đặt tính bên ngồi vật Cũng gởi ý, giúp đỡ ThS.Nguyễn Lê Tường anh Huỳnh Cao Vân chúng em tìm hiểu nghiên cứu chọn đề tài “Thiết kế chế tạo hình nhận dạng vật thể hình dạng khác sử dụng công nghệ xử ảnh” với mong muốn thông qua đề tài bổ sung thêm kiến thức phục vụ cho hoạt động sản xuất hiệu 1    4.4.3.1 Tam giác mẫu Hình 4.18: Ảnh kết hình tam giác mẫu 50    4.4.3.2 Vật so sánh Hình 4.19: Ảnh kết hình tam giác so sánh 51    4.4.4 Xử với hình Tương tự ta chọn thông số perimeter ( pixel) khoảng từ: 1190-1220 (pixel) bảng kết thị : vật nhận ( pass) vật ngồi khoảng loại( fail) 1mm=3.779 pixel 4.4.4.1 Vật mẫu Hình 4.20: Ảnh kết vật mẫu 52    4.4.4.2 Vật so sánh Hình 4.21: Ảnh kết vật so sánh 53    4.5 Bảng khảo nghiệm độ xác phần mềm so với kích thước thực vật thể   Tên Hình tròn Hình vng Hình tam giác Kết Diện tích Chu vi Chiều rộng hình chữ nhật nhỏ (mm) Chiều cao hình chữ nhật nhỏ (mm) quảt ính (mm) (mm) Phần mềm 1129.55 114.43 37.84 37.84 Thực 1255.99 125.66 40 40 Spectation 1213.3 119.2 39.8 39.2 Phần mềm 1447.04 125.65 37.9 38.7 Thực 1598.90 132 40 40 Spectation 1490.9 128.9 38.4 39.3 Phần mềm 705.50 122.78 34.8 42.07 Thực 699.93 127 32 36 Spectation 583.9 125.17 30.14 34.48 Phần mềm 2381.86 319.93 59.54 59.27 Thực 2593.35 334.2 51.43 51.74 2453.06 331.3 70.91 71.44 Tế Tế Tế Hình khác Tế Spectation Hình 4.22: Bảng khảo nghiệm 54    Biểu đồ so sánh kết tính thực tế với phần mềm  Nhận xét kết Từ kết thực nghiệm ta thấy số tính thực tế so với phần mềm tương đối gần chấp nhận 55    CHƯƠNG KẾT LUẬN ĐỀ NGHỊ 5.1 Kết đạt Sau khoảng thời gian giao làm đồ án chúng em cố gắng hoàn thành nhiệm vụ tương đối thành công theo yêu cầu ban đầu đặt thu số kết sau:  Đã nghiên cứu thuyết xử ảnh dùng webcam  Đã chế tạo hình phân loại nhận dạng vật  Đã thiết kế phần mềm giao diện xử ảnh  Đã khảo nghiệm hình với vật thực tế 5.2 Đề nghị  Thiết kế băng truyền cho vật thể dùng động bước timer để xác định vị trí vật thể cho q trình nhận dạng webcam xác  Thay Webcam Camera để độ xác cao trình xử  Phần mềm bổ sung tìm hiểu kỹ ứng dụng nhiều lĩnh vực liên quan đến sản xuất công nghiệp, tham khảo cho nghành học phụ trợ 56    TÀI LIỆU THAM KHẢO [1] Phương Lan, Hoàng Đức Hải, Từng Bước Học Lập Trình Visual C++.net, Nhà Xuất Bản Lao Động Xã Hội, TP.HCM, 2006 [2]www.siemens.com/machine-vision hay www.siemens.com/automation/service [3] Đỗ Năng Tồn, Phạm Việt Bình, Giáo Trình Mơn Học Xử Ảnh, Nhà Xuất Bản Đại học Thái Nguyên, Thái Nguyên, 2007 [4] CodeProject, Image to Characters Convert using Intensity, 15 Dec 2009 URL http://www.codeproject.com/KB/recipes/Image2CharsConverter.aspx [5] CodeProject, Image Processing for Dummis with C# and GDI+ Part 1-Per Pixel Filters, 21 Dec 2009.URL plus/csharpgraphicfilters11.aspx [6] Các nguồn khác từ Internet ……………… 57    http://www.codeproject.com/KB/GDI- PHỤ LỤC Mã nguồn 1.2 Những đoạn code chương trình 1.2.1 Đoạn code load ảnh private void loadToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.CheckFileExists = true; openFileDialog1.CheckPathExists = true; openFileDialog1.Title = "Load Image"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { try { // hien thi anh tren nen metaDraw1 string fileName = openFileDialog1.FileName; metaDraw1.LoadPicture(fileName, BTIS.MetaDraw.PictureSource.Picture); // load anh de xu ly Sourceimage=highgui.CvLoadImage(fileName,highgui.CV_LOAD_IM AGE_COLOR); } catch { 58    MessageBox.Show("Error opening image", "Load Image", MessageBoxButtons.OK, MessageBoxIcon.Error); } 1.2.2 Đoạn code cắt ảnh chuyển ảnh sang xám if ((x != 0) && (y != 0) && (cutwidth != 0) && (cutheigh != 0)) { cutimage = cxcore.CvCreateImage(new cutheigh), sourceimage.depth, sourceimage.nChannels); CvSize(cutwidth, cutgrayimage = cxcore.CvCreateImage(new CvSize(cutwidth, cutheigh), sourceimage.depth, 1); cxcore.CvSetImageROI(ref sourceimage, new CvRect(x, y, cutwidth, cutheigh)); cxcore.CvCopy(ref sourceimage, ref cutimage); cxcore.CvResetImageROI(ref sourceimage); cv.CvCvtColor(ref cvtypes.CV_BGR2GRAY); cutimage, ref cutgrayimage, } 1.2.3 Đoạn code tìm vùng liên thơng tính tốn thơng số hình học khối ảnh if ((x != 0) && (y != 0) && (cutwidth != 0) && (cutheigh != 0)) { cutimage = cxcore.CvCreateImage(new cutheigh), sourceimage.depth, sourceimage.nChannels); CvSize(cutwidth, cutgrayimage = cxcore.CvCreateImage(new CvSize(cutwidth, cutheigh), sourceimage.depth, 1); cxcore.CvSetImageROI(ref sourceimage, new CvRect(x, y, cutwidth, cutheigh)); cxcore.CvCopy(ref sourceimage, ref cutimage); cxcore.CvResetImageROI(ref sourceimage); 59    cv.CvCvtColor(ref cvtypes.CV_BGR2GRAY); cutgrayimage1 cutgrayimage.widthStep]; cutimage, = new ref cutgrayimage, byte[cutgrayimage.height cutgrayimage1 = cutgrayimage.ImageDataUChar; // VE HISTOGRAM histogram = new float[256]; for (int i = 0; i < 256; i++) for (int j = 0; j < cutgrayimage1.Length; j++) if (cutgrayimage1[j] == i) histogram[i] += 1; maxs = 0; //gmaxs = 0; for (int z = 0; z < histogram.Length; z++) { maxs = System.Math.Max(histogram[z], maxs); //if (System.Math.Abs(fg[z] - fgmaxs) < 0.5) //gmaxs = z; } histogram1.Clear(); tChart1.Axes.Left.Maximum = maxs; for (int k = 0; k < 256; k++) { histogram1.Add(k, histogram[k]); //form3.histogram1.Add(k, histogram[k]); } 60    * bwimage = cxcore.CvCreateImage(cxcore.CvGetSize(ref cutgrayimage), 8, 1); cv.CvThreshold(ref cutgrayimage, ref bwimage, nguong, 255, cv.CV_THRESH_BINARY); //metaDraw1.RemoveObject(BTIS.MetaDraw.ObjHandle.Current); highgui.CvSaveImage("temp1.bmp", ref bwimage); metaDraw1.LoadPicture("temp1.bmp", BTIS.MetaDraw.PictureSource.PictureClip); Point pt = new Point(x, y); metaDraw1.MoveObjects(pt, BTIS.MetaDraw.MoveFlags.Set); } ///////////////////////////// //bwimage cutgrayimage), 8, 1); = cxcore.CvCreateImage(cxcore.CvGetSize(ref //cv.CvThreshold(ref cutgrayimage, ref bwimage, nguong, 255, cv.CV_THRESH_BINARY); bwimage1 = new Byte[bwimage.height * bwimage.widthStep]; bwimage2 = new Byte[bwimage.height, bwimage.widthStep]; bwimage1 = bwimage.ImageDataUChar; for (int i = 0; i < bwimage.height; i++) for (int j = 0; j < bwimage.widthStep; j++) bwimage2[i, j] = bwimage1[bwimage.widthStep * i + j]; connectedComponentLabeling = ConnectedComponent.ConnectedComponentLabeling(bwimage2); connectedComponentLabeling.Apply(bwimage2); lien thong Tuc la tim so vat the 61    new //Tim vung objectCount = connectedComponentLabeling.ObjectCount; ///////////////////////////////////////////////////////////// dt = new double[objectCount]; cvv = new double[objectCount]; dotron = new double[objectCount]; xpos = new double[objectCount]; ypos = new double[objectCount]; angle = new double[objectCount]; widthhcnnn = new double[objectCount]; heighhcnnn = new double[objectCount]; bk = new double[objectCount]; cdotb = new double[objectCount]; abc = new byte[objectCount][]; abc2 = new byte[objectCount][,]; // code tinh dac trinh for (int i = 0; i < objectCount; i++) { CvRect rect; IplImage anhgan cxcore.CvCreateImage(cxcore.CvGetSize(ref cutgrayimage), 8, 3); = //IplImage anhgan1 cxcore.CvCreateImage(cxcore.CvGetSize(ref cutgrayimage), 8, 3); = IplImage anhdactrung1 cxcore.CvCreateImage(cxcore.CvGetSize(ref cutgrayimage), 8, 1); = abc2[i] = new Byte[bwimage.height, bwimage.widthStep]; abc[i] = new Byte[bwimage.height * bwimage.widthStep]; 62    abc2[i] = connectedComponentLabeling.ObjectArrays[i]; for (int j = 0; j < bwimage.height; j++) for (int k = 0; k < bwimage.widthStep; k++) abc[i][bwimage.widthStep * j + k] = abc2[i][j, k]; //dac trung1 dt //dac trung cuong sang trung binh //double cdtb; for (int l = 0; l < bwimage.imageSize; l++) if (abc[i][l] != 0) { dt[i] = dt[i] + 1; cdotb[i] += cutgrayimage1[l]; abc[i][l] = 255; } cdotb[i] = cdotb[i] / dt[i]; anhdactrung1.ImageDataUChar = abc[i]; cv.CvCvtColor(ref cvtypes.CV_GRAY2RGB); anhdactrung1, ref //highgui.CvNamedWindow(i.ToString()); //highgui.CvShowImage(i.ToString(), ref anhgan); //dac trung2 hinh chu nhat nho nhat rect = cv.CvBoundingRect(ref anhdactrung1, 1); widthhcnnn[i] = rect.width; heighhcnnn[i] = rect.height; 63    anhgan, cv.CvCanny(ref anhdactrung1, ref anhdactrung1, 0, 0, 3); //highgui.CvNamedWindow(i.ToString()); //highgui.CvShowImage(i.ToString(), ref anhdactrung1); //dac trung3 chu vi byte[] a = new byte[anhdactrung1.widthStep anhdactrung1.height]; a = anhdactrung1.ImageDataUChar; for (int m = 0; m < a.Length; m++) if (a[m] != 0) cvv[i] = cvv[i] + 1; // dac trung tron compactness dotron[i] = (float)(4 * Math.PI * dt[i]) / (cvv[i] * cvv[i]); ///////////////////////////////////////////////// } 64    * ... ảnh thông minh phần mềm xử lý ảnh để thực việc kiểm tra tương tự Quá trình xử lý ảnh xem q trình thao tác ảnh đầu vào nhằm cho kết mong muốn Kết đầu trình xử lý ảnh ảnh “tốt hơn” kết luận : Ảnh

Ngày đăng: 12/06/2018, 13:14

Từ khóa liên quan

Mục lục

  • BỘ GIÁO DỤC VÀ ĐÀO TẠO

  • loi cam on

  • bao cao

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

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

Tài liệu liên quan