Quá trình xử lý hình ảnh và đếm đối tượng sử dụng MATLAB có thể thực hiện bằng cách thực thi các lệnh sau đây trong cửa sổ lệnh của MATLAB.
Xử lý hình ảnh và đếm đối tượng với MATLAB
Nếu bạn chưa cài đặt Matlab trên máy tính, hãy tải về và cài đặt phiên bản mới nhất của Matlab tại đây: Download Matlab
Bước 1: Đọc ảnh
Một bức ảnh nổi bật với nền nền đậm để xác định đối tượng. Hàm imread sẽ đọc ảnh từ một địa điểm cụ thể và lưu vào ma trận img1. Hàm imshow sẽ hiển thị ảnh.
img1=imread('HinhAnh.jpg');
imshow(img1)
Bước 2: Chuyển đổi sang ảnh xám
Trong bước này, chúng ta sẽ loại bỏ màu sắc từ ảnh để dễ dàng xác định các đối tượng. Hàm rgb2gray sẽ chuyển đổi ảnh sang định dạng màu xám và lưu vào ma trận img2.
img1=rgb2gray(img1);
imshow(img1)
Bước 3: Ngưỡng hình ảnh
Quá trình ngưỡng hình ảnh sẽ chuyển đổi ảnh màu xám thành ảnh chỉ chứa 2 màu. Hàm im2bw() sẽ gán màu đen cho tất cả các điểm ảnh có độ sáng cao hơn ngưỡng, và màu trắng cho các điểm ảnh còn lại. Hàm graythresh () sẽ tính toán ngưỡng dựa trên độ sáng của ảnh.
img2=im2bw(img1,graythresh(img1));
imshow(img2)
Bước 4: Tăng cường hình ảnh
Sử dụng toán tử ~ để tăng cường hình ảnh. Bằng cách này, chúng ta chuyển đổi các mảng trắng thành màu đen và ngược lại. Nếu muốn làm nổi bật đối tượng bằng màu trắng, bạn có thể thực hiện bước này.
img2=~img2;
imshow(img2)
Bước 5: Định rõ ranh giới của các đối tượng
Trong bước này, chúng ta sẽ xác định ranh giới của mỗi đối tượng mà Matlab phát hiện và lưu vào biến B. Hàm text sẽ hiển thị số lượng đối tượng mà hàm bwboundaries tìm thấy.
B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('\color{green}Đối tượng Đã Tìm Thấy:',num2str(length(B))))
hold on
Bước 6: Vẽ Đường Ranh Giới
Bước xử lý ảnh và đếm số lượng với MATLAB này rất thú vị, trong đó bạn có thể đánh dấu ranh giới của các đối tượng được xác định bởi hàm bwboundaries. Nếu bạn cảm thấy bước này phức tạp, bạn có thể bỏ qua nó:
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)
end
Bước 7: Viết Code
img1=imread('Lines.jpg');
imshow(img1)
img1=chuyenVeAnhXam(img1);
hienThiAnh(img1)
img2=nguongAnhVeDenTrang(img1,nguongAnh(img1));
hienThiAnh(img2)
img2=daoNguocAnhDenTrang(img2);
hienThiAnh(img2)
B = timRanhGioiCuaDoiTuong(img2);
hienThiAnh(img2)
text(10,10,strcat('\color{green}Đối tượng Đã Tìm Thấy:',num2str(length(B))))
giuNguyen
for k = 1:length(B)
rungRanh(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)
veDuongRanh(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)
ketThuc
Vậy là trong bài viết trên Mytour vừa hướng dẫn bạn cách xử lý ảnh và đếm số lượng với MATLAB. Để nâng cao kỹ năng làm việc với Matlab, bạn có thể tải tài liệu tự học Matlab và nhanh chóng cải thiện kỹ năng sử dụng Matlab của mình. Nếu có thắc mắc hoặc điều gì bạn chưa hiểu, hãy đặt câu hỏi của bạn trong phần bình luận dưới bài viết nhé!
