
Hướng dẫn đọc và hiện thị hình ản trong Matlab
Trong bài viết trước chúng ta đã làm quen về ảnh số như là có những loại ảnh nào, cấu tạo của một hình ảnh cũng như ta đã học cách đọc và hiện thị ảnh trên cửa sổ Command Window của phần mền Matlab rồi.

Trong bài học hôm nay tôi và bạn cùng tìm hiểu một số câu lệnh giúp bạn có thể thao tác được với bức ảnh của mình. Cũng như ta sẽ làm một ví dụ để bạn không có cảm giác nhàn chán cứng như việc học của chúng ta trở nên hiệu quả hơn.
1. Một số lệnh cơ bản xử lý ảnh
a. Tạo 1 dialog box
uigetfile
Bạn nhận được một kết quả như hình dưới. Nó cho phép bạn lựa chọn các file nào đó bạn muốn.

Nếu bạn muốn cho người dùng chỉ chọn được các file có đuôi nào đó thì bạn có thể thực hiện câu sau:
[filename, pathname] = uigetfile( ... {'*.m;*.fig;*.mat;*.mdl', 'All MATLAB Files (*.m, *.fig, *.mat, *.mdl)'; ... '*.*', 'All Files (*.*)'}, ... 'vutienblog.com')
Trong đó:
- filename: Là giá trị trả về bạn nhận được khi bạn click vào file nào đó (Trả về tên file)
- pathname: Trả về đường dẫn tới file đó
- ‘*.m;*.fig;*.mat;*.mdl’: Là các định dạng có đuôi bạn quy định sẵ mà bạn cho phép người dùng chọn
- vutienblog.com: Là tên gợi ý cho người dùng chọn file. Bạn có thể viết tên gì cũng được. (Nó sẽ hiện thị trên cùng bên trái của dialog box)

b. Nối 2 chuỗi lại với nhau
result = strcat(str1, str2);
Trong đó:
- strcat(): Nối chuỗi
- str1: Chuỗi 1
- str2: Chuỗi 2
- result: Kết quả trả về của 2 chuỗi đó được nối với nhau
Ví dụ như sau:
>> result = strcat('VuTienIT', '.Com'); >> result result = vutienblog.com
c. Hiện thị thông tin bức ảnh
thongTinAnh = imfinfo(duongDanTuyetDoiAnh);
Trong đó:
- imfinfo: Đọc thông tin hình ảnh
- duongDanTuyetDoiAnh: Là đường dẫn tới hình ảnh đó

Để có thể truy cập được vào thuộc tính nào đó của bức ảnh. Ví dụ bạn muốn lấy giá trị Width của bức ảnh chẳng hạn. Thì bạn chỉ cần gõ lệnh sau.
thongTinAnh.Width
Trong đó:
- thongTinAnh: Là giá trị trả về của biến imfinfo();
- Width: Là thuộc tính của bức ảnh bạn muốn lấy
>> thongTinAnh.Width ans = 600
Bạn có thể gán giá trị trả về vào một biến nào đó sau đó dùng biến đó làm một nhiệm vụ mà bạn mong muốn.
Như bạn thấy thì hàm imfinfo sẽ cho bạn biết được rất nhiều thông tin của bức ảnh đó như là Ngày tháng bức ảnh sửa lần cuối, kích thước, định dạng, … Bạn có thể tìm hiểu hàm này qua lệnh dưới đây để biết thông tin chi tiết cũng như giá trị trả về của hàm này
help imfinfo
2. Bài tập mở một hình ảnh nên trong Gui
Tôi và bạn cùng làm một ví dụ nhỏ dưới đây để bạn có thể hiểu rõ hơn các vấn đề mà ta đa học bên trên.
Như hình dưới thì tôi có tạo ra Push Button có string là Mo File Anh. Và một axes để hiện thị hình ảnh. Chắc hẳn thì giao diện này cũng không quá khó khăn đối với bạn đúng không? Cho nên tôi xin phép không hướng dẫn cách tạo giao diện để không làm mất thời gian của bạn.

Ok bây giờ bạn hãy mở Function của Push Button và tiến hành gõ đoạn code dưới đây.
[tenAnh, duongDanAnh] = uigetfile( ... {'*.jpg;*.png;*.bmp;*.jpeg;*.tif', 'All MATLAB Files (*.jpg, *.png, *.bmp, *.jpeg, *.tif)'; ... '*.*', 'All Files (*.*)'}, ... 'Chon Hinh Anh De Mo'); full = strcat(duongDanAnh, tenAnh); hinhAnh = imread(full); imshow(hinhAnh);
Trong đó:
- imread: Đọc Ảnh
- imshow: Hiện thị ảnh. Nếu bạn không biết 2 câu lệnh này thì bạn hãy quay lại xem bài 1 tôi đã nói rồi.
- Ở đây vì ta chỉ cho người dùng lựa chọn hình ảnh nên ta để các định dạng có đuôi là jpg, png, bmp, jpeg, tif. Bạn nhớ phải để ký tự *. ở đằng trước của mỗi định dạng. Như vậy Matlab mới hiểu được.
- tenAnh, duongDanAnh: Là 2 biến được trả về khi sử dụng hàm uigetfile. Sau đó ta nối 2 biến này lại với nhau ta được 1 đường dẫn hoàn chỉnh tới file đó.
Bạn hãy chạy thử trương trình nên xem kết quả như thế nào nhé.

Tổng Kết:
Như vậy tôi và bạn đã cùng nhau học cách hiện thị bức ảnh nào đó nên Gui và học thêm được một số câu lệnh hỗ trợ việc lấy thông tin ảnh cũng như đọc hiện thị ảnh. Trong bài viết sau chúng ta cùng nhau tìm hiểu thêm một số câu lệnh để sử lý ảnh trong Matlab. Hi vọng bài viết này sẽ giúp ích cho bạn! Chúc bạn thành công!
Chào bạn ! Bạn cho mình hỏi nếu mình muốn mở 2 hình ảnh dùng 2 axes nhưng ảnh nó luôn hiển thị ở axes 2 nhưng mình muốn nó hiển thị ở axes 1 thì làm thế nào nhỉ ?