TÓM TẮT LUẬN VĂNPhát triển gần đây đã chứng minh rằng bộ lọc phần tử là một phương pháp mới nổi và mạnh mẽ để xử lý tín hiệu tuần tự với một loạt các ứng dụng trong khoa học và kỹ thuật. Nó đã chiếm được sự chú ý của nhiều nhà nghiên cứu trong các cộng đồng khác nhau bao gồm cảxử lý tín hiệu, thống kê và kinh tế, và sự quan tâm này xuất phát từ tiềm năng của nó để đối phó với khó khăn phi tuyến và các vấn đề nonGaussian. Dựa trên khái niệm về lấy mẫu tuần tự quan trọng và việc sử dụng lý thuyết Bayes, bộ lọc phần tử đặc biệt hữu ích trong việc giải quyết vấn đề phi tuyến và nonGaussian. Các nguyên tắc cơ bản của phương pháp này là xấp xỉ phân phối có liên quan với các biện pháp ngẫu nhiên gồm các hạt và trọng lượng liên quan của chúng.Trong luận văn này, đầu tiên em sẽ trình bày về lý thuyết bộ lọc phần tử, khái niệm phân đoạn ảnh và mô hình PCA. Sau đó là tìm hiểu một số ứng dụng của nó trong phân đoạn hình ảnh y tế. Phần cuối là mô phỏng phân đoạn hình ảnh xương bàn tay sử dụng bộ lọc phần tửkết hợp mô hình PCA được thực hiện trên MATLAB.Cụ thể, nội dung của luận văn tốt nghiệp được trình bày trong 5 chương như sau:Chương 1: Lý thuyết bộ lọc phần tửChương 2: Khái niệm phân đoạn ảnh và mô hình PCAChương 3: Một số ứng dụng của bộ lọc phần tử trong phân đoạn hình ảnh y tếChương 4: Thực hiện phân đoạn xương bàn tay dùng bộ lọc phần tử kết hợp mô hình PCAChương 5: Kết luận và hướng phát triển đề tài
ÐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ÐẠI HỌC BÁCH KHOA KHOA ÐIỆN – ÐIỆN TỬ BỘ MƠN VIỄN THƠNG LUẬN VĂN TỐT NGHIỆP PHÂN ĐOẠN HÌNH ẢNH Y TẾ SỬ DỤNG BỘ LỌC PHẦN TỬ (PARTICLE FILTERING) TÓM TẮT LUẬN VĂN Phát triển gần chứng minh lọc phần tử phương pháp mạnh mẽ để xử lý tín hiệu với loạt ứng dụng khoa học kỹ thuật Nó chiếm ý nhiều nhà nghiên cứu cộng đồng khác bao gồm xử lý tín hiệu, thống kê kinh tế, quan tâm xuất phát từ tiềm để đối phó với khó khăn phi tuyến vấn đề non-Gaussian Dựa khái niệm lấy mẫu quan trọng việc sử dụng lý thuyết Bayes, lọc phần tử đặc biệt hữu ích việc giải vấn đề phi tuyến non-Gaussian Các nguyên tắc phương pháp xấp xỉ phân phối có liên quan với biện pháp ngẫu nhiên gồm hạt trọng lượng liên quan chúng Trong luận văn này, em trình bày lý thuyết lọc phần tử, khái niệm phân đoạn ảnh mơ hình PCA Sau tìm hiểu số ứng dụng phân đoạn hình ảnh y tế Phần cuối mô phân đoạn hình ảnh xương bàn tay sử dụng lọc phần tử kết hợp mơ hình PCA thực MATLAB Cụ thể, nội dung luận văn tốt nghiệp trình bày chương sau: Chương 1: Lý thuyết lọc phần tử Chương 2: Khái niệm phân đoạn ảnh mơ hình PCA Chương 3: Một số ứng dụng lọc phần tử phân đoạn hình ảnh y tế Chương 4: Thực phân đoạn xương bàn tay dùng lọc phần tử kết hợp mơ hình PCA Chương 5: Kết luận hướng phát triển đề tài TÓM TẮT LUẬN VĂN iv SVTH: NGUYỄN KHẮC HÙNG MỤC LỤC NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP Error! Bookmark not defined PHIẾU CHẤM BẢO VỆ LVTN iError! Bookmark not defined LỜI CẢM ƠN Error! Bookmark not defined TÓM TẮT LUẬN VĂN iii MỤC LỤC v DANH SÁCH HÌNH VẼ .viii DANH SÁCH CÁC TỪ VIẾT TẮT x CHƯƠNG 0: ĐẶT VẤN ĐỀ, NHIỆM VỤ ĐỀ TÀI VÀ HƯỚNG GIẢI QUYẾT CHƯƠNG 1: LÝ THUYẾT BỘ LỌC PHẦN TỬ 1.1 Giới thiệu 1.2 Cơ Bộ lọc phần tử 1.3 Tóm tắt thuật tốn lọc phần tử 10 CHƯƠNG 2: KHÁI NIỆM PHÂN ĐOẠN ẢNH VÀ MƠ HÌNH PCA 12 2.1 Phân đoạn ảnh 12 2.1.1 Giới thiệu 12 2.1.2 Các hướng tiếp cận phân đoạn ảnh 12 2.1.3 Ứng dụng 14 2.2 Mơ hình PCA 14 2.2.1 Cơ mơ hình PCA 14 2.2.2 Các bước cần để tạo mơ hình PCA từ tập hợp liệu 15 CHƯƠNG 3: MỘT SỐ ỨNG DỤNG CỦA BỘ LỌC PHẦN TỬ TRONG PHÂN ĐOẠN HÌNH ẢNH Y TẾ 21 3.1 Phân đoạn hình ảnh y tế bị nhiễu sử dụng mơ hình PCA lọc phần tử 21 3.1.1 Tóm tắt 21 3.1.2 Giới thiệu 21 3.1.3 Phân đoạn sử dụng mơ hình PCA dựa lọc phần tử 23 3.1.4 Kết thực nghiệm 26 3.1.5 Kết luận 29 3.2 Phân đoạn sợi thần kinh sử dụng lọc phần tử tối ưu hóa rời rạc 29 3.2.1 Tóm tắt 29 3.2.2 Giới thiệu 29 3.2.3 Phương pháp 31 3.2.4 Kết 37 3.2.5 Kết luận 41 3.3 Tổng quan phân đoạn ảnh dựa đường viền tích cực thống kê theo vùng 41 3.3.1 Giới thiệu 41 3.3.2 Phân đoạn dựa khu vực 42 3.3.3 Mô tả tính 44 3.3.4 Phân đoạn với hình dạng trước 45 3.3.5 Chương trình giải cho phân đoạn đường viền tích cực 45 3.3.6 Ví dụ phân đoạn hình ảnh y tế 47 3.3.7 Kết luận 51 CHƯƠNG 4: THỰC HIỆN PHÂN ĐOẠN XƯƠNG BÀN TAY SỬ DỤNG BỘ LỌC PHẦN TỬ KẾT HỢP VỚI MÔ HÌNH PCA 52 4.1 Giới thiệu 52 4.2 Tạo mơ hình 54 4.2.1 Mơ hình PCA (Principle Component Analysis ) 54 4.2.2 Tạo mơ hình hình dạng: 56 4.3 Những đặc tính Haar-like: 57 4.3.1 Cơ đặc tính Haar-like 57 4.3.2 Đặc tính Haar-like: hai hình chữ nhật 58 4.3.3 Hình ảnh tách rời 58 4.4 Phân loại tập hợp ngẫu nhiên 59 4.4.1 Các bước thực 59 4.4.2 Hàm chi phí 60 4.4.3 Khai triển tích phân 60 4.5 Thực thi Matlab 61 4.6 Kết thực 62 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 64 5.1 Kết luận 64 5.2 Hướng phát triển đề tài 64 TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 67 DANH SÁCH HÌNH VẼ Hình 1.1: Các ứng dụng thơng tin liên lạc Hình 1.2: Sơ đồ mơ tả việc lấy mẫu lại Hình 1.3: Mơ tả hình ảnh lọc phần tử 10 Hình 1.4: Sơ đồ khối lọc phần tử 11 Hình 2.1: Ví dụ liệu PCA, liệu gốc nằm bên trái, liệu trừ trung bình nằm bên phải, đồ thị liệu 15 Hình 2.2: Đồ thị liệu chuẩn hóa (đã trừ trung bình) với vector đặc trưng ma trận hiệp phương sai 17 Hình 2.3: Bảng liệu cách áp dụng phân tích PCA sử dụng hai vector đặc trưng, đồ thị điểm liệu 19 Hình 2.4: Dữ liệu sau chuyển đổi sử dụng vector đặc trưng quan trọng 20 Hình 3.1: Kết phân đoạn sử dụng phương pháp cắt đồ thị (đường cong xanh dương) phương pháp rắn (đường cong màu xanh cây) 22 Hình 3.2: Mơ hình đồ họa phân đoạn khung hình ảnh y tế 24 Hình 3.3: Biểu diễn khái niệm mơ hình PCA đề xuất dựa phương pháp phân đoạn liệu tổng hợp 27 Hình 3.4: Các kết phân đoạn cho liệu lâm sàng thực tế.(a), (b), (c) hình chụp X-quang tâm thất trái; (d) hình ảnh siêu âm 28 Hình 3.5: Hình ảnh cường độ tối đa tập liệu sợi thần kinh có ranh giới khối đánh dấu màu Mỗi khối tập hình ảnh 3D màu xám 30 Hình 3.6: Minh hoạ xử lý hình ảnh 2D tổng hợp 39 Hình 3.7: Hình ảnh MIP việc phân loại cuối 31 khối liền kề 40 Hình 3.8: Phân đoạn thu khối 14 40 Hình 3.9: Phân đoạn ảnh MRI lát tim thu 47 Hình 3.10: Phân đoạn ảnh tâm thất trái siêu âm tim cách sử dụng mơ hình Rayleigh nhiễu mà khơng có hình dạng trước 48 Hình 3.11: Kết phân đoạn MRI não T1-weighted (giải nén White Matter) 49 Hình 3.12: Giảm thiểu khoảng cách pdf khu vực tham khảo 50 Hình 4.1: Các điểm mốc tạo 54 Hình 4.2: Tạo mơ hình hình dạng PCA 55 Hình 4.3: Vector đặc trưng xếp theo thứ tự giá trị riêng giảm dần 55 Hình 4.4: Hình dạng trung bình 56 Hình 4.5: Tạo mơ hình hình dạng 57 Hình 4.6: Những đặc tính Haar-like 57 Hình 4.7: Tính tốn tổng hình chữ nhật với hình ảnh tách rời 58 Hình 4.8: Xây dựng tập hợp ngẫu nhiên đồ xác suất 59 Hình 4.9: Tính tốn DE 60 Hình 4.10: Kết phân đoạn xương bàn tay 62 Hình 4.11: Kết phân đoạn dựa theo đồ xác suất 63 DANH SÁCH CÁC TỪ VIẾT TẮT PF Particle Filter PCA Principle Component Analysis ASM Active Shape Model AAM Active Appearance Model MRI Magnetic Resonance Imaging CT Computer Tomography DE Differential Evolution CDMA Code Division Multiple Access OFDM Orthogonal Frequency Division Multiplexing CA Correspondence Analysis MFA Multiple Factor Analysis MRF Markov Random Fields RLPF Random Local Probability Filtering MIP Maximum Intensity Projection PDF Probability Density Function MICCAI Medical Image Computing and Computer Assisted Intervention AAMM Active Appearance and Motion Models WM White Matter GM Gray Matter CSF Cerebrospinal Fluid DANH SÁCH TỪ VIẾT TẮT x SVTH: NGUYỄN KHẮC HÙNG CHƯƠNG ĐẶT VẤN ĐỀ, NHIỆM VỤ ĐỀ TÀI VÀ HƯỚNG GIẢI QUYẾT Phân đoạn ảnh bước xử lý quan trọng nhiều lĩnh vực khác lĩnh vực hình ảnh y tế, phát nhận dạng đối tượng, hệ thống camera giám sát, hệ thống điều khiển giao thông… Kỹ thuật bước tiền xử lý quan trọng hầu hết hệ thống xử lý ảnh, kết phân đoạn tốt giúp cho trình xử lý sau đạt hiệu cao nhằm tiết kiệm chi phí tính tốn, thời gian tăng độ xác ứng dụng Trong lĩnh vực hình ảnh y tế, kỹ thuật hình ảnh y tế chụp CT (Computer Tomography), chụp MRI (Magnetic Resonance Imaging), chụp X-quang, siêu âm thiếu để phân tích xác nhiều bệnh lý khác nhau, qua hộ trợ đáng kể bác sĩ việc chuẩn đốn bệnh Trong q trình phân tích, việc chẩn đốn cần kĩ thuật phân đoạn ảnh tiên tiến để trích xuất đường biên cần thiết, bề mặt phận thể khỏi hình Các phân đoạn đường biên quan trọng bác sĩ Tuy nhiên, q trình phân đoạn thủ cơng tốn thời gian khơng cho kết tốt Chính vậy, vài thập kỷ qua, nhiều thuật toán phân đoạn ảnh y tế đề xuất nhằm tăng độ xác q trình phân đoạn ảnh Một kỹ thuật phân đoạn ảnh sử dụng lọc phần tử Bộ lọc phần tử thuật toán dùng để ước lượng trực tiếp mật độ hậu nghiệm mơ hình khơng gian trạng thái cách triển khai thực phương trình đệ quy Bayesian Mơ hình khơng gian trạng thái phi tuyến phân bố nhiễu hình thức Phương trình đệ quy Bayesian sử dụng phương pháp tiếp cận dựa quần thể Các mẫu phân phối thể tập hợp hạt; hạt gán trọng lượng đại diện cho xác suất hạt lấy mẫu từ hàm mật độ xác suất Sự chênh lệch trọng lượng dẫn đến thối hóa trọng lượng vấn đề thường gặp thuật toán lọc Tuy nhiên giảm thiểu phương pháp tái chọn mẫu Trong bước tái chọn mẫu hạt có trọng lượng khơng đáng kể thay hạt lân cận tạo từ hạt có trọng lượng lớn Hiện giới, lọc phần tử áp dụng rộng rãi nhiều lĩnh vực khoa học công nghệ xử lý tín hiệu, giao thơng, an ninh quốc phịng, hình ảnh y tế, thị giác robot, di động khơng dây, … Trong đó, thuật tốn lọc phần tử cải tiến liên tục nhằm đáp ứng yêu cầu thực tế có vài nghiên cứu lọc phần tử thực phần cứng Luận văn tốt nghiệp đề cập đến việc áp dụng lọc phần tử phân đoạn hình ảnh y tế Những phân đoạn quan trọng bác sĩ, giúp phát kịp thời mức độ nghiêm trọng bệnh lý, nhờ có kế hoạch điều trị phục hồi thích hợp Cụ thể, luận văn tốt nghiệp đề cập đến phân đoạn xương bàn tay sử dụng lọc phần tử kết hợp với mơ hình PCA Trong bước đầu tiên, mơ hình hình dạng tuyến tính tạo từ tập liệu Bằng cách tìm hướng phương sai khơng gian hình dạng, số chiều mơ hình giảm đáng kể, phương pháp tiêu chuẩn trì khoảng 95% phương sai tập liệu Trong bước thứ hai, điểm ảnh phân loại, sử dụng mẫu sở liệu để tạo phân loại Các sở liệu chứa hình ảnh mặt nạ, gán nhãn cho điểm ảnh hình ảnh Đường biên cấu trúc xương bàn tay gán nhãn dương, điểm ảnh lại thuộc lớp Trong thực này, 14 tính chọn trước Haar-like sử dụng để đánh giá vùng lân cận điểm ảnh trung tâm Trong bước tiếp theo, phân loại tập hợp ngẫu nhiên sử dụng lọc phần tử tạo để phân biệt khác điểm ảnh đường biên điểm ảnh lại Một giá trị xác suất điểm ảnh đánh giá, xác suất tương ứng với khả điểm ảnh có thuộc lớp đường biên hay không Bằng cách đánh giá điểm ảnh hình ảnh thử nghiệm, thu thập đồ xác suất cho hình ảnh thử nghiệm Bước cuối thuật toán sử dụng thuật toán DE để tối ưu hóa hình dạng thơng số chuyển đổi cho phù hợp với hình dạng đồ xác suất, nhờ tìm phân đoạn có độ xác tối đa Vì vậy, việc phân đoạn xương giúp ích cho bác sĩ việc chẩn đoán bệnh lý xương bàn tay gãy xương, biến dạng xương, viêm xương khớp,…và từ có biện pháp điều trị phục hồi phù hợp 4.5 Thực thi Matlab Các bước thực Matlab: Bước 1: Thiết lập môi trường ban đầu Thiết lập đường dẫn Matlab đọc liệu đầu vào Bước 2: Xây dựng hàm cần thiết Bước 3: Tạo mơ hình hình dạng Bước tạo mơ hình hình dạng liệu đầu vào liên kết (30 mẫu đầu tiên) Kết hình dạng trung bình ma trận thành phần vector giá trị riêng liên quan với thành phần Bước 4: Xuất mẫu tạo cho phân loại điểm ảnh Bước xuất mẫu tạo tốt khơng tốt cho thuật tốn tập hợp ngẫu nhiên cách đánh giá tính Haar-like ranh giới điểm ảnh, tập hợp điểm ảnh ngẫu nhiên khơng có ranh giới Nó tạo mẫu đầu Bước 5: Tạo tập hợp ngẫu nhiên Bước chuẩn bị thông số cho hàm dùng, tính tốn tập hợp vào biến B, B cấu trúc bên MATLAB định nghĩa tập hợp ngẫu nhiên Bước 6: Tạo đồ xác suất Bước sử dụng để tính tốn đồ xác suất cho hình ảnh thử nghiệm (20 hình ảnh cuối tập liệu đầu vào) Các đồ xác suất kết lưu trữ ô PM Bước 7: Thực thi thuật toán Differential Evolution Bước 8: Hiển thị kết 4.6 Kết thực Sau thực bước trên, ta có kết phân đoạn xương bàn tay sau: (a) Hình thứ (b) Hình thứ (c) Hình thứ (d) Hình thứ (e) Hình thứ (f) Hình thứ (g) Hình thứ (h) Hình thứ (i) Hình thứ (j) Hình thứ 10 (k) Hình thứ 11 (l) Hình thứ 12 (m) Hình thứ 13 (n) Hình thứ 14 Hình 4.10: Kết phân đoạn xương bàn tay Kết phân đoạn dựa theo đồ xác suất: (a) Hình thứ (b) Hình thứ (c) Hình thứ (d) Hình thứ (e) Hình thứ (f) Hình thứ (g) Hình thứ (h) Hình thứ (i) Hình thứ Hình 4.11: Kết phân đoạn dựa theo đồ xác suất Nhận xét: Sự phân đoạn xương bàn tay sử dụng thuật tốn lọc phần tử kết hợp mơ hình PCA cho kết xác, có sai số nhỏ với đầu vào hình ảnh xương bàn tay khác nhau, điều chứng tỏ hiệu thuật toán phân đoạn Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 5.1 Kết luận Đề tài hoàn thành thời gian quy định từ yêu cầu đề ra, em hồn thành u cầu sau: Tìm hiểu lý thuyết lọc phần tử khái niệm phân đoạn ảnh Tìm hiểu số ứng dụng lọc phần tử phân đoạn hình ảnh y tế Thực ứng dụng lọc phần tử phân đoạn xương bàn tay Những hạn chế chưa làm được: Chưa thể ứng dụng rộng rãi phương pháp cho phân đoạn hình ảnh y tế khác Chưa thể áp dụng phương pháp phần cứng 5.2 Hướng phát triển đề tài Để tiếp tục nghiên cứu đề tài này, em nhận thấy có hướng phát triển sau: Áp dụng phân đoạn ảnh dùng lọc phần tử video Cải thiện thuật toán nghiên cứu kỹ thuật phân đoạn hình ảnh y tế khác Tìm hiểu ứng dụng khác lọc phần tử thơng tin vơ tuyến, xử lý tín hiệu viễn thông thực ứng dụng phần cứng TÀI LIỆU THAM KHẢO [1] Petar M Djuric, Jayesh H Kotecha, Jianqui Zhang, Yufei Huang, Tadesse Ghirmai, Monica F Bugallo, Joaquin Miguez, “Particle filtering”, IEEE Signal Processing Magazine, vol 20, no 5, September 2003 [2] Hervé Abdi, Lynne J Williams, “Principal component analysis”, John Wiley & Sons, Inc, August 2010 [3] Lindsay I Smith, “A tutorial on Principal Components Analysis”, Cornell University, USA, February 2002 [4] Wei Qu, Xiaolei Huang, Yuanyuan Jia, “Segmentation in noisy medical images using PCA model based Particle filtering”, SPIE Proceedings Vol 6914, March 2008 [5] Thomas Dietenbeck, Francois Varray, Jan Kybic, Olivier Basset, and Christian Cachard, “Neuromuscular fiber segmentation using particle filtering and discrete optimization”, SPIE Medical Imaging, Vol 9034, February 2014 [6] F Lecellier, S Jehan-Besson, J Fadili, “Statistical region-based active contours for segmentation: An overview”, Elsevier Masson SAS, December 2013 [7] Chunming Li, Rui Huang, Zhaohua Ding, J Chris Gatenby, Dimitris N Metaxas, “A level set method for image segmentation in the presence of intensity inhomogeneities with application to MRI”, IEEE Transactions on Image processing, Vol 20, No 7, July 2011 [8] Lukas Fischer, “Using shape Particle filters for robust medical image segmentation”, Technical Report, Vienna University of Technology, May 2009 [9] Marleen de Bruijne, Mads Nielsen, “Image segmentation by shape Particle filtering”, Technical Report, IT University of Copenhagen, Denmark, Aug 2004 [10] Ahmad Pahlavan Tafti, Zoltán Bárdosi, Donatella Granata, Gabor Lugos, Sanjay Saxena, “Particle filter segmentation”, Technical Report , Vienna, Austria, July 2012 [11] Onur Ozdemir, Ruixin Niu, Pramod K Varshney, “Tracking in Wireless Sensor Networks Using Particle Filtering: Physical Layer Considerations”, IEEE Transactions on signal processing, Vol 57, No 5, May 2009 [12] Katrin Achutegui, Luca Martino, Javier Rodas, Carlos J Escudero, Joaquín Míguez, “A Multi-Model Particle Filtering Algorithm for Indoor Tracking of Mobile Terminals Using RSS Data”, Technical Report , Russia, July 2009 [13] Chris Kreucher , Mark Morel , Keith Kastella , Alfred O Hero, “Particle Filtering for Multitarget Detection and Tracking”, The Proceedings of The Twenty Sixth Annual IEEE Aerospace Conference, March 2005 [14] Fredrik Gustafsson, Fredrik Gunnarsson, Niclas Bergman, Urban Forssell, Jonas Jansson, Rickard Karlsson, Per-Johan Nordlund, “Particle Filters for Positioning, Navigation and Tracking”, IEEE Transactions on Signal Processing, Vol 50, February 2002 [15] D Varas, F Marques, “A region-based particle filter for generic object tracking and segmentation”, 19th IEEE International Conference on Image Processing, October 2012 [16] Nicolas Widynski, Max Mignotte, “A MultiScale Particle Filter Framework for Contour Detection”, IEEE Transactiosn on pattern analysis and machine intelligence, February 2014 [17] www.mathworks.com [18] www.ieeexplore.ieee.org [19] www.wikipedia.org PHỤ LỤC Code chương trình mơ phân đoạn xương bàn tay sử dụng lọc phần tử mơ hình PCA Matlab Các hàm cần thiết: function features = getSamples( image, mask ) %GETPREDICTORS Summary of this function goes here % Detailed explanation goes here integralImage = getIntegralImage( image ); borderIndexes = find( mask == 10 ); n = size( borderIndexes, ); features = zeros( 5*n, 15 ); for i = 1:n [ y, x ] = ind2sub( size( image ), borderIndexes(i) ); features( i, 1:14) = getHaarFeatures( integralImage, x, y ); features( i, 15 ) = 1; end % make the border pixels unselectable by the random neg feat % selector mask(1:4,:) = ones( 4, size(mask,2) ); mask(end-3:end, :) = ones( 4, size(mask,2) ); mask( :, 1:4 ) = ones( size(mask,1), ); mask( :, end-3:end ) = ones( size(mask,1), ); nonborderIndexes = find( mask == ); % random indexes for j = n+1:5*n m = size( nonborderIndexes, ); random = floor( rand(1) * (m-1) ) + 1; index = nonborderIndexes( random ); nonborderIndexes = [ nonborderIndexes( 1:random-1 ); nonborderIndexes( random+1:end ) ]; [ y, x ] = ind2sub( size( image ), index ); features( j, 1:14) = getHaarFeatures( integralImage, x, y ); features( j, 15 ) = 0; end end function PlotIt_Orig(img, landmarks, FVr_temp, S_struct ) meanShape = S_struct.meanShape; PC = S_struct.PC; T = [ cos(FVr_temp(11)), -sin(FVr_temp(11)), FVr_temp(9) ; sin(FVr_temp(11)), cos(FVr_temp(11)), FVr_temp(10) ; 0, 0, ]; shape = genShape( meanShape, PC, FVr_temp(1:8), T ); [ FVr_temp(12), 0; FVr_temp(13) ], imshow(img), hold on, plot( shape(:,1), shape(:,2), 'y', 'LineWidth', ); plot( landmarks(:,1), landmarks(:,2), 'b', 'LineWidth', ); drawnow; pause(1); %wait for one second to allow convenient viewing return function PlotIt(FVr_temp,iter,S_struct) probMap = S_struct.probMap; meanShape = S_struct.meanShape; PC = S_struct.PC; T = [ cos(FVr_temp(11)), -sin(FVr_temp(11)), FVr_temp(9) ; sin(FVr_temp(11)), cos(FVr_temp(11)), FVr_temp(10) ; 0, 0, ]; shape = genShape( meanShape, PC, [ FVr_temp(12), 0; FVr_temp(13) ], FVr_temp(1:8), T ); imagesc(probMap), colormap(gray), hold on, plot( shape(:,1), shape(:,2), 'y', 'LineWidth', ); drawnow; pause(1); %wait for one second to allow convenient viewing return function PlotIt(FVr_temp,iter,S_struct) probMap = S_struct.probMap; meanShape = S_struct.meanShape; PC = S_struct.PC; T = [ cos(FVr_temp(11)), -sin(FVr_temp(11)), FVr_temp(9) ; sin(FVr_temp(11)), cos(FVr_temp(11)), FVr_temp(10) ; 0, 0, ]; shape = genShape( meanShape, PC, [ FVr_temp(12), 0; FVr_temp(13) ], FVr_temp(1:8), T ); imagesc(probMap), colormap(gray), hold on, plot( shape(:,1), shape(:,2), 'y', 'LineWidth', ); plot( shape(1:40,1), shape(1:40,2), 'b+', 'LineWidth', ); plot( shape(52:end,1), shape(52:end,2), 'b+', 'LineWidth', ); plot( shape(41:51,1), shape(41:51,2), 'r+', 'LineWidth', ); drawnow; pause(1); %wait for one second to allow convenient viewing return function PlotIt_Pts(FVr_temp,iter,S_struct,color) probMap = S_struct.probMap; meanShape = S_struct.meanShape; PC = S_struct.PC; T = [ cos(FVr_temp(11)), -sin(FVr_temp(11)), FVr_temp(9) ; sin(FVr_temp(11)), cos(FVr_temp(11)), FVr_temp(10) ; 0, 0, ]; shape = genShape( meanShape, PC, [ FVr_temp(12), 0; FVr_temp(13) ], FVr_temp(1:8), T ); hold on, plot( shape(:,1), shape(:,2), color, 'LineWidth', ); function [FVr_bestmem,S_bestval,I_nfeval] = deopt(fname,S_struct) % -This is just for notational convenience and to keep the code uncluttered. -I_NP = S_struct.I_NP; F_weight = S_struct.F_weight; F_CR = S_struct.F_CR; I_D = S_struct.I_D; FVr_minbound = S_struct.FVr_minbound; FVr_maxbound = S_struct.FVr_maxbound; I_bnd_constr = S_struct.I_bnd_constr; I_itermax = S_struct.I_itermax; F_VTR = S_struct.F_VTR; I_strategy = S_struct.I_strategy; I_refresh = S_struct.I_refresh; I_plotting = S_struct.I_plotting; % -Check input variables if (I_NP < 5) I_NP=5; fprintf(1,' I_NP increased to minimal value 5\n'); end if ((F_CR < 0) | (F_CR > 1)) F_CR=0.5; fprintf(1,'F_CR should be from interval [0,1]; set to default value 0.5\n'); end if (I_itermax F_VTR)) FM_popold = FM_pop; % save the old population S_struct.FM_pop = FM_pop; S_struct.FVr_bestmem = FVr_bestmem; FVr_ind = randperm(4); FVr_a1 vectors FVr_rt positions FVr_a2 FVr_rt FVr_a3 FVr_rt FVr_a4 FVr_rt FVr_a5 FM_pm1 FM_pm2 FM_pm3 FM_pm4 FM_pm5 % index pointer array = randperm(I_NP); = rem(FVr_rot+FVr_ind(1),I_NP); % rotate indices by ind(1) = = = = = = = = = = = = % shuffle locations of % rotate vector locations FVr_a1(FVr_rt+1); rem(FVr_rot+FVr_ind(2),I_NP); FVr_a2(FVr_rt+1); rem(FVr_rot+FVr_ind(3),I_NP); FVr_a3(FVr_rt+1); rem(FVr_rot+FVr_ind(4),I_NP); FVr_a4(FVr_rt+1); FM_popold(FVr_a1,:); FM_popold(FVr_a2,:); FM_popold(FVr_a3,:); FM_popold(FVr_a4,:); FM_popold(FVr_a5,:); for k=1:I_NP best member FM_bm(k,:) = FVr_bestmemit; end FM_mui = rand(I_NP,I_D) < F_CR; otherwise % % % % % shuffled shuffled shuffled shuffled shuffled population population population population population % population filled with the % of the last iteration % all random numbers < F_CR are 1, % Insert this if you want exponential crossover. -%FM_mui = sort(FM_mui'); % transpose, collect 1's in each column %for k = 1:I_NP % n = floor(rand*I_D); % if (n > 0) % FVr_rtd = rem(FVr_rotd+n,I_D); % FM_mui(:,k) = FM_mui(FVr_rtd+1,k); %rotate column k by n % end %end %FM_mui = FM_mui'; % transpose back % End: exponential crossover -FM_mpo = FM_mui < 0.5; % inverse mask to FM_mui if (I_strategy == 1) FM_ui = FM_pm3 + F_weight*(FM_pm1 - FM_pm2); FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; FM_origin = FM_pm3; elseif (I_strategy == 2) % DE/rand/1 % differential variation % crossover % DE/local-to-best/1 FM_ui = FM_popold + F_weight*(FM_bm-FM_popold) + F_weight*(FM_pm1 FM_pm2); FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; FM_origin = FM_popold; elseif (I_strategy == 3) % DE/best/1 with jitter FM_ui = FM_bm + (FM_pm1 - FM_pm2).*((10.9999)*rand(I_NP,I_D)+F_weight); FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; FM_origin = FM_bm; elseif (I_strategy == 4) % DE/rand/1 with pervector-dither f1 = ((1-F_weight)*rand(I_NP,1)+F_weight); for k=1:I_D FM_pm5(:,k)=f1; end FM_ui = FM_pm3 + (FM_pm1 - FM_pm2).*FM_pm5; % differential variation FM_origin = FM_pm3; FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; % crossover elseif (I_strategy == 5) % DE/rand/1 with pervector-dither f1 = ((1-F_weight)*rand+F_weight); FM_ui = FM_pm3 + (FM_pm1 - FM_pm2)*f1; % differential variation FM_origin = FM_pm3; FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; % crossover else % either-or-algorithm if (rand < 0.5); % Pmu = 0.5 FM_ui = FM_pm3 + F_weight*(FM_pm1 - FM_pm2);% differential variation FM_origin = FM_pm3; else % use F-K-Rule: K = 0.5(F+1) FM_ui = FM_pm3 + 0.5*(F_weight+1.0)*(FM_pm1 + FM_pm2 - 2*FM_pm3); end FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; % crossover end % -Optional parent+child selection -% -Select which vectors are allowed to enter the new population for k=1:I_NP %=====Only use this if boundary constraints are needed================== if (I_bnd_constr == 1) for j=1:I_D % boundary constraints via bounce back if (FM_ui(k,j) > FVr_maxbound(j)) FM_ui(k,j) = FVr_maxbound(j) + rand*(FM_origin(k,j) FVr_maxbound(j)); end if (FM_ui(k,j) < FVr_minbound(j)) FM_ui(k,j) = FVr_minbound(j) + rand*(FM_origin(k,j) FVr_minbound(j)); end end end %=====End boundary constraints========================================== S_tempval = feval(fname,FM_ui(k,:),S_struct); competitor I_nfeval = I_nfeval + 1; if (left_win(S_tempval,S_val(k)) == 1) FM_pop(k,:) = FM_ui(k,:); with new one (for new iteration) S_val(k) = S_tempval; array" % check cost of % replace old vector % save value in "cost % we update S_bestval only in case of success to save time -if (left_win(S_tempval,S_bestval) == 1) S_bestval = S_tempval; FVr_bestmem = FM_ui(k,:); vector ever end end end % for k = 1:NP FVr_bestmemit = FVr_bestmem; iteration for the coming % new best value % new best parameter % freeze the best member of this % iteration This is needed for some of the strategies % Output section if (I_refresh > 0) if ((rem(I_iter,I_refresh) == 0) | I_iter == 1) fprintf(1,'Iteration: %d, Best: %f, F_weight: %f, F_CR: %f, I_NP: %d\n',I_iter,S_bestval.FVr_oa(1),F_weight,F_CR,I_NP); %var(FM_pop) format long e; for n=1:I_D fprintf(1,'best(%d) = %g\n',n,FVr_bestmem(n)); end if (I_plotting == 1) PlotIt(FVr_bestmem,I_iter,S_struct); end end end I_iter = I_iter + 1; end % -end while ((I_iter < I_itermax) Các bước thực hiện: % converts the data format to pca compatible matrix (30 shapes) D=preprocess(aligned); % calculate the mean meanD = mean(D'); % get the mean "subtract" matrix meanD2 = repmat(meanD, 30, 1)'; % demean the data (get the differences) demeanD = D - meanD2; % the PCA on the differences [signals, PC, V] = pca2(demeanD); % gets the features of the first 30 images samples = []; for i = 1:30 disp( [ 'processing ' num2str(i) ] ); samples = [samples; getSamples( images{i}, masks{i} ) ]; end % step 3: train the treebagger X = samples(:,1:14); Y = samples(:,15); B = TreeBagger( 32, X, Y ); % evaluate the probability maps for the test samples PM = cell( 1,20 ); for i = 31:50 disp( [ 'processing image ' num2str(i) ] ); PM{i - 30} = probMap( images{i}, B ); end Thực thi thuật toán Differential Evolution % Initialization and run of the differential evolution optimizer %******************************************************************** % F_VTR "Value To Reach" (stop when ofunc < F_VTR) F_VTR = 0.05; % I_D number of parameters of the objective function I_D = 13; % FVr_minbound,FVr_maxbound vector of lower and bounds of initial population % The algorithm seems to work especially well if [FVr_minbound,FVr_maxbound] % covers the region where the global minimum is expected FVr_minbound = [ -3.0*sqrt(V(1)) -3.0*sqrt(V(2)) -3.0*sqrt(V(3)) 3.0*sqrt(V(4)) -3.0*sqrt(V(5)) -3.0*sqrt(V(6)) -3.0*sqrt(V(7)) 3.0*sqrt(V(8)) 50 90 -7.0 0.9 0.9 ]; FVr_maxbound = [ 3.0*sqrt(V(1)) 3.0*sqrt(V(2)) 3.0*sqrt(V(3)) 3.0*sqrt(V(4)) 3.0*sqrt(V(5)) 3.0*sqrt(V(6)) 3.0*sqrt(V(7)) 3.0*sqrt(V(8)) 170 210 7.0 1.6 1.6 ]; I_bnd_constr = 1; %1: use bounds as bound constraints, 0: no bound constraints % I_NP number of population members I_NP = 150; % I_itermax maximum number of iterations (generations) I_itermax = 1500; % F_weight DE-stepsize F_weight ex [0, 2] F_weight = 0.5; % F_CR crossover probabililty constant ex [0, 1] F_CR = 0.75; I_strategy = 1; % I_refresh intermediate output will be produced after "I_refresh" % iterations No intermediate output will be produced if I_refresh is < I_refresh = 10; % I_plotting Will use plotting if set to Will skip plotting otherwise I_plotting = 1; % Problem dependent but constant values, values just needed for plotting S_struct.probMap = PM_current; S_struct.meanShape = meanD; S_struct.PC = PC(:,1:8); S_struct.I_NP S_struct.F_weight S_struct.F_CR S_struct.I_D S_struct.FVr_minbound S_struct.FVr_maxbound S_struct.I_bnd_constr S_struct.I_itermax S_struct.F_VTR S_struct.I_strategy S_struct.I_refresh S_struct.I_plotting = = = = = = = = = = = = I_NP; F_weight; F_CR; I_D; FVr_minbound; FVr_maxbound; I_bnd_constr; I_itermax; F_VTR; I_strategy; I_refresh; I_plotting; % Start of optimization [ FVr_x, S_y, I_nf ] = deopt( 'objfun', S_struct ) ... mức cho phân đoạn ảnh có cường độ khơng đồng áp dụng cho hình ảnh MRI [7], sử dụng lọc phần tử hình dạng để có phân đoạn mạnh mẽ hình ảnh y tế [8], hay phân đoạn ảnh dùng lọc phần tử hình dạng... 1: Lý thuyết lọc phần tử Chương 2: Khái niệm phân đoạn ảnh mơ hình PCA Chương 3: Một số ứng dụng lọc phần tử phân đoạn hình ảnh y tế Chương 4: Thực phân đoạn xương bàn tay dùng lọc phần tử kết... 3.1.3 Phân đoạn sử dụng mơ hình PCA dựa lọc phần tử 3.1.3.1 Mơ hình hệ thống Chúng ta sử dụng mơ hình đồ họa để phân tích phân đoạn hình ảnh y tế nhiễu Hình 3.2a cho th? ?y mơ hình đồ họa tĩnh Nó có