1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn Đại số tuyến tính – mt1007 Đề tài nén Ảnh bằng phép biến Đổi haar

33 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nén Ảnh Bằng Phép Biến Đổi Haar
Tác giả Trần Trung Nghĩa, Trần Xuân Thắng, Trịnh Gia Bảo, Trương Minh Triết, Trương Thanh Thảo, Vạn Phương Hoa, Võ Lưu Thiên Phú, Võ Quang Huy, Võ Việt Chiến, Võ Xuân Ngân, Vũ Văn Hiện, Vương Thị Kim Ngân
Người hướng dẫn Ths. Nguyễn Thị Xuân Mỹ
Trường học Trường Đại học Bách Khoa, Đại học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Hệ thống Thông tin, Khoa học Máy tính
Thể loại Bài tập lớn
Năm xuất bản 2025
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 33
Dung lượng 1,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1.1 Sơ lược về thuật toán Haar (6)
  • 1.2 Tác dụng của phương pháp (7)
  • 1.3 Đôi nét về ảnh (7)
  • 2. ỨNG DỤNG PHÉP BIẾN ĐỔI HAAR TRONG NÉN ẢNH (8)
    • 2.1 Giải thích thuật toán (8)
    • 2.2 Nén mất dữ liệu (19)
    • 2.3 Nén không mất dữ liệu (20)
  • 2. Các hàm Matlab cơ bản được sử dụng trong bài toán (23)
  • 3. Giải bài toán trên Matlab (24)
    • 3.1 Đoạn code hoàn chỉnh và giải thích (24)
    • 3.2 Hình ảnh chạy thuật toán trên Matlab (26)
    • 3.3 Một số hình ảnh sau khi nén bằng biến đổi Haar (27)
  • 4. Ưu điểm và nhược điểm của nén ảnh bằng phương pháp biến đổi Haar . 28 (29)
  • 2. Kỹ năng (30)
  • 3. Kết luận (31)
  • TÀI LIỆU THAM KHẢO (0)

Nội dung

Bài báo cáo này đượcthực hiện với mục đích nghiên cứu và ứng dụng phương pháp biến đổi Haar trong lĩnhvực nén ảnh – một kỹ thuật quan trọng trong xử lý tín hiệu số và khoa học máy tính.P

Sơ lược về thuật toán Haar

Biến đổi Haar, do nhà toán học người Hungary Alfréd Haar đề xuất vào năm 1910, là một trong những phương pháp biến đổi wavelet lâu đời nhất, mang lại cách tiếp cận đơn giản và hiệu quả về mặt tính toán để phân tích các khía cạnh địa phương của tín hiệu Phương pháp này hoạt động bằng cách nhân chéo tín hiệu với các hàm wavelet Haar ở các mức độ co giãn và dịch chuyển, tương tự như cách biến đổi Fourier sử dụng sóng sinus Nhờ tính đơn giản và khả năng tính toán nhanh, biến đổi Haar được ứng dụng rộng rãi trong nén tín hiệu và hình ảnh, đặc biệt trong các lĩnh vực kỹ thuật điện và khoa học máy tính.

Thuật toán Haar hỗ trợ cả nén không mất dữ liệu và mất dữ liệu, làm cho biến đổi Haar trở thành một lựa chọn lý tưởng cho các ứng dụng yêu cầu nén ảnh nhanh chóng và hiệu quả Điều này giúp tối ưu hóa quá trình xử lý hình ảnh, đảm bảo chất lượng cao hoặc giảm dung lượng tối đa tùy theo nhu cầu của người dùng Với khả năng thích ứng đa dạng, biến đổi Haar là giải pháp phổ biến trong lĩnh vực nén ảnh hiện nay.

Tác dụng của phương pháp

