Cơ bản về xử lý ảnh số
152
mục đích giúp đỡ người sử dụng trong việc chuyển kiểu nói trên, MATLAB cung cấp sẵn các
hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao gồm: im2double, im2uint8, và
im2uint16
.
Cú pháp của các hàm này rất đơn giản, chỉ cần nhập vào ma trận ảnh cần chuyển
kiểu, riêng với ảnh indexed cần thêm vào chuỗi
‘indexed’
.
Tuy nhiên, khi thực hiện chuyển đổi giữa các kiểu dữ liệu cẩn lưu ý một số vấn đề như sau:
Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng ít bit hơn, ví dụ
từ uint16 sang uint8, một số thông tin chi tiết về bức ảnh ban đầu sẽ bị mất đi. Nói chung sự
mất mát này vẫn chấp nhận được vì 256 vẫn lớn hơn số mức xám tối đa mà mắt người có thể
phân biệt được. Tuy nhiên nếu cần những ảnh có chất lượng cao thì cũng nên lưu ý sự mất
mát này.
Không phải lúc nào cũng có thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh indexed, vì các
giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ không phải là giá trị màu,
do đó không thể lượng tử hoá được. Ví dụ, ta không thể chuyển một ảnh indexed kiểu
double
với ma trận màu có 300 màu thành kiểu
uint8
vì kiểu dữ liệu này chỉ có 256 giá trị.
Muốn chuyển được, đầu tiên ta phải dùng hàm imapprox để giảm số màu cần để biểu diễn
ảnh xuống (bằng cách ghép các màu gần giống nhau lại thành một màu) rồi mới chuyển.
Bảng 11.2.
Các thông tin có được khi gọi hàm imfinfo
Tên thuộc tính
Mô tả
Filename
Chuỗi chứa tên file
FileModDate
Chuỗi cho biết ngày hiệu chỉnh file gần đây nhất
FileSize
Một số nguyên chỉ kích thước file (đơn vị byte)
Format
Chuỗi cho biết định dạng của ảnh
FormatVersion
Chuỗi hoặc số cho biết tên phiên bản của định dạng
Width
Số nguyên chỉ chiều rộng ảnh (pixels)
Height
Số nguyên chỉ chiều cao ảnh (pixels)
BitDepth
Số nguyên cho biết số bits trên một pixel
ColorType
Chuỗi cho biết kiểu ảnh: ‘truecolor’, ‘grayscale’ hoặc ‘indexed’
11.1.4. CAÙC PHEÙP TOAÙN SOÁ HOÏC CÔ BAÛN ÑOÁI VÔÙI DÖÕ LIEÄU AÛNH
Các phép toán số học cơ bản trên các dữ liệu ảnh bao gồm các phép cộng, trừ, nhân và chia.
Đây là những thao tác xử lý ảnh cơ bản trước khi thực hiện các biến đổi phức tạp khác. Người
sử dụng có thể dùng các phép toán số học mà MATLAB cung cấp để tác động lên dữ liệu ảnh.
Tuy nhiên, do MATLAB chỉ hỗ trợ các phép toán này trên kiểu
double
nên cần thực hiện
chuyển đổi kiểu trước khi thực hiện. Để làm giảm bớt thao tác này, trong MATLAB Image
Processing Toolbox có cung cấp các hàm thực hiện các phép toán số học trên ảnh mà có thể
chấp nhận bất kỳ kiểu dữ liệu ảnh nào và trả về kết quả thuộc cùng kiểu với các toán hạng.
Các hàm này cũng xử lý các dữ liệu tràn một cách tự dộng. Dưới đây là danh sách các hàm
thực hiện các phép toán số học cơ bản trên ảnh cùng với cú pháp tương ứng: