Đề tài Viết chương trình xử lý ảnh để tính tiền trong máy bán hàng tự động

Để xác định đồng xu nào có giá trị tương ứng với 100,200,1000,2000,5000 ta

phải xác định bán kính của từng hình tròn. Ta sẽ dùng biến đổi Euclidean, sau đó giá trị lớn

nhất của mảng chứa biến đổi trên chính là bán kính của hình tròn. Dựa vào bán kính ta sẽ

biết dc giá trị, sau đó xuất ra màn hình.

pdf7 trang | Chuyên mục: Xử Lý Ảnh | Chia sẻ: tuando | Lượt xem: 341 | Lượt tải: 0download
Tóm tắt nội dung Đề tài Viết chương trình xử lý ảnh để tính tiền trong máy bán hàng tự động, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Đề tài 6 : 
Viết chương trình xử lý ảnh 
để tính tiền trong máy bán 
hàng tự động 
Nhóm 1 : 
Trần Đăng Khoa 
Trần Minh Khuê 
Trần Đăng Hưng 
Mạch Y Vinh 
Mai Thế Anh 
Giải Thuật : 
Bước 1 : Chuyển hình ảnh các đồng xu trong ảnh RGB sang ảnh các mức xám (ảnh nhị 
phân) 
Bước 2 : Ta sẽ tách đường biên của ảnh, là các điểm ảnh có độ chói thay đổi đột ngột. Do 
hình ảnh khá dư sáng nên khi tách ra ta vẫn dc các đốm đen trong đồng xu. 
Bước 3: Nhiệm vụ của ta bây giờ là tách lọc bỏ hoàn toàn các đốm đen bên trong đồng xu 
và dùng hàm strel để các đồng xu là 1 hình tròn nguyên vẹn. 
Bước 4 : Để tách được hình tròn trong hình trên, ta phải đánh số thứ tự các vùng ảnh lân 
cận nhau bằng hàm Label và lưu giữ từng hình tròn trong 1 ma trận. 
Sau đây là hình ảnh tách ra của từng đồng xu : 
Bước 6 : Để xác định đồng xu nào có giá trị tương ứng với 100,200,1000,2000,5000 ta 
phải xác định bán kính của từng hình tròn. Ta sẽ dùng biến đổi Euclidean, sau đó giá trị lớn 
nhất của mảng chứa biến đổi trên chính là bán kính của hình tròn. Dựa vào bán kính ta sẽ 
biết dc giá trị, sau đó xuất ra màn hình. 
Code chương trình xử lý ảnh và cho biết giá trị của đồng xu 
close all; 
clear all; 
clc; 
fprintf('Bai tap Xu ly am thanh hinh anh \n Nhom 1 : \n Tran Dang Khoa \n Mach Y Vinh \n 
Tran Dang Hung \n Tran Minh Khue\n Mai The Anh \n') 
fprintf('\n De bai : Nhan dien gia tri cac dong xu tu hinh anh bang Matlab \n') 
% Huong dan su dung : Nhap ten duong dan file vao Matlab hoac dung hinh anh 
% co san theo vi du sau 
% vd : | Xin moi nhap vao ten file anh(dinh dang *.jpeg) :tien_xù.jpg| 
file = input('\n Xin moi nhap vao ten file anh(dinh dang *.jpeg) :','s'); %Xuat ra man hinh 
chuoi ki tu va dua du lieu vao 
I = imread(file);% Nhap hinh anh de xu ly 
I=rgb2gray(I);% Chuyen hinh anh RGB thanh anh xam 
figure;imshow(I);%Hien thi anh sau khi chuyen sang cac muc xam 
c = edge(I, 'canny',0.3); % Tach bien cua anh, voi nguong la 0.3 
figure; imshow(c); 
se = strel('disk',2); %Tao cau truc ma tran loc hinh tron 
I2 = imdilate(c,se); %Gian no anh theo cau truc cua ham strel vua tao ra 
imshow(I2); 
d2 = imfill(I2, 'holes'); % To vung trong moi dong tien 
figure, imshow(d2); 
Label=bwlabel(d2,4); %Gan nhan cho cac thanh phan co trong anh 
%Tao ma tran kich thuoc tuong ung voi moi dong xu 
a1=(Label==1); 
a2=(Label==2); 
a3=(Label==3); 
a4=(Label==4); 
a5=(Label==5); 
T=[5000 1000 200 500 2000]; 
string='Hinh %d co gia tri %d VND \n'; 
notstring='Day khong phai la dong xu co gia tri VND \n'; 
disp('Theo thu tu cac hinh hien thi o Figure, cac dong xu co gia tri la : ') 
for n = 4:8 
if (n==4) m=a1; 
elseif (n==5) m=a2; 
elseif (n==6) m=a3; 
elseif (n==7) m=a4; 
else m=a5; 
end 
k= bwdist(~m); % Tinh khoang cach Euclidean toi pixel khac 0 gan nhat 
figure, imshow(k,[]), % Hien thi anh D1 voi cac muc xam, theo nguong min max cua ma 
tran dua vao 
rad=max(max(k)); % Gia tri lon nhat cua array chinh la ban kinh duong dong xu 
% Ham xac dinh dong xu theo ban kinh 
if (rad>95)&(rad<96) 
 fprintf(string,n,T(1)) 
elseif (65<rad) & (rad<66) 
 fprintf(string,n,T(2)) 
elseif (75<rad) & (rad<76) 
 fprintf(string,n,T(3)) 
elseif (82<rad) & (rad<83) 
 fprintf(string,n,T(4)) 
elseif (86<rad) & (rad<88) 
 fprintf(string,n,T(5)) 
else 
 fprintf(notstring) 
end 
end 
Các hàm dùng trong chương trình : 
close : xóa 1 cửa sổ xác định 
close all : xóa toàn bộ cửa sổ đang thực thi hoặc ẩn 
clear: xóa không gian làm việc 
clear all: xóa toàn bộ hàm , giá trị , m flie khỏi không gian làm việc 
clc : xóa cửa sổ lệnh 
fprintf : ghi dữ liệu vào file text 
fprintf(‘A \n,B \n ... ‘) : xuất A,B ra thành từng dòng trên màn hình 
input : yêu cầu nhập dữ liệu vào và trả về dữ liệu dc nhập 
user_entry = input('prompt', 's') : giá trị đưa vào là một chuỗi kí tự chứ ko phải tên biến 
hoặc giá trị số 
imread: đọc các file ảnh 
[...] = imread(filename) : đọc file ảnh có tên filename 
rgb2gray: chuyển đổi ảnh màu RGB thành ảnh xám 
edge: tách biên của ảnh 
[g , t ] = edge(f, canny, T, sigma): Trong đó T là một vectơ, là 2 ngưỡng được giải thích 
trong bước 3 của thủ tục trước và sigma là độ lệch chuẩn của bộ lọc làm trơn. Nếu t gộp 
vào thông số ngõ ra, nó là vectơ 2 phần tử chứa 2 giá trị ngưỡng được dùng bởi thuật 
toán. Cú pháp đơn giản được giải thích như các phương pháp khác, bao gồm việc tự động 
tính toán T nếu nó không được cung cấp. Giá trị mặc định của sigma là 1 
figure : tạo 1 cửa sổ mới 
imshow : hiển thị ảnh 
imshow(c ): hiển thị ảnh xám 

File đính kèm:

  • pdfde_tai_viet_chuong_trinh_xu_ly_anh_de_tinh_tien_trong_may_ba.pdf
Tài liệu liên quan