MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 172

Cơ bản về xử lý ảnh số

151

>> [X,map] = imread(filename,fmt)

Trong đó: filename là chuỗi xác định tên file cần đọc cùng với đường dẫn (nếu file này
không nằm trong thư mục hiện hành.

fmt là chuỗi cho biết định dạng của ảnh, thí dụ

‘bmp’, ‘gif’, ‘jpg’, ...

Ngoài ra, hàm imread còn có thêm một số thông số khác tuỳ vào từng định dạng ảnh cụ thể.
Gõ lệnh help ở cửa sổ lệnh của MATLAB để biết về các thông số này.
MATLAB hỗ trợ cả một số định dạng ảnh có thể chứa nhiều ảnh như HDF, TIFF hay GIF.
Trong trường hợp mặc định, hàm imread chỉ đọc ảnh đầu tiên trong các ảnh này. Tuy nhiên, ta
có thể cung cấp thêm một thông số là chỉ số của ảnh cần đọc trong dãy như trong ví dụ sau
đây.
Ví dụ 11-1. Đọc một chuỗi 27 ảnh liên tiếp trong một file TIFF và lưu vào một dãy 4
chiều:

mri = uint8(zeros(128,128,1,27)); % khởi tạo một dãy 4 chiều

for frame=1:27

[mri(:,:,:,frame),map] = imread('mri.tif',frame);

end

ƒ Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong MATLAB thành
một file ảnh dưới một trong các định dạng ảnh đã biết. Cú pháp cơ bản của hàm này như sau:

>> imwrite (A, filename, fmt)

>> imwrite (X, map, filename, fmt)

>> imwrite (..., param1, val1, param2, val2, ...)

Có thể bỏ qua thông số fmt nếu trong chuỗi filename có cả phẩn mở rộng (sau dấu chấm). Tuỳ
thuộc vào định dạng ảnh cần lưu, ta cung cấp thêm tên các thông số param1, param2, ... cùng
với giá trị tương ứng của chúng. Ví dụ, lệnh sau đây thực hiện ghi vào file mypicture.jpg với
chất lượng nén là 100:

>> imwrite(A, ‘mypicture.jpg’, ‘Quality’, 100)

Để kiểm chứng xem các thông số mà chúng ta đã xác định trong hàm imwrite có được thực
hiện đúng hay không, hoặc để xem các thông số của một file ảnh nào đó, ta có thể dùng hàm
imfinfo

:

>> info = imfinfo(filename,fmt)

Ví dụ:

>> info = imfinfo('test.tif');

>> info.BitDepth

ans =

1

Các thông tin mà hàm này cung cấp được liệt kê trong bảng 11.2.

11.1.3. CHUYEÅN ÑOÅI GIÖÕA CAÙC KIEÅU DÖÕ LIEÄU
Chúng ta có thể chuyển đổi giữa các kiểu dữ liệu

uint8

,

uint16

double

nhờ sử dụng các

hàm chuyển kiểu của MATLAB mà ta đã biết như hàm double, uint8, uint16, nhưng việc
chuyển kiểu như vậy có thể không phù hợp với cách biểu diễn ảnh trong MATLAB, do đó sau
khi chuyển kiểu phải dịch thang độ hoặc offset thì mới trở thành dữ liệu ảnh hợp lệ. Nhằm

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.