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

Một phần của tài liệu Tài liệu Mathlab - Xử lý ảnh pptx (Trang 62 - 66)

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 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 Tài liệu Mathlab - Xử lý ảnh pptx (Trang 62 - 66)