.22 (a) Ảnh gốc – (b) Ảnh chèn nhiễu poisson – (c) Ảnh lọc tần số từ không gian

Một phần của tài liệu Các kĩ thuật nâng cao chất lượng và nén ảnh (Trang 68 - 70)

R là số hàng và C là số cột mà ta mong muốn bộ lọc H có được. Thơng thường, ta cho R = PQ(1) và C = PQ(2).

Hình 3.22 (a) Ảnh gốc – (b) Ảnh chèn nhiễu poisson – (c) Ảnh lọc tần số từ không gian gian gian

3.2.2.6 Các kĩ thuật làm nổi đường biên ảnh

Ta sử dụng hàm edge để dò tìm biên ảnh. Cú pháp của hàm: g = edge(f, phương pháp dò tìm biên, các tham số); trong đó:

- Phương pháp Sobel tìm ra các cạnh nhờ sử dụng phép tính xấp xỉ Sobel. - Phương pháp Prewitt tìm ra các cạnh nhờ sử dụng phép tính xấp xỉ Prewitt. - Phương pháp Roberts tìm ra các cạnh nhờ sử dụng phép tính xấp xỉ Roberts. - Phương pháp log (Laplacian of Gaussian) tìm ra các cạnh nhờ tìm phần tử 0 ở các đường chéo sau khi lọc ảnh gốc bằng bộ lọc laplace của Gauss.

- Phương pháp Canny tìm ra các cạnh nhờ tìm quỹ tích lớn nhất của gradient cua ảnh gốc. Gradient được tính toán nhờ sử dụng đạo hàm của bộ lọc Gauss.

3.2.3 Nén ảnh

3.2.3.1 Nén ảnh dùng mã hóa Huffman

Mã thu gọn và việc gán mã được mô tả trong hàm huffman. Việc tạo mã Huffman khơng phải là quá trình nén ảnh. Để thấy được sự nén ảnh được xây dựng trong mã Huffman, các kí hiệu sẽ được mã hóa phải được chuyển đổi hoặc mã hóa cho phù hợp với mã được tạo ra. Ta sử dụng hàm mat2huff và huff2mat để mô tả việc mã hóa và giải mã Huffman.

Bằng cách loại bỏ dư thừa mã kết hợp với mã hóa nhị phân 8 bit thơng thường, ảnh có thể nén được 80% so với ảnh gốc (thậm chí bao gồm cả thơng tin bở sung).

3.2.3.2 Nén ảnh dùng mã dự đốn khơng tổn thất

Các hàm mat2lpc và lpc2mat thực hiện quá trình mã hóa giải mã dự đốn (trừ mã hóa kí hiệu và các bước giải mã).

Hàm Y = mat2lpc(X, F) mã hóa ma trận X sử dụng mã hóa dự đoán không tổn thất 1 chiều. Bộ dự đoán tuyến tính của X được xây dựng dựa trên các hệ số trong F.

Hàm X = lpc2mat(Y, F) giải mã hóa ma trận đầu vào Y dựa trên các hệ số dự đoán tuyến tính trong F .

3.2.3.3 Nén ảnh JPEG dùng biến đổi DCT

Hàm im2jpeg nén ảnh nhờ sử dụng một phép sấp xỉ JPEG. Y = im2jpeg(X, QUALITY) nén ảnh X dựa trên biến đổi DCT 8x8, lượng tử hóa hệ số và mã hóa kí hiệu Huffman. Đầu vào QUALITY xác định số lượng thông tin bị mất mà quá trình nén thu được. Y là một cấu trúc mã hóa:

Y.size: kích thước của X.

Y.numblocks: số khối mã hóa 8x8. Y.quality: hệ số quality.

Y.huffman: Cấu trúc mã hóa Huffman.

Hàm im2jpeg xử lí các đoạn 8x8 riêng biệt hoặc các khối của ảnh vào, mỡi khối 1 lần (đúng hơn là tồn bộ ảnh 1 lần). Hàm sử dụng các hàm blkproc và im2col để làm đơn giản hóa phép tốn.

Trong im2jpeg, hàm blkproc được sử dụng để thuận tiện cho cả phép tốn DCT và phép lượng tử hóa, và khơng chuẩn hóa hệ số, trong khi đó im2col được sử dụng để xác định hệ số lượng tử đang sắp xếp lại.

Tương tự, ta có hàm jpeg2im thực hiện chuỗi các q trình ngược cần thiết để giải nén mợt ảnh nén im2jpeg (bỏ qua lượng tử hóa). Nó sử dụng hàm:

A = col2im(B, [M N], [MM NN], ‘distinct’);

để tạo lại 1 ảnh 2D từ các cột của ma trận z, trong đó mỗi cột 64 phần tử là 1 khối 8x8 của ảnh được khôi phục lại. Các tham số A, B, [M N], và ‘distinct’ được xác định cho hàm im2col, trong khi ma trận [MM NN] xác định chiều của ảnh ra A.

Một phần của tài liệu Các kĩ thuật nâng cao chất lượng và nén ảnh (Trang 68 - 70)