1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu thuật toán k means ứng dụng trong bài toán tách vật thể trong ảnh

45 29 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 45
Dung lượng 526,41 KB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC VINH NGUYỄN THỊ THẢO LUẬN VĂN THẠC SỸ Chuyên ngành: Công nghệ thơng tin Mã ngành: NGHIÊN CỨU THUẬT TỐN K – MEANS ỨNG DỤNG TRONG BÀI TOÁN TÁCH VẬT THỂ TRONG ẢNH Giáo viên hƣớng dẫn: TS Trần Xuân Sang Nghệ An, 06/2018 LỜI CẢM ƠN Lời đầu tiên, xin gửi lời cảm ơn chân thành sâu sắc tới Thầy giáo TS Trần Xuân Sang, ngƣời tận tình hƣớng dẫn tơi q trình thực đề tài Tôi xin gửi lời cảm ơn sâu sắc tới quý Thầy Cô Viện kỹ thuật công nghệ trƣờng Đại học Vinh truyền đạt kiến thức quý báu cho năm học vừa qua Cuối cùng, tơi xin chân thành cảm ơn tới gia đình bạn bè, đặc biệt thành viên lớp K24 CNTT Đại học Vinh ủng hộ, giúp đỡ động viên suốt thời gian học tập vừa qua Mặc dù cố gắng hoàn thành luận văn phạm vi khả cho phép nhƣng chắn khơng tránh khỏi thiếu sót Kính mong nhận đƣợc góp ý chân thành quý Thầy Cô bạn Tôi xin chân thành cảm ơn! Vinh, ngày 25 tháng 06 năm 2018 Học Viên Nguyễn Thị Thảo LỜI CAM KẾT Tôi xin cam đoan luận văn thân thực có giúp đỡ từ giáo viên hƣớng dẫn TS Trần Xuân Sang Các nội dung nghiên cứu kết đề tài trung thực, tin thứ cấp sử dụng luận văn có nguồn gốc đƣợc trích dẫn rõ ràng Tơi xin hồn tồn chịu trách nhiệm tính xác thực nguyên luận văn Tác giả Nguyễn Thị Thảo MỤC LỤC LỜI CAM KẾT MỤC LỤC PHẦN MỞ ĐẦU 1 Sự cần thiết vấn đề nghiên cứu Mục tiêu nghiên cứu 2.1 Mục tiêu tổng quát 2.2 Mục tiêu cụ thể Đối tƣợng phạm vi nghiên cứu 3.1 Đối tƣợng nghiên cứu 3.2 Phạm vi nghiên cứu Nội dung nghiên cứu CHƢƠNG BÀI TOÁN PHÂN CỤM DỮ LIỆU 1.1 Tổng quan phân cụm liệu 1.2 Tổng quan tình hình nghiên cứu 1.2.1 Tình hình nghiên cứu nƣớc 1.2.2 Tình hình nghiên cứu nƣớc ngồi 1.3 Kết luận chƣơng CHƢƠNG THUẬT TOÁN K- MEANS 2.1 Giới thiệu 2.1.1 Giới thiệu thuật toán K – means 2.1.2 Các ứng dụng thuật toán K – means 2.2 Phân tích tốn học 2.2.1 Một số kí hiệu tốn học 2.2.2 Hàm mát toán tối ƣu 2.2.3 Thuật toán tối ƣu hàm mát 2.3 Hoạt động thuật toán K-means 2.3.1 Dữ liệu vào 2.3.2 Dữ liệu 2.3.3 Các bƣớc thực 10 2.4 Ví dụ minh hoạ 11 2.5 Đánh giá thuật toán 17 2.5.1 Ƣu điểm 17 2.5.2 Nhƣợc điểm 17 CHƢƠNG TÁCH VẬT THỂ CÓ TRONG ẢNH 18 3.1 Giới thiệu 18 3.2 Áp dụng thuật toán K-means 18 3.2.1 Khởi tạo 19 3.2.2 Giai đoạn phân cụm thuật tốn K-means 20 3.2.3 Tính khoảng cách Euclidian 21 3.3 Thử nghiệm 22 KẾT LUẬN 39 TÀI LIỆU THAM KHẢO 40 PHẦN MỞ ĐẦU Sự cần thiết vấn đề nghiên cứu Học máy (Machine Learning) thành phần quan trọng trí tuệ nhân tạo nhằm nghiên cứu phát triển phƣơng pháp, kỹ thuật giúp cho hệ thống hay máy tính có khả học Trong lĩnh vực học máy có phƣơng pháp học nhƣ: Học có giám sát (Supervised Learning), học khơng có giám sát (Unsupervised Learning), học bán giám sát (Semi-supervised Learning) học tăng cƣờng (Reinforcement Learning) Thuật toán K-means thuộc loại học khơng có giám sát (Unsupervised Learning) Trong thuật tốn K-means, nhãn (label) điểm liệu Mục đích làm thể để phân liệu thành cụm (cluster) khác cho liệu cụm có tính chất giống Đây thuật toán tƣơng đối đơn giản, dễ cài đặt có khả phân cụm đạt hiểu tốt Trong đề tài này, tơi tìm hiểu thuật toán K-means ứng dụng thuật toán toán tách vật thể ảnh Mục tiêu nghiên cứu 2.1 Mục tiêu tổng quát Nghiên cứu sử dụng thuật toán K-means toán tách vật thể ảnh 2.2 Mục tiêu cụ thể Đề tài tập trung vào mục tiêu chính: - Tìm hiểu toán phân cụm liệu - Nghiên cứu thuật toán K-means - Ứng dụng thuật toán K-means toán tách vật thể ảnh - Cài đặt minh họa thuật toán Đối tƣợng phạm vi nghiên cứu 3.1 Đối tƣợng nghiên cứu a) Nghiên cứu lý thuyết - Nghiên cứu tài liệu toán phân cụm liệu - Nghiên cứu tài liệu bƣớc xây dựng thuật toán K-means đƣợc công bố - Nghiên cứu tài liệu ứng dụng thuật toán K-means toán tách vật thể ảnh b) Nghiên cứu thực nghiệm - Nghiên cứu bƣớc xây dựng thuật toán K-means - Nghiên cứu ứng dụng thuật toán K-means toán tách vật thể ảnh 3.2 Phạm vi nghiên cứu Có nhiều thuật tốn phân cụm liệu khác nhƣ K-means, PillarKmeans, Puzzy C-means…Trong phạm vi đề tài luận văn, tập trung nghiên cứu sử dụng thuật toán K-means Nội dung nghiên cứu - Nghiên cứu tổng quan toán phân cụm liệu - Nghiên cứu tổng quan thuật toán K-means - Nghiên cứu ứng dụng thuật toán K-Means toán tách vật thể ảnh CHƢƠNG BÀI TOÁN PHÂN CỤM DỮ LIỆU 1.1 Tổng quan phân cụm liệu Phân cụm liệu (clutering) trình phân vùng tập hợp liệu định thành nhóm đồng dựa tính định cho đối tƣợng tƣơng tự đƣợc giữ nhóm đối tƣợng khác nằm nhóm khác Đây vấn đề học tập không giám sát (Unsupervised Learning) quan trọng Nó đề cập đến việc tìm kiếm cấu trúc sƣu tập liệu không đƣợc dán nhãn (label) Hình I: Hiển thị bốn cụm đƣợc hình thành từ liệu khơng đƣợc dán nhãn Mục tiêu phân cụm liệu xác định nhóm nội tập hợp liệu không đƣợc gắn nhãn Vậy làm để định tạo thành cụm tốt? Có thể thấy khơng có tiêu chí “tốt nhất” tuyệt đối độc lập với mục tiêu cuối phân cụm Do đó, ngƣời dùng phải cung cấp tiêu chuẩn theo cách mà kết việc phân cụm phù hợp với nhu cầu họ Ví dụ, ta quan tâm đến việc tìm đại diện cho nhóm đồng (giảm liệu) việc tìm kiếm “các cụm tự nhiên” mơ tả thuộc tính khơng xác định chúng (các kiểu liệu “tự nhiên”) việc tìm nhóm hữu ích phù hợp (các lớp liệu “hữu ích”) việc tìm kiếm đối tƣợng liệu bất thƣờng (phát ngoại lệ) Một số thuật toán phân cụm tiêu biểu nhƣ: thuật toán phân cụm K – means, thuật toán phân cụm phân cấp Hierarchical Clustering, thuật toán phân cụm theo mật độ DBSCAN, thuật tốn phân cụm EM… 1.2 Tổng quan tình hình nghiên cứu 1.2.1 Tình hình nghiên cứu nƣớc Có nhiều luận văn, đề tài, báo viết thuật toán phân cụm Kmeans ứng dụng thực tế Nhƣ luận văn Lê Minh Hải, 2013: Học Viện Cơng Nghệ Bƣu Chính Viễn Thơng, phân loại hành vi khách hàng sử dụng dịch vụ di động dựa thuật toán phân cụm K – means Luận văn Đào Minh Tùng: Trƣờng Đại học Quốc Gia Hà Nội, 2011, phân cụm đa mức Web K – means dựa chủ đề ẩn thực nghiệm đánh giá 1.2.2 Tình hình nghiên cứu nƣớc ngồi Có nhiều luận văn, đề tài khoa học nghiên cứu lĩnh vực nhƣ xử lý hình ảnh ứng dụng y tế, phân đoạn ảnh, nhận dạng chữ số, nhận dạng chữ ký viết tay… 1.3 Kết luận chƣơng Trong chƣơng này, tơi trình bày tổng quan tốn phân cụm liệu Có số thuật toán phân cụm liệu, nhƣng khn khổ luận văn này, tơi chọn thuật tốn K-means để nghiên cứu tính đơn giản, cho kết tốt với số toán cụ thể CHƢƠNG THUẬT TOÁN K- MEANS 2.1 Giới thiệu 2.1.1 Giới thiệu thuật toán K – means Thuật toán K-means clustering James MacQueen giới thiệu tài liệu “J Some Methods for Classification and Analysis of Multivariate Observations” năm 1967, dựa ý tƣởng Hugo Steinhaus năm 1957 Tuy nhiên thuật toán đƣợc đƣa lần Stuart Lloyd năm 1957 nhƣng không đƣợc xuất năm 1982 Năm 1965, EW Forgy xuất phƣơng pháp với thuật tốn Stuart Lloyd , lý đơi đƣợc gọi Lloyd-Forgy [6] K-means Clustering thuật toán đƣợc dùng tốn phân loại/nhóm N đối tƣợng (objects) thành K nhóm (clusters) dựa đặc tính/thuộc tính đối tƣợng (K, N nguyên, dƣơng) Theo thuật toán này, giả sử có N đối tƣợng, đối tƣợng có M thuộc tính, ta phân chia đƣợc đối tƣợng thành K nhóm dựa thuộc tính chúng Ta coi thuộc tính đối tƣợng (đối tƣợng có M thuộc tính) nhƣ toạ độ khơng gian M chiều biểu diễn đối tƣợng nhƣ điểm khơng gian M chiều Cách thức phân loại/nhóm liệu thực dựa khoảng cách Euclidean nhỏ đối tƣợng đến phần tử trung tâm nhóm Phần tử trung tâm nhóm đƣợc xác định giá trị trung bình phần tử nhóm 2.1.2 Các ứng dụng thuật toán K – means Bài tốn phân cụm có nhiều ứng dụng lĩnh vực nhƣ: - Sinh học: phân loại động vật thực vật dựa vào thuộc tính chúng - Tìm kiếm thơng tin: phân nhóm văn bản, tài liệu - Địa lí: phát vùng địa lí tƣơng tự - Maketing: phân nhóm khách hàng có sở thích mua sắm giống public void SetPixel(Int32 Row, Int32 Col, Color Clr) { // Obtain the value of color depth Int32 Channel = System.Drawing.Bitmap.GetPixelFormatSize(m_BitmapInfo.PixelFormat); // Compute the value of index of pixel in the m_Pixels buffer Int32 Pixel = (Row + Col * m_Bitmap.Width) * (Channel / 8); // Check if the bitmap is 32-bit color depth if (Channel == 32) { // If so, assign the value of each color (R;G;B;A) to the specific // elements in the array of pixels m_Pixels[Pixel] = Clr.B; m_Pixels[Pixel + 1] = Clr.G; m_Pixels[Pixel + 2] = Clr.R; m_Pixels[Pixel + 3] = Clr.A; } // Check if the bitmap is 24-bit color depth else if (Channel == 24) { // If so, assign the value of each color (R;G;B) to the specific // elements in the array of pixels m_Pixels[Pixel] = Clr.B; m_Pixels[Pixel + 1] = Clr.G; m_Pixels[Pixel + 2] = Clr.R; } // Check if the bitmap is 16-bit color depth else if (Channel == 16) { // If so, assign the value of each color (B;G) to the specific // elements in the array of pixels m_Pixels[Pixel] = Clr.B; m_Pixels[Pixel + 1] = Clr.G; } // Check if the bitmap is 8-bit color depth else if (Channel == 8) { // If so, assign the value of each color (B) to the specific // element in the array of pixels m_Pixels[Pixel] = Clr.B; } } // Use this property to retrieve the width and height of an image locked public Int32 Width { get { return m_Bitmap.Width; } } public Int32 Height { get { return m_Bitmap.Height; } } // Use this method to save the bitmap to file public void Save(string filename) { // Calling Save(filename) method to save the bitmap to a file m_Bitmap.Save(filename); 26 } // Declaring Bitmap class object public Bitmap m_Bitmap = null; // Declaring Rectangle class Object private Rectangle m_rect; // Declaring point to bitmap pixels buffer private IntPtr m_BitmapPtr; // Declaring array of pixels; private byte[] m_Pixels = null; // Declaring BitmaData object private BitmapData m_BitmapInfo = null; } Trong đoạn mã này, ta sử dụng nhiều khai báo hàm tạo để tải Bitmap từ tệp, tạo Bitmap trống có chiều rộng chiều cao đƣợc định, chép đối tƣợng Bitmap sang đối tƣợng khác cách sử dụng chế chép cạn Ngoài ra, thời điểm ta khởi tạo đối tƣợng lớp hình chữ nhật chung để thao tác khu vực hình chữ nhật Bitmap có kích thƣớc cụ thể Sau ta cần phải gọi phƣơng thức LockBits()/UnlockBits() trƣớc thực thao tác khác ma trận ảnh điểm ảnh Bitmap cách gọi phƣơng thức GetPixel(…)/SetPixel(…) Bằng cách gọi hai phƣơng thức này, ta thực khoá mở khoá đệm có chứa ma trận ảnh Bitmap Những phƣơng thức đƣợc sử dụng lại đối tƣợng lớp LockedBitmap Trên thực tế phƣơng thức thực sau, ta thƣờng tính tốn giá trị tuyệt đối mục điểm ảnh cụ thể với toạ độ (hàng, cột) mảng điểm ảnh class KMCFrame { // KMCFrame Constructor public KMCFrame(LockedBitmap Frame, List Centroids, KMCPoint Center) { this.Frame = Frame; this.m_Centroids = Centroids; this.Center = Center; } // Bitmap Frame Property public LockedBitmap Frame { get { return m_Frame; } set { m_Frame = value; } } // Centroids List Property 27 public List Centroids { get { return m_Centroids; } set { m_Centroids = value; } } // Central Super-Pixel Property public KMCPoint Center { get { return m_Center; } set { m_Center = value; } } // Bitmap Frame Object private LockedBitmap m_Frame = null; // Central Super-Pixel Point Object private KMCPoint m_Center; // Array of Super-Pixel Objects (i.e Centroids) private List (255;255;255) // If not, copy the pixel data to the target matrix of pixels for the resulting segmented image for (Int32 Row = 0; Row < Width; Row++) { 35 for (Int32 Col = 0; Col < Height; Col++) { if (FrameOut.GetPixel(Row, Col) != Color.FromArgb(255, 255, 255)) { ResultBitmap.SetPixel(Row, Col, FrameOut.GetPixel(Row, Col)); } } } FrameOut.UnlockBits(); } ResultBitmap.UnlockBits(); // Save the segmented image to file with name which is the value of OutputFile variable ResultBitmap.Save(OutputFile); watch.Stop(); // Stop the execution timer // Obtain the value of executing time in milliseconds var elapsedMs = watch.ElapsedMilliseconds; // Create timespan from the elapsed milliseconds value TimeSpan ts = TimeSpan.FromMilliseconds(elapsedMs); // Print the message "Done" and the formatted execution time Console.WriteLine("***Done***\n" + ts.ToString(@"hh\:mm\:ss")); } Trong thực tính tốn phân cụm K-means ta cần khởi tạo mảng cụm cách tạo thêm cụm ban đầu vào mảng sau trƣớc thực vong lặp vịng lặp Để làm đƣợc điều ta gọi phƣơng thức m_Clusters.Init(…) Sau ta nhập vào vịng lặp quy trình Trong lần lặp vịng lặp ta lấy liệu hình ảnh mảng siêu điểm ảnh trung tâm đƣợc gán cho cấu trúc liệu cụ thể cho đối tƣợng cụm Sau ta thu đƣợc mảng siêu điểm ảnh trung tâm, ta duyệt qua phần tử mảng cho siêu điểm ảnh ta đanh hƣớng tới tập hợp điểm ảnh hình ảnh có giá trị lệch màu khơng vƣợt q giá trị ranh giới cụ thể (ví dụ điểm ảnh hợp lệ) Vì ta thu đƣợc tập nhƣ nên ta xây dựng cụm dựa thực điểm ảnh hợp lệ thành hình ảnh gán tập siêu điểm ảnh trung tâm vào mảng cụ thể cho cụm đƣợc tạo, sau ta thực kiểm tra toạ độ siêu điểm ảnh “mean” không toạ độ siêu điểm ảnh trung tâm 36 cụm gốc đƣợc thực Nếu không ta xây dựng đối tƣợng cụm nối vào mảng cụm Sau hồn thành quy trình phân cụm K_means, ta cần thu thập hình ảnh cho cụm thành hình ảnh đƣợc phân chia Với mục đích đó, ta lặp lại mảng thông qua cụm lấy ma trận điểm ảnh hình ảnh cụ thể Sau ta lặp qua ma trận sau thực kiểm tra màu điểm ảnh với toạ độ cụ thể không “white” 0xFFFFFF Nếu không ta chép điểm ảnh sau vào ma trận điểm ảnh cho hình ảnh kết Khía cạnh cuối mà ta trình bày phần phƣơng pháp thực tính khoảng cách Euclidian hai điểm ảnh hai màu sắc: public double GetEuclD(KMCPoint Point1, KMCPoint Point2) { // Compute the Euclidian distance between two pixel in the 2D-space return Math.Sqrt(Math.Pow(Point1.X - Point2.X, 2) + Math.Pow(Point1.Y - Point2.Y, 2)); } public double GetEuclClr(KMCPoint Point1, KMCPoint Point2) { // Compute the Euclidian distance between two colors in the 3D-space return Math.Sqrt(Math.Pow(Math.Abs(Point1.Clr.R Point2.Clr.R), 2) + Math.Pow(Math.Abs(Point1.Clr.G Point2.Clr.G), 2) + Math.Pow(Math.Abs(Point1.Clr.B Point2.Clr.B), 2)); } Cuối cùng, mã C# đƣợc liệt kê dƣới minh hoạ chức chƣơng trình với việc tạo khởi tạo đối tƣơng tách vật thể ảnh class Program { static void Main(string[] args) { Console.WriteLine("Image Segmentation Utility v.1.0a by Arthur V Ratz, CPOL @ 2017\n"); Console.Write("Input file name: "); string InpFile = Console.ReadLine(); Console.Write("Output file name: "); 37 string OutFile = Console.ReadLine(); ImageSegmentation ImageSeg = new ImageSegmentation(); ImageSeg.Compute(InpFile, OutFile); Console.ReadKey(); } } 38 KẾT LUẬN Kết đạt đƣợc Trong khuôn khổ luận văn, nghiên cứu đạt đƣợc số kết sau: - Tìm hiểu đƣợc thuật toán phân cụm liệu K-means - Cài đặt thử nghiệm thuật toán K-means ứng dụng việc tách vật thể ảnh Hƣớng phát triển Trong tƣơng lai, tơi tiếp tục nghiên cứu thuật tốn phân cụm khác áp dụng vào toán tách vật thể ảnh, để đánh giá so sánh đƣợc hoạt động thuật toán 39 TÀI LIỆU THAM KHẢO Tiếng Việt [1] T.S Cao Thanh Sơn (2017), Bài giảng: Khai phá liệu (Data Mining), Chương 5: Phân cụm liệu (clustering), Trƣờng Đại học Vinh [2] Thuật toán k-means, nguồn http://machinelearningcoban.com Tiếng Anh [3] Pang-Ning Tan, Michael Steinbach, Vipin Kumar, 2006, Introduction to Data Mining, Chapter 8: Cluster Analysis: Basic Concepts and Algorithms, Addison-Wesley Companion Book Site [4] Stanford University’s lecture, 2016, K-means Algorithm [5] https://www.codeproject.com/Articles/1203227/Implementing-K-Means- Image-Segmentation-Algorithm [6] k-means clustering, http://en.wikipedia.org/wiki/K-means_clustering 40 ... liệu ứng dụng thuật toán K- means toán tách vật thể ảnh b) Nghiên cứu thực nghiệm - Nghiên cứu bƣớc xây dựng thuật toán K- means - Nghiên cứu ứng dụng thuật toán K- means toán tách vật thể ảnh 3.2... Trong đề tài này, tơi tìm hiểu thuật tốn K- means ứng dụng thuật toán toán tách vật thể ảnh Mục tiêu nghiên cứu 2.1 Mục tiêu tổng quát Nghiên cứu sử dụng thuật toán K- means toán tách vật thể ảnh. .. dung nghiên cứu - Nghiên cứu tổng quan toán phân cụm liệu - Nghiên cứu tổng quan thuật toán K- means - Nghiên cứu ứng dụng thuật toán K- Means toán tách vật thể ảnh CHƢƠNG BÀI TOÁN PHÂN CỤM DỮ LIỆU

Ngày đăng: 01/08/2021, 11:42

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. T.S Cao Thanh Sơn (2017), Bài giảng: Khai phá dữ liệu (Data Mining), Chương 5: Phân cụm dữ liệu (clustering), Trường Đại học Vinh Sách, tạp chí
Tiêu đề: Khai phá dữ liệu (Data Mining), Chương 5: Phân cụm dữ liệu (clustering)
Tác giả: T.S Cao Thanh Sơn
Năm: 2017
[3]. Pang-Ning Tan, Michael Steinbach, Vipin Kumar, 2006, Introduction to Data Mining, Chapter 8: Cluster Analysis: Basic Concepts and Algorithms, Addison-Wesley Companion Book Site Sách, tạp chí
Tiêu đề: Introduction to Data Mining, Chapter 8: Cluster Analysis: Basic Concepts and Algorithms
[2]. Thuật toán k-means, nguồn http://machinelearningcoban.com Tiếng Anh Link
[6]. k-means clustering, http://en.wikipedia.org/wiki/K-means_clustering Link
[4]. Stanford University’s lecture, 2016, K-means Algorithm Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w