Trước khi biến đổi Haar được áp dụng trong nén ảnh từ cuối thế kỷ 20, các kỹ thuật nén ảnh chủ yếu dựa vào các phương pháp đơn giản hoặc các biến đổi khác nhưng gặp nhiều hạn chế về hiệu quả, chất lượng và tính toán Tuy nhiên, sự xuất hiện của phương pháp biến đổi Haar đã giúp khắc phục nhiều vấn đề này, cải thiện đáng kể hiệu suất và chất lượng trong quá trình nén ảnh.

Nén ảnh dựa trên wavelet, trong đó biến đổi Haar là dạng cơ bản của wavelet, giúp phân tích hình ảnh thành các thành phần tần số thấp và tần số cao Các hệ số tần số cao thường nhỏ và dễ bị lượng tử hóa hoặc loại bỏ, từ đó giảm kích thước dữ liệu, giảm dung lượng bộ nhớ, đồng thời rút ngắn thời gian tải và truyền hình ảnh.

Đôi nét về ảnh

Ảnh kỹ thuật số được biểu diễn dưới dạng ma trận hai chiều gồm các điểm ảnh, trong đó ảnh đen trắng (grayscale) sử dụng giá trị từ 0 đến 1 để thể hiện độ sáng từ đen đến trắng Ảnh màu sử dụng bộ ba giá trị (R, G, B) cho mỗi pixel, giúp tái tạo màu sắc chính xác Một bức ảnh kỹ thuật số là một tập hợp số học lớn, phù hợp với các phương pháp xử lý và nén ảnh dựa trên toán học Các kỹ thuật biến đổi, nén và phục hồi ảnh thường xuyên áp dụng các khái niệm trong đại số tuyến tính để tối ưu hóa quá trình xử lý hình ảnh.

• Không gian con và cơ sở.

Biến đổi Haar có thể được áp dụng lặp lại theo nhiều cấp độ, giúp tăng cường khả năng nén dữ liệu hiệu quả hơn Nhờ đó, quá trình tái tạo ảnh gần như nguyên gốc có thể được thực hiện chính xác, giữ lại nội dung quan trọng sau khi nén Áp dụng biến đổi Haar nhiều cấp độ không những tối ưu hóa quá trình nén mà còn đảm bảo chất lượng hình ảnh khi phục hồi lại.

ỨNG DỤNG PHÉP BIẾN ĐỔI HAAR TRONG NÉN ẢNH

Giải thích thuật toán

Trong bài viết này, chúng ta sẽ tìm hiểu về hình ảnh thước xám (grayscale image), loại hình ảnh mà mỗi pixel thể hiện các sắc độ xám phụ thuộc vào cường độ sáng, với giá trị thường từ 0 (đen) đến 255 (trắng) Hình ảnh đa sắc (ảnh màu) có thể xem là sự kết hợp của nhiều lớp hình ảnh thước xám, mỗi lớp đại diện cho một kênh màu như đỏ, lục, lam Việc hiểu rõ đặc điểm của hình ảnh thước xám là nền tảng quan trọng trong xử lý ảnh kỹ thuật số, giúp tối ưu quá trình phân tích và nhận diện hình ảnh.

Khi xử lý ảnh thước xám A, ta biểu diễn nó dưới dạng ma trận kích thước m × n với các phần tử là giá trị nguyên 8-bit từ 0 đến 255, phù hợp cho các phép toán xử lý ảnh trong MATLAB Một phương pháp phổ biến là chia ma trận ảnh thành các khối con 8×8, giúp đơn giản hóa quá trình xử lý và nén ảnh Để đánh giá hiệu quả của quá trình nén, người ta sử dụng công thức tính tỉ lệ nén, phản ánh mức độ giảm kích thước dữ liệu sau khi nén ảnh.

Tỉ lệ nén = (Số lượng phần tử khác 0 trong ma trận gốc)

(Số lượng phần tử khác 0 trong ma trận sau khi nén)

