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

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.