Biến đổi cô-sin rời rạc

Một phần của tài liệu Mathlab Cho Xu Ly Anh (Trang 61 - 65)

IV – Màu sắc 1 Bảng thuật ngữ

3. Biến đổi cô-sin rời rạc

- Biến đổi cô-sin rời rạc ( DCT ) biểu diễn một ảnh như là tổng của các hàm sin với biên độ và tần số biến đổi . Hàm dct2 tính DCT hai chiều của một ảnh . DCT có tính chất mà với các ảnh điển hình , hầu hết các thông tin có ý nghĩa về ảnh được tập trung vào các hệ số của DCT . Vì lý do này , DCT thường được sử dụng trong các ứng dụng nén ảnh . Chẳng hạn ,DCT là trung tâm của giải thuật nén ảnh theo chuẩn quốc tế thường được biết với tên JPEG ( tên này do nhóm phát triển đặt ra : Joint Photographic Experts Group ) - DCT hai chiều của ma trận A có kích thước MxN được định nghĩa như sau :

- Các giá trị Bpq được gọi là hệ số DCT của A . DCT có thể biến đổi ngược được và biến đổi ngược của nó cho bởi công thức :

- Biểu thức DCT ngược có thể được xem xét khi coi rằng mọi ma trận A kích thước MxN như là tổng của MN hàm có dạng :

- Những hàm này đựơc gọi là

những hàm cơ sở của DCT . Hệ

số DCT Bpq có thể được xem như

trọng số cho mỗi hàm cơ sở . Với

các ma trận 8x8 , 64 hàm cơ sở

Ma trận biến đổi DCT

- Toolbox xử lý ảnh sử dụng 2 cách để tính DCT . Cách thứ nhất là dùng hàm dct2 . Hàm dct2 sử dụng giải thuật dựa trên FFT để tăng tốc tính toán với các ảnh có kích thước lớn . Cách thứ hai là sử dụng ma trận biến đổi DCT . Ma trận này được trả về từ hàm dctmtx và được sử dụng hiệu quả hơn với các ảnh có kích thước nhỏ như 8x8 , 16x16 . Ma trận biến đổi MxM – T được cho bởi :

Với ma trận A có kích thước MxM , T*A là một ma trận MxM mà các cột của nó là DCT một chiều của các cột trong A . DCT hai chiều của A có thể thu được từ biểu thức : B=T*A*T’ . Do T là ma trận trực giao nên ma trận nghịch đảo của nó cũng là ma trận chuyển vị nên DCT hai chiều của B là T’*B*T

DCT và nén ảnh

- Trong giải thuật nén ảnh JPEG , ảnh vào được chia làm các khối có kích thước 8x8 hoặc 16x16 và DCT hai chiều được tính cho mỗi khối . Hệ số DCT sau đó được lượng tử hoá , mã hoá và truyền tải . Bộ nhận JPEG ( hoặc chương đọc file JPEG ) sẽ giải mã hệ số đã được lượng tử của DCT , tính DCT ngược cho mỗi khối và sau đó đặt các khối lại với nhau trong một ảnh duy nhất . Với các ảnh điển hình , nhiều hệ số DCT có giá trị gần 0 , những hệ số này có thể bị bỏ qua mà không ảnh hưởng nhiều đến chất lượng của ảnh nén

- Ví dụ sau tính DCT hai chiều của các khối 8x8 trong một ảnh , bỏ qua ( đặt bằng 0 ) tất cả ngoại trừ 10 trong số 64 hệ số DCT của mỗi khối và sau đó xây dựng lại ảnh bằng DCT hai chiều ngược của mỗi khối . Phương pháp ma trận chuyển đổi DCT được sử dụng : I = imread('cameraman.tif'); I = im2double(I); T = dctmtx(8); B = blkproc(I,[8 8],'P1*x*P2',T,T'); mask = [1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

B2 = blkproc(B,[8 8],'P1.*x',mask); I2 = blkproc(B2,[8 8],'P1*x*P2',T',T); imshow(I), figure, imshow(I2)

-

Mặc dù chất lượng của ảnh nén bị suy giảm , nó vẫn rõ nét thậm chí gần 85% hệ số DCT bị bỏ qua .

Một phần của tài liệu Mathlab Cho Xu Ly Anh (Trang 61 - 65)

Tải bản đầy đủ (DOC)

(149 trang)
w