Cách xử lý ảnh và đếm số lượng với MATLAB
Matlab là viết tắt của “MATrix LABoratory”, là một bộ phần mềm toán học và cũng là ngôn ngữ lập trình thế hệ thứ 4 của Mathworks. Matlab giải quyết các vấn đề về mặt kỹ thuật kỹ thuật, lập trình, tính toán số nhanh hơn nhiều so với các ngôn ngữ lập trình truyền thống, như ...
Việc xử lý ảnh và đếm số lượng với MATLAB được thực hiện bằng cách thực thi các lệnh dưới đây trong cửa sổ lệnh của MATLAB.
Nếu máy tính của bạn chưa có Matlab, hãy tải về và cài đặt Matlab phiên bản mới nhất tại đây : Download Matlab
Bước 1: Đọc ảnh
Một hình ảnh sẽ tương phản đáng kể với nền background của nó để xác định các đối tượng. Hàm imread đọc ảnh từ một vị trí nhất định và lưu ảnh trong ma trận img1. Hàm imshow sẽ hiển thị ảnh.
img1=imread('Lines.jpg');
imshow(img1)
Bước 2: Chuyển đổi màu ảnh sang màu xám
Bước này sẽ xóa các màu sắc trong ảnh đi và để xác định các đối tượng dễ dàng hơn. Hàm rgb2gray chuyển đổi màu sắc trong ảnh sang màu xám và lưu trữ trong ma trận img2.
img1=rgb2gray(img1);
imshow(img1)
Bước 3: Ngưỡng hình ảnh
Ngưỡng hình ảnh bằng cách chuyển đổi ảnh màu xám sang ảnh chỉ chứa 2 màu. Hàm im2bw() gán màu đen cho tất cả điểm ảnh có độ sáng cao hơn mức ngưỡng, và còn lại là màu trắng. Hàm graythresh () tính toán khoảng ngưỡng của hình ảnh.
img2=im2bw(img1,graythresh(img1));
imshow(img2)
Bước 4: Phần bổ sung hình ảnh
Sử dụng toán tử ~ để bổ sung cho hình ảnh. Bằng cách này để 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: Tìm ranh giới của các đối tượng
Bước này để tìm ranh giới của mỗi đối tượng mà Matlab tìm thấy và lưu trữ trong B. Hàm text sẽ in số lượng các đối tượng mà hàm bwboundaries tìm thấy.
B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('color{green}Objects Found:',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 khá thú vị, trong đó bạn có thể đánh dấu ranh giới các đối tượng được xác định bởi hàm bwboundaries. Nếu cảm thấy phức tạp quá, bạn có thể bỏ qua bước này:
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)
end
Bước 7: Code
img1=imread('Lines.jpg');
imshow(img1)
img1=rgb2gray(img1);
imshow(img1)
img2=im2bw(img1,graythresh(img1));
imshow(img2)
img2=~img2;
imshow(img2)
B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('color{green}Objects Found:',num2str(length(B))))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)
end
http://thuthuat.taimienphi.vn/cach-xu-ly-anh-va-dem-so-luong-voi-matlab-28966n.aspx
Như vậy trong bài viết trên Zaidap.com vừa hướng dẫn bạn cách xử lý ảnh và đếm số lượng với MATLAB. Để cải thiện kỹ năng làm việc với Matlab, nhanh chóng thuần thục chương trình này, bạn có thể tải về giáo trình tự học Matlab và nhanh chóng nâng cao kỹ năng sử dụng Matlab nhé. Nếu có thắc mắc hoặc chỗ nào chưa hiểu bạn có thể để lại câu hỏi của mình trong phần bình luận bên dưới bài viết nhé!