Các thuật toán nén ảnh, như biến đổi Haar, dựa trên công thức tính tỉ lệ nén nhằm giảm kích thước dữ liệu bằng cách biến đổi ma trận để tạo ra càng nhiều phần tử bằng 0 càng tốt Các ma trận thưa với nhiều giá trị 0 có thể được lưu trữ hiệu quả hơn, giảm đáng kể dung lượng tệp Bằng cách áp dụng các phép biến đổi như tính trung bình và độ chênh lệch, thuật toán tạo ra các ma trận có nhiều phần tử bằng 0 hoặc gần bằng 0, giúp tối ưu hóa tỉ lệ nén mà vẫn giữ được chất lượng hình ảnh cần thiết.

Ví dụ: Dưới đây là hình ảnh thước xám512×512của nhà thờ Đức Bà Paris:

Ta có ma trận8×8từ ảnh trên:

Quá trình chuyển đổi diễn ra trong 3 bước với bước đầu tiên là nhóm theo cặp

Trong quá trình xử lý dữ liệu, ta thực hiện thay thế 4 cột đầu tiên của hàng 1 bằng giá trị của nửa tổng của chúng Đồng thời, 4 cột cuối cùng của hàng 1 được thay thế bằng nửa hiệu của các cặp giá trị này Quá trình này giúp tối ưu hóa cấu trúc dữ liệu, nâng cao hiệu quả xử lý và phân tích dữ liệu trong các thuật toán phức tạp Hàng mới sau khi thay thế được ký hiệu là r 1 h 1 = h, thể hiện rõ quá trình cập nhật dữ liệu theo phương pháp đã đề ra.

Trong bài viết, các cột đầu tiên của hàng đầu tiên gồm 4 cột chứa hệ số xấp xỉ, còn 4 cột cuối là hệ số chi tiết Tiếp theo, trong hàng mới với các giá trị như (88, 89.5) và (93, 96.5), ta thay thế 2 cột đầu bằng nửa tổng của hai cặp số và 2 cột sau bằng nửa hiệu của chúng Quá trình này giữ nguyên 4 cột cuối của hàng 1 và biểu diễn hàng mới thứ hai như r₁h₁h₂ = h Các bước này giúp tối ưu hoá dữ liệu và phân tích hệ số một cách chính xác hơn theo tiêu chuẩn SEO.

Trong quá trình xử lý dữ liệu, nhóm hai mục đầu tiên của hàng r 1 h 1 h 2 được kết hợp lại với nhau, tạo thành các giá trị mới là (88.75, 94.75) Sau đó, cột đầu tiên của hàng này được thay thế bằng nửa tổng của hai phần tử ban đầu, còn cột thứ hai được thay thế bằng nửa hiệu của cặp số đó Các cột cuối cùng vẫn giữ nguyên, gồm 6 cột Hàng mới sau cùng được ký hiệu là r 1 h 1 h 2 h 3, với công thức tính là r 1 h 1 h 2 h 3 = h.

Lặp lại quy trình này cho các hàng còn lại của A để đảm bảo tất cả dữ liệu đều được xử lý nhất quán Sau đó, thực hiện quy trình tương tự cho các cột của A, nhóm các hàng theo cùng cách với các cột để tối ưu hóa tổ chức dữ liệu Quá trình này giúp nâng cao hiệu quả phân loại và dễ dàng truy cập thông tin quan trọng Việc lặp lại đều đặn các bước này là bước quan trọng trong quản lý dữ liệu để đảm bảo tính chính xác và sẵn sàng cho các bước phân tích tiếp theo.

 Đáng chú ý là ma trận này có một số mục bằng 0 và hầu hết các mục còn lại gần bằng

0 Điều này là kết quả của sự khác biệt và thực tế là các pixel liền kề trong một hình ảnh nói chung không khác nhau nhiều.

Dưới đây là các hình ảnh có được sau mỗi bước nén:

Hình 1: Ảnh gốc Hình 2: Sau 1 bước nén

Hình 3: Sau 2 bước nén Hình 4: Sau 3 bước nén

