Nén ảnh số
201
Hình vẽ 13.2 minh hoạ kết quả nén ảnh bằng các biến thể khác nhau của giải thuật BTC, trong
đó hình thứ ba là kết quả áp dụng kết hợp các giải pháp trình bày ở trên – phương pháp HBTC
– VQ (Hierachical BTC with Vector Quantization – BTC phân cấp với lượng tử hoá vector).
MATLAB (Version 7.0) không cung cấp các hàm nén ảnh cụ thể. Tuy nhiên, chúng ta có thể
viết các hàm thực hiện các giải thuật nén ảnh thông dụng từ các hàm có sẵn trong MATLAB
nói chung và trong Image Processing Toolbox nói riêng. Ví dụ, sau đây là một hàm thực hiện
giải thuật nén BTC.
Trong phần phụ lục cuối quyển sách này, bạn đọc có thể tìm thấy một hàm thực hiện phép nén
ảnh theo giải thuật BTC: hàm btcode. Cú pháp của hàm này như sau:
>> out = btcode (infile,bx,by,outfile)
Trong đó
infile
là tên file ảnh gốc cần nén,
bx
,
by
là các kích thước của mỗi khối,
outfile
là tên file ảnh sau khi nén.
Ví dụ 13-1. Dùng hàm btcode để nén ảnh theo giải thuật BTC:
Sau đây là chương trình kết quả thực hiện nén ảnh peppers.tif bằng cách dùng hàm btcode:
in = imread(‘peppers.tif’)
out = btcode(‘peppers.tif’,4,4,’peppers_comp.tif’)
imshow(in)
figure, imshow(out)
Ảnh gốc
Ảnh nén
Hình 13.3.
Dung lượng file ảnh gốc là 280KB còn của ảnh nén là 214KB.
13.2. NEÙN TOÅN HAO DÖÏA VAØO DCT
Giải thuật nén có tổn hao được biết đến nhiều nhất có lẽ là giải thuật nén dùng DCT. Đây là
giải thuật được chuẩn hoá với tên gọi JPEG (lấy từ tên gọi của tổ chức đã định ra tiêu chuẩn
nén này: Joint Photographic Experts Group (Nhóm liên kết các chuyên gia xử lý ảnh). Hình
vẽ 13.4 và 13.5 mô tả sơ đồ khối của giải thuật nén và giải nén ảnh JPEG.