Chương 4 : NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
4.2. Tạo dữ liệu ảnh cá và ảnh tạp dùng để huấn luyện mạng nơ-ron
Tác giả thực nghiệm cho cá và tạp chất vào chậu chứa. Dùng máy chụp hình kỹ thuật số (13 Megapixel) chụp lại ảnh cá và ảnh tạp.Thực hiện chụp nhiều lần, tác giả thu được một lượng lớn ảnh cá và ảnh tạp dùng làm dữ liệu huấn luyện mạng nơ-ron.
Sử dụng phần mềm để tách từng con cá và từng tạp chất riêng biệt. Tác giả đã tạo ra 300 tập tin ảnh của 300 con cá có hình dạng bơi khác nhau và 150 tập tin ảnh của 150 tạp chất. Trong đó dữ liệu ảnh cá và ảnh tạp dùng để huấn luyện mạng nơ-ron là 200 tập tin ảnh cá và 100 tập tin ảnh tạp, 100 tập tin ảnh cá và 50 tập tin ảnh tạp còn lại dùng để kiểm tra độ chính xác việc học của mạng nơ-ron.
38
Hình 4.2 Một số hình ảnh cá
39
4.3. Quá trình xử lý ảnh
Tác giả sử dụng giao diện đồ họa (GUI) trong Matlab để xây dựng chương trình cho việc nhận dạng và đếm cá giống
Hình 4.4. Giao diện đồ họa chương trình nhận dạng và đếm cá
Chuyển ảnh màu RGB thành ảnh mức xám
Tác giả đã sử dụng hàm rgb2gray của Matlab để thực hiện được tác vụ này.
Dữ liệu vào của hàm là ảnh màu RGB, dữ liệu ra của hàm là ảnh mức xám. Quan sát ảnh xám sau khi sử dụng hàm rgb2gray ta thấy đối tượng cá có màu đen hơn nền xung quanh. Ảnh sau khi chuyển thành ảnh mức xám
Đảo pixel ảnh xám
Do ở bước xác định trọng tâm của ảnh ta cần hiển thị điểm trọng tâm nên nếu đối tượng cá có màu đen thì sẽ khơng quan sát được điểm trọng tâm. Vì vậy, tác giả đã thực hiện đảo các pixel 0 thành pixel 1, đảo pixel 1 thành pixel 0 (hay đảo đen
thành trắng, trắng thành đen) bằng hàm imcomplement của Matlab. Dữ liệu vào
của hàm này có thể là ảnh nhị phân, ảnh xám hoặc ảnh màu RGB. Kết quả trong đề tài này, tác giả chọn dữ liệu vào của hàm imcomplement là ảnh xám, dữ liệu ra của
40
hàm cũng là ảnh xám nhưng đối tượng cá đã được chuyển sang màu trắng còn nền thì màu tối.
Lọc nhiễu cho ảnh mức xám
Tác giả đã sử dụng hàm medfilt2 của Matlab để thực hiện được tác vụ này. Dữ liệu vào của hàm này là ảnh mức xám chưa được lọc nhiễu, dữ liệu ra của hàm cũng là ảnh mức xám nhưng đã được lọc nhiễu.
Tăng độ tương phản cho ảnh mức xám
Tác giả đã sử dụng hàm imadjust của Matlab để thực hiện được tác vụ này. Dữ liệu vào của hàm này là ảnh mức xám đã được lọc nhiễu, dữ liệu ra của hàm cũng là ảnh mức xám nhưng có độ tương phản giữa hai màu đen và trắng rõ nét hơn.
Phân đoạn ảnh
Chuyển ảnh mức xám thành ảnh nhị phân đen trắng.
Để thực hiện được tác vụ này, tác giả đã sử dụng 2 hàm graythresh và
im2bw của Matlab.
Hàm graythresh dùng để xác định ngưỡng giá trị mức xám của ảnh
mức xám đã được làm tăng độ tương phản. Dữ liệu vào của hàm này là ảnh mức xám, dữ liệu ra của hàm là ngưỡng giá trị mức xám của ảnh.
Hàm im2bw dùng để chuyển ảnh mức xám thành ảnh nhị phân đen
trắng. Những điểm ảnh nào trong ảnh có giá trị mức xám lớn hơn ngưỡng giá trị mức xám thì thành màu đen, ngược lại thì thành màu trắng. Lúc này ảnh là một ma trận điểm, mỗi điểm có giá trị hoặc là 0 hoặc là 1.
Loại bỏ các vùng ảnh nhỏ có ít số pixel
Để thực hiện được tác vụ này, tác giả đã sử dụng hàm bwareaopen của
Matlab. Do ảnh chụp thực tế có rất nhiều tạp chất nhỏ li ti mà ta không thể xây dựng chúng thành ảnh tạp mẫu để huấn luyện cho mạng nơ-ron. Vì vậy cần phải loại bỏ các tạp chất nhỏ này.
Dữ liệu vào của hàm bwareaopen này là ảnh nhị phân, dữ liệu ra của hàm
41
Hình 4.5 Ảnh gốc Hình 4.6 Ảnh xám
Hình 4.7 Ảnh đảo pixel Hình 4.8 Ảnh lọc nhiễu
Hình 4.9 Ảnh tăng độ tương phản Hình 4.10 Ảnh nhị phân đen trắng