0
Bảng 3.2: Kết quả entropy cho ảnh không bọt khí
Như vậy, với ảnh có bọt khí thì giá trị Entropy cho các điểm ảnh sẽ dày đặc các giá trị dương và nhỏ hơn hoặc bằng 1. Ngược lại với ảnh không bọt khí thì giá trị Entropy cho các điểm ảnh chủ yếu là bằng 0. Một số ít các điểm ảnh ở một số ác ảnh cũng sẽ cho giá trị dương nhưng gần với 0. Đều này được xác định phân loại theo các trường hợp như sau:
- Trường hợp 1: Entropy = 0 : tương ứng trường hợp pixel ảnh không có bọt khí.
- Trường hợp 2: 0 < Entropy <=1 : tương ứng trường hợp pixel ảnh có bọt khí.
- Trường hợp 3: Entropy gần với 0 : trường hợp này khó xác định (mập mờ) được pixel đó là có bọt khí hay không (trường hợp này thì thường là do các frame ảnh bị nhiễu do sóng trên mặt bể hoặc ảnh bị mờ hoặc độ sáng yếu của ánh sáng, vv…).
Với trường hợp 3 này thì cần sử dụng Fuzzy logic để khử các pixel ảnh mờ yếu này, ở đây tôi sử dụng 1 hàm Activation đã giới thiệu ở các chương trước để thực hiện làm giảm đi sự mập mờ các pixel có thể có bọt khí hoặc không có bọt khí bằng việc điều chỉnh hệ số anpha để thu nhỏ khả năng mập mờ như nói trên. Qua quá trình thực nghiệm cuối cùng tôi
chọn anpha = 2 thì các ảnh có giá trị Entropy nhỏ (gần với 0) sẽ giảm đi gần như hết. Sau đây là minh hoạ cho môt ảnh bọt khí và một ảnh không bọt khí (hình 3.1 và hình 3.2) sau quá trình tính Entropy và đã khử bằng hàm Activation
Ảnh xám |
Sau Entropy |
Sau Fuzzy logic |
Có thể bạn quan tâm!
- Ví Dụ Về Các Hàm Thuộc Khác Nhau Số Tập Mờ Số Gần 2
- Nhận Dạng Và Nội Suy Ảnh (Image Recognition And Interpretation)
- Mô Hình Phân Lớp Ảnh Cho Bài Toán Nhận Dạng Bọt Khí
- Áp dụng độ đo entropy cho bài toán tách đặc trưng của bọt khí trên video và đề xuất kết hợp SVM cho vấn đề tự động theo dõi sục khí tại trạm quan trắc môi trường - 8
Xem toàn bộ 69 trang tài liệu này.
Hình 3.1: Minh hoạ 1 frame ảnh có bọt khí (xử lý bằng Entropy và Fuzzylogic)
Ảnh xám |
Sau Entropy |
Sau Fuzzy logic |
Hình 3.2: Minh hoạ 1 frame ảnh không bọt khí (xử lý bằng Entropy và Fuzzylogic)
Sau khi trích chọn đặc trưng bằng việc xác định độ tin cậy có bọt khí bằng kỹ thuật Entropy (mỗi lần cho 100 frame ảnh) và khử những pixcel ảnh không rõ ràng bằng Fuzzy Logic (hàm Activation), tức khử những trường hợp entropy nhỏ như trên, tôi tiếp tục sử dụng phương pháp biến đổi Wavelet Haar để thu gọn lại thông tin. Ở đây tôi cho thực hiện biến đổi Wavelet Haar 4 lần. Như vậy, từ các frame ảnh ban đầu với kích thước là 468*624 (468 dòng và 624 cột) được thu gọn lại với kích thước 30*39 (30 dòng và 39 cột), những thông tin quan trọng về bọt khí vẫn sẽ được thu lại đây.
Từ đây mỗi trạm được lưu lại với 2 bộ dữ liệu là giá trị Entropy đã tính và đã xử lý Fuzzy logic và biến đổi Wavelet 4 lần (một bộ cho ảnh có bọt khí và một bộ cho ảnh không có bọt khí). Mỗi bộ dữ liệu này là 10 tập dữ liệu ảnh (mỗi tập là 100 frame ảnh). Như vậy, ứng với mỗi trạm (1 video clip) sẽ thu lại 10 tập cho ảnh có bọt khí và 10 tập cho ảnh không bọt khí, tổng cộng có được 8 bộ dữ liệu ảnh / 80 tập dữ liệu ảnh (tương ứng 8.000 frame ảnh) chứa thông tin Entropy. Mỗi tập được lưu lại thành 1 ma trận và mỗi tập này sẽ là 1 vector đặc trưng sẽ đưa vào huấn luyện phân lớp.
Các bộ dữ liệu này sẽ được sử dụng để huấn luyện mô hình phân lớp sau này và có thể sử dụng để kiểm thử, nhận dạng. Ở đây tôi gọi các bộ dữ liệu này là (DATA_Entropy_ FuzzyLogic).
3.4. ỨNG DỤNG BỘ LỌC CANNY CHO TRÍCH CHỌN ĐẶC TRƯNG ẢNH BỌT KHÍ
Giống như hướng ứng dụng độ đo Entropy, cũng từ 8 tệp video clip ứng với 4 trạm đã tách và chuyển không gian màu sang mức xám như đã trình bày ở các phần trên, tôi thử
nghiệm tìm biên ảnh bằng kỹ thuật Gradient với 4 toán tử đạo hàm là Roberts, Prewitt, Sobel và Canny (dựa vào tính giá trị cực đại và cực tiểu của đạo hàm bậc nhất) cho các tệp dữ liệu này. Từ đó, so sánh kết quả và đánh giá chọn ra phương pháp phù hợp nhất là phương pháp Canny (còn gọi là bộ lọc Canny) áp dụng cho việc trích chọn đặc trưng bọt khí.
Trong quá trình cài đặt thực nghiệm cho các phương pháp tìm biên trên, để đánh giá chất lượng phát hiện biên cho các phương pháp, tôi đánh giá thông qua các tiêu chí như sai số trung bình bình phương (MSE) và tỷ số tín hiệu/nhiễu (PSNR) như tôi đã công bố trong bài báo khoa học, tài liệu [16] như sau:
- Sai số trung bình bình phương MSE đánh giá mức độ sai khác giữa biên nhận được do tính toán và biên thực thông qua 2 công thức:
m n
MSE = 1
mn
∑ ∑(f1
i=1 j=1
(i, j) − f2
(i, j))2 (3.1)
RMSE = √MSE (3.2)
Với f1 (i, j) và f2 (i, j) là các điểm ảnh trên biên theo tính toán và trên biên thực.
- Tỷ số tín hiệu/nhiễu được tính theo công thức:
2552
PSNR = 10log ( MSE ) (3.3)
Sau thực nghiệm, kết quả tính toán và so sánh MSE và PSNR của 1 frame ảnh có bọt và không bọt như bảng (3.3) và (3.4) sau đây:
Phương pháp | MSE | PSNR | |
1 | Prewitt | 8.7023e+003 | 8.7345 |
2 | Roberts | 8.7019e+003 | 8.7347 |
3 | Sobel | 8.6031e+003 | 8.7842 |
4 | Canny | 8.6002e+003 | 8.7857 |
Bảng 3.3: So sánh MSE và PSNR cho 1 frame ảnh có bọt
Phương pháp | MSE | PSNR | |
1 | Prewitt | 8.2039e+003 | 8.9906 |
2 | Roberts | 8.2016e+003 | 8.9916 |
3 | Sobel | 8.1756e+003 | 9.0056 |
4 | Canny | 8.1689e+003 | 9.0092 |
Bảng 3.4: So sánh MSE và PSNR cho 1 frame ảnh không bọt
Minh hoạ kết quả cho 1 frame ảnh có bọt và 1 frame ảnh không bọt cho 4 dạng dò biên với cách lấy ngưỡng Otsu và cách đặt ngưỡng thấp là 80, ngưỡng cao là 120 như hình (3.3) và hình (3.4) dưới đây:
Prewitt (Otsu) |
Roberts (Otsu) | |
Sobel (Otsu) |
Canny (Otsu) |
Canny (80,120) |
Hình 3.3: Minh hoạ 1 frame ảnh có bọt khí cho việc xử lý tìm biên
Prewitt (Otsu) |
Roberts (Otsu) | |
Sobel (Otsu) |
Canny (Otsu) |
Canny (80,120) |
Hình 3.4: Minh hoạ 1 frame ảnh không bọt khí cho việc xử lý tìm biên
Qua số liệu ở bảng (3.3) và (3.4) ở trên, có thể thấy rằng phương pháp Canny cho kết quả MSE có giá trị nhỏ nhất và PSNR cho giá trị lớn nhất so với các phương pháp khác khi điều chỉnh ngưỡng thấp là 80 và ngưỡng cao là 120. Mặt khác, từ hình (3.3) và (3.4) cũng cho thấy kết quả khi áp dụng các phương pháp nêu trên cho 1 frame ảnh thì phương pháp Canny hiện các biên đầy đủ hơn các phương pháp khác.
Như vậy, có thể nói rằng phương pháp Canny tốt hơn các phương pháp khác do ít bị tác động của nhiễu và cho khả năng phát hiện các biên yếu tốt hơn. Đồng thời đường biên thực cũng đạt được độ chính xác cao hơn, đường biên mỏng và rõ rệt hơn. Nhưng qua thực nghiệm nếu ta chọn ngưỡng quá thấp sẽ tạo ra biên không đúng, ngược lại nếu chọn ngưỡng quá cao thì nhiều thông tin quan trọng của biên sẽ bị loại bỏ. Căn cứ vào mức ngưỡng đã xác định trước, ta sẽ quyết định những điểm thuộc biên thực hoặc không thuộc biên. Nếu mức ngưỡng càng thấp, số đường biên được phát hiện càng nhiều (nhưng kèm theo là nhiễu
và số các đường biên giả cũng xuất hiện nhiều hơn). Ngược lại nếu ta đặt mức ngưỡng càng cao, ta có thể bị mất những đường biên mờ hoặc các đường biên sẽ bị đứt đoạn.
Từ đây, mỗi trạm sẽ được lưu lại với 2 bộ dữ liệu ảnh (một bộ là các tệp ảnh có bọt khí và một bộ là các tệp ảnh không có bọt khí) đã dò biên bằng kỹ thuật Canny (với ngưỡng thấp là 80, ngưỡng cao là 120) ở trên. Mỗi bộ dữ liệu sẽ lấy đều theo thời gian với 50 frame ảnh. Như vậy, mỗi trạm (1 video clip) sẽ lấy 50 ảnh có bọt khí và 50 ảnh không bọt khí, tổng cộng có được 8 bộ dữ liệu (gồm 400 frame ảnh). Mỗi frame ảnh này sẽ là 1 vector đặc trưng được đưa vào huấn luyện phân lớp.
Các bộ dữ liệu này sẽ được sử dụng phục vụ cho công tác huấn luyện mô hình phân lớp sau này. Ở đây tôi gọi các bộ dữ liệu này là: (DATA_Canny).
Chương 4: THỰC NGHIỆM ÁP DỤNG PHƯƠNG PHÁP SVM VÀO BÀI TOÁN THEO DÕI VẤN ĐỀ SỤC KHÍ CHO BỂ NUÔI VI SINH
4.1. MÔI TRƯỜNG CÀI ĐẶT VÀ CÔNG CỤ SỬ DỤNG
Dựa vào cơ sở lý thuyết đã giới thiệu ở chương 1, chương 2 và mô hình cho bài toán nhận dạng bọt khí (hình 2.1), mô hình phân lớp (hình 2.5) đã đề xuất ở chương 2, đồng thời để hoàn thiện cho nghiên cứu về xử lý ảnh, huấn luyện mô hình phân lớp và nhận dạng ảnh của luận văn này, tôi xem xét và quyết định thực nghiệm trên môi trường cài đặt như sau:
- Ngôn ngữ lập trình Matlab.
- Ngôn ngữ lập trình IDE Visual Studio / C++ tích hợp thư viện mã nguồn mở về thị giác máy tính OpenCV.
- Cài đặt và chạy trên máy tính Dell Intel® Core™ ị-3320M CPU @2.60GHz, Ram 4.00GB.
4.2. ÁP DỤNG SVM TRÊN ẢNH ĐƯỢC TRÍCH CHỌN ĐẶC TRƯNG DỰA TRÊN ĐỘ ĐO ENTROPY KẾT HỢP FUZZY LOGIC VÀ WAVELET
4.2.1. Huấn luyện và xây dựng mô hình phân lớp
Để huấn luyện và phân lớp, tôi thực hiện với bộ dữ liệu Data_Entropy_FuzzyLogic với 80 tập dữ liệu ảnh (gồm 8.000 ảnh) đã được xử lý, phân tích trích chọn đặc trưng với việc sử dụng độ đo Entropy, Fuzzy logic và biến đổi Wavelet harr như đã trình bày ở chương 3 trên. Bộ dữ liệu này cũng đã được lấy đều theo thời gian và đều cho 4 trạm ứng với trường hợp có bọt khí và không có bọt khí và lưu lại với từng ma trận theo từng tập (100 ảnh) riêng biệt.
Từ đó, gán nhãn các mẫu tương ứng lớp 1 (+1) là lớp các tập ảnh có bọt khí và lớp 2 (-1) là lớp các tập ảnh không bọt khí cho từng tập của bộ dữ liệu này.
Tiếp cận thuật toán học theo hướng tiếp cận thuật toán SVM trên Matlab với việc dùng hàm fitcsvm và sử dụng hàm nhân Kernel dạng rbf để huấn luyện và phân lớp xác định được đường phân tách 2 lớp dữ liệu này.
Từ đây, lưu lại mô hình huấn luyện này mà để phục vụ kiểm thử và áp dụng nhận dạng ảnh bọt khí, mô hình này sau đây tôi gọi là: (Model_SVMEntropy_ Fuzzylogic)
4.2.2. Thực hiện kiểm thử với mô hình
Thử nghiệm test kiểm thử cho 4 video clip trích từ 4 camera tương ứng 4 trạm khác nhau (với 8.805 frame ảnh cho 1 video clip), bằng cách trích xuất mỗi lần 1 tập gồm 100 frame ảnh frame từ 4 clip này để xử lý, phân tích, trích chọn đặc trưng và đưa vào so sánh với mô hình phân lớp Model_SVMEntropy_FuzzyLogic đã huấn luyện và xác định được các mẫu nằm ở bên lớp ảnh có bọt khí (trường hợp bể được sục khí) hay bên lớp ảnh không có bọt khí (trường hợp bể không được sục khí).
4.2.3. Kết quả thực nghiệm và đánh giá
Sau quá trình thực nghiệm test kiểm thử cho các tập ảnh (1 tập là 100 ảnh) lấy đều theo thời gian khác nhau và chưa được đưa vào huấn luyện đưa vào kiểm thử so sánh với mô hình phân lớp Model_SVMEntropy_FuzzyLogic đã huấn luyện và cho được độ phân tách lớp như bảng (4.1) dưới đây:
Trạm/Clip | Số ảnh có bọt /(1 tập ảnh) | Tên lớp | Nhãn | Kết quả mong đợi | Kết quả đạt được | |
1 | 1 | 100 / (P_1_1) | 1 | 1 | 1 | 0.999804300299523 |
2 | 2 | 100 / (P_2_1) | 1 | 1 | 1 | 0.999750338870962 |
3 | 3 | 100 / (P_3_1) | 1 | 1 | 1 | 1.00004995283298 |
4 | 4 | 100 / (P_4_1) | 1 | 1 | 1 | 1.00004995283298 |
5 | 1 | 100 / (N_1_1) | 2 | -1 | -1 | -1.02514270178728 |
6 | 2 | 100 / (N_2_1) | 2 | -1 | -1 | -0.999994238974422 |
7 | 3 | 100 / (N_3_1) | 2 | -1 | -1 | -0.999917884046961 |
8 | 4 | 100 / (N_4_1) | 2 | -1 | -1 | -0.999917884046961 |
… | … | … | … | … | … | … |
Trạm/Clip | Số ảnh có bọt /(1 tập ảnh) | Tên lớp | Nhãn | Kết quả mong đợi | Kết quả đạt được | |
9 | 1 | 100 / (P_1_2) | 1 | 1 | 1 | 1.00000155858058 |
10 | 2 | 100 / (P_2_2) | 1 | 1 | 1 | 1.00015847943945 |
11 | 3 | 100 / (P_3_2) | 1 | 1 | 1 | 1.03905860788419 |
12 | 4 | 100 / (P_4_2) | 1 | 1 | 1 | 1.00047564683438 |
13 | 1 | 100 / (N_1_2) | 2 | -1 | -1 | -0.999816375146371 |
14 | 2 | 100 / (N_2_2) | 2 | -1 | -1 | -1.00011614326778 |
15 | 3 | 100 / (N_3_2) | 2 | -1 | -1 | -0.999816375146371 |
4 | 100 / (N_4_2) | 2 | -1 | -1 | -1.00011614326778 | |
… | … | … | … | … | … | … |
16
Trạm/Clip | Số ảnh có bọt /(1 tập ảnh) | Tên lớp | Nhãn | Kết quả mong đợi | Kết quả đạt được | |
17 | 1 | 100 / (P_1_3) | 1 | 1 | 1 | 1.02662328815916 |
18 | 2 | 100 / (P_2_3) | 1 | 1 | 1 | 1.00008211596208 |
19 | 3 | 100 / (P_3_3) | 1 | 1 | 1 | 0.999893251306956 |
20 | 4 | 100 / (P_4_3) | 1 | 1 | 1 | 1.22460086583529 |
21 | 1 | 100 / (N_1_3) | 2 | -1 | -1 | -0.999951708588683 |
22 | 2 | 100 / (N_2_3) | 2 | -1 | -1 | -1.00046246307757 |
23 | 3 | 100 / (N_3_3) | 2 | -1 | -1 | -0.999956831025119 |
24 | 4 | 100 / (N_4_3) | 2 | -1 | -1 | -1.00046246307757 |
… | … | … | … | … | … | … |
Bảng 4.1: Kết quả phân lớp ảnh (trường hợp sử dụng Entropy và Fuzzy logic)
Như vậy, với phương pháp ứng dụng này, qua thực nghiệm cho thấy kết quả phân loại chính xác cao, nhận diện chính xác tập ảnh đưa vào thuộc lớp 1 (có bọt khí) hay lớp 2 (không có bọt khí) với kết quả có thể nói là 100%.
4.3. ÁP DỤNG SVM TRÊN ẢNH ĐƯỢC TRÍCH CHỌN ĐẶC TRƯNG DỰA TRÊN BỘ LỌC CANNY
4.3.1. Huấn luyện và xây dựng mô hình
Để huấn luyện và phân lớp, tôi thực hiện với bộ dữ liệu Data_Canny với 200 frame ảnh đã được xử lý và dò biên bằng toán tử Canny như đã thực hiện ở chương 3 trên. Bộ dữ liệu này đã được lấy đều theo thời gian và đều cho 4 trạm ứng với trường hợp có bọt khí và không có bọt khí.
Từ đó, chuẩn hoá thu nhỏ dữ liệu ảnh về một dạng chung nhằm giảm bớt các thông số chịu ảnh hưởng nhiều của biến đổi, đồng thời gán nhãn các mẫu tương ứng lớp 1 (+1) là lớp ảnh có bọt khí và lớp 2 (-1) là lớp ảnh không có bọt khí cho từng ảnh của bộ dữ liệu này.