Để tính giá trị nửa tổng và nửa hiệu cho từng cặp, bạn có thể nhân ma trận ban đầu với một ma trận đặc biệt nhằm thực hiện thao tác này một cách dễ dàng hơn Phương pháp này giúp đơn giản hóa quá trình tính toán, tiết kiệm thời gian và công sức trong các bài toán xử lý ma trận Việc nhân ma trận phù hợp sẽ tự động xác định giá trị nửa tổng và nửa hiệu, đảm bảo kết quả chính xác và hiệu quả hơn.

AH 1 tương đương với bước đầu tiên được áp dụng cho tất cả các hàng của A

AH 1 H 2 tương đương với hai bước sau đó áp dụng cho các hàng của A:

AH 1 H 2 H 3 tương đương với ba bước trên được áp dụng cho tất cả các hàng của A:

Để đơn giản hóa quy trình, chúng ta có thể nhân ba ma trận H₁, H₂, H₃ để tạo ra một ma trận biến đổi duy nhất, giúp tiết kiệm thời gian và công sức Nhờ đó, quá trình tính trung bình và lấy hiệu số có thể được thực hiện chỉ trong một bước duy nhất Ma trận H được định nghĩa là tích của ba ma trận H₁, H₂, H₃, giúp tối ưu hóa các bước xử lý dữ liệu trong quá trình biến đổi hình ảnh.

Khi đó H được gọi là ma trận chuyển đổi Haar. Để áp dụng quy trình cho các cột ta chỉ cần thực hiệnH T A, sau cùng ta có:

Các ma trận H₁, H₂, H₃ đều là ma trận không suy biến và khả nghịch Tích của các ma trận này, H = H₁ H₂ H₃, cũng là một ma trận khả nghịch, giúp đảm bảo khả năng khôi phục ma trận ban đầu Khi đặt B = Hᵗ A H, ta có thể dễ dàng phục hồi ma trận gốc một cách chính xác và hiệu quả.

Ma trận chuyển đổi Haar được thiết kế để tích hợp các đặc điểm quan trọng trong quá trình nén ảnh, giúp tối ưu hóa hiệu suất nén Nhờ vào tính chất của nó, quá trình nén ảnh trở nên nhanh chóng và hiệu quả hơn, chỉ cần thực hiện phép nhân giữa ma trận ảnh ban đầu và ma trận biến đổi Haar Điều này giúp giảm thiểu thời gian xử lý và duy trì chất lượng ảnh sau nén, phù hợp cho các ứng dụng yêu cầu xử lý nhanh và chính xác.

Phương pháp tạo ra ma trận chuyển đổi Haar: Để tạo ra ma trận chuyển đổi Haar, ta có hai phương pháp thực hiện:

*Phương pháp 1: Xây dựng các cột của H từ các hàm cơ sở Haar:

Giả sử, dữ liệu đầu vào của ta là một vectơu⃗ 1 kích thước1×N, vớiN =8

Bước 1: Xác định kích thước và số cấp độ

Số cấp độ phân tách:n=log 2 N=log 2 8=3

Bước 2: Xây dựng các vectơ cơ sở Haar

- Cấp 0 - Trung bình tổng quát: ψ0,0= [1,1,1,1,1,1,1,1]

-Cấp 1: Chia tín hiệu thành 2 nửa (0-3 và 4-7): ψ1,0 = [1,1,1,1,−1,−1,−1,−1]

-Cấp 2: Chia mỗi nửa thành 2 phần nhỏ hơn (0-1 và 2-3, 4-5 và 6-7): ψ2,0 = [1,1,−1,−1,0,0,0,0] ψ 2,1 = [0,0,0,0,1,1,−1,−1]

-Cấp 3: Chia tiếp thành các cặp điểm liền kề: ψ 3,0 = [1,−1,0,0,0,0,0,0], ψ 3,1 = [0,0,1,−1,0,0,0,0], v.v.

Bước 3: Tạo ma trận H 1 Đặt các vectơ cơ sở làm cột của H:

Cuối cùng, để có dữ liệu sau khi nén, ta áp dụng:

Ma trận chuyển đổi Haar hiện tại có một nhược điểm quan trọng: các cột của ma trận này là trực giao nhưng không phải là trực chuẩn, nghĩa là độ dài của mỗi cột không bằng 1 Điều này khiến dữ liệu sau khi biến đổi không còn cùng độ dài với dữ liệu ban đầu, dẫn đến ∥−−−−→u sau nén ∥ ̸= ∥⃗u 1 ∥ Tức là phép biến đổi không bảo toàn độ lớn của vectơ, gây ra hiện tượng méo mó và giả trong kết quả biến đổi Đây là vấn đề cần xem xét để cải thiện độ chính xác của kỹ thuật biến đổi Haar trong xử lý dữ liệu.

Những méo mó này có thể được nhìn thấy trong ví dụ dưới đây:

Hình ảnh gốc (tỉ lệ nén 1:1)

Hình sau khi nén: Chưa chuẩn hóa và đã chuẩn hóa (tỉ lệ nén 2.93:1)

Mặc dù cả hai hình ảnh đều có tỷ lệ nén khoảng 2.93:1, nhưng hình ảnh bên phải trông gần giống hình gốc hơn so với hình ảnh bên trái Để cải thiện kết quả của phép biến đổi Haar, cần đảm bảo ma trận chuyển đổi không chỉ trực giao mà còn trực chuẩn, tránh hiện tượng méo mó và giả trong hình ảnh sau biến đổi Một cách khắc phục là chia mỗi cột cơ sở của ma trận H cho độ dài của chính nó, giúp duy trì tính trực chuẩn và đảm bảo chất lượng hình ảnh sau xử lý.

*Phương pháp 2: Xây dựng các hàng của H từ các hàm cơ sở Haar:

Giả sử, dữ liệu đầu vào của ta là một vectơu⃗ 1 kích thướcN×N

Bước 1:Xác địnhN của Haar (N=2 x )

Bước 3:Tìm p,q: i.0≤ p≤n−1 ii Nếu p=0thìq=0hoặcq=1 iii Nếu p̸=0thì1≤q≤2p

Bước 4:Tìmk=2 p +q−1(klà tổng các hàng p,q)

Bước 6:Hàm cơ bản của Haar hk(z)là các hàng củaH (klà hàngk th )

Ví dụ minh họa: Xác định ma trận chuyển đổi Haar(2×2)

2 nếu0.5≤z

Ngày đăng: 25/05/2025, 15:51

HÌNH ẢNH LIÊN QUAN

Hình 1: Ảnh gốc Hình 2: Sau 1 bước nén - Bài tập lớn Đại số tuyến tính – mt1007 Đề tài nén Ảnh bằng phép biến Đổi haar
Hình 1 Ảnh gốc Hình 2: Sau 1 bước nén (Trang 11)
Hình 3: Sau 2 bước nén Hình 4: Sau 3 bước nén - Bài tập lớn Đại số tuyến tính – mt1007 Đề tài nén Ảnh bằng phép biến Đổi haar
Hình 3 Sau 2 bước nén Hình 4: Sau 3 bước nén (Trang 11)
Hình ảnh gốc (tỉ lệ nén 1:1) - Bài tập lớn Đại số tuyến tính – mt1007 Đề tài nén Ảnh bằng phép biến Đổi haar
nh ảnh gốc (tỉ lệ nén 1:1) (Trang 16)
Hình sau khi nén: Chưa chuẩn hóa và đã chuẩn hóa (tỉ lệ nén 2.93:1) - Bài tập lớn Đại số tuyến tính – mt1007 Đề tài nén Ảnh bằng phép biến Đổi haar
Hình sau khi nén: Chưa chuẩn hóa và đã chuẩn hóa (tỉ lệ nén 2.93:1) (Trang 17)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w