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

Báo cáo bài tập lớn môn đại số tuyến tính phương pháp phân tích trị riêng

11 11 0

Đ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 đề Báo cáo bài tập lớn môn đại số tuyến tính phương pháp phân tích trị riêng
Tác giả Lê Văn Hoàng, Trần Văn Linh, Hồng Thị Nhàn, Lê Văn Vinh, Nguyễn Kim Cương, Hồ Thị Hà, Hồ Bích Liên
Người hướng dẫn ThS. Nguyễn Xuân Mỹ
Trường học Đại học quốc gia tp. Hồ Chí Minh
Chuyên ngành Đại số tuyến tính
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Đà Nẵng
Định dạng
Số trang 11
Dung lượng 184,83 KB

Nội dung

Phương pháp này có nhiều ứng dụng thực tế,một trong số đó là ứng dụng trong kỹ thuật nén ảnh.. Ma trận U là matrận gồm các vector riêng trái của A, ma trận V là ma trận gồm các vector ri

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN MÔN: ĐẠI SỐ TUYẾN TÍNH

GVHD: Trần văn quang SVTH:

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN MÔN: ĐẠI SỐ TUYẾN TÍNH

GVHD: ThS Nguyễn Xuân Mỹ SVTH:

TP HỒ CHÍ MINH, 3/2022

Trang 3

MỤC LỤC

MỤC LỤC i

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1

1.1 Phương pháp phân tích trị riêng 1

1.2 Cách tìm ma trận S, U, V 1

CHƯƠNG 2 VÍ DỤ 3

CHƯƠNG 3 ỨNG DỤNG PHÂN TÍCH SVD ĐỂ NÉN DỮ LIỆU 5

3.1 Ứng dụng phân tích SVD để nén ảnh số 5

3.2 Nội dung code 6

3.3 Giải thích code 7

Trang 4

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 Phương pháp phân tích trị riêng

Phương pháp phân tích trị riêng (SVD – Singular Value Decomposition) là một đề tài rất được quan tâm của đại số tuyến tính Phương pháp này có nhiều ứng dụng thực tế, một trong số đó là ứng dụng trong kỹ thuật nén ảnh Đặc điểm quan trọng của phương pháp này là nó có thể áp dụng cho bất kỳ ma trận thực mxn nào Nội dung của nó là:

phân tích một ma trận A cho trước thành 3 ma trận U, S, V, sao cho

trong đó U và V là các ma trận trực giao và S là ma trận đường chéo Ma trận U là ma trận gồm các vector riêng trái của A, ma trận V là ma trận gồm các vector riêng phải của A và ma trận S là ma trận đường chéo, mỗi phần tử đường chéo là một trị riêng của A Các trị riêng được sắp trên đường chéo chính theo thứ tự sau:

s1 > s2 > > sr > sr+1 = = sp = 0

với r là hạng của ma trận A và p = min{m,n}

1.2 Cách tìm ma trận S, U, V

Để tìm các ma trận S, U, V, ta thực hiện các bước như sau:

Bước 2: Tìm ma trận U Nhân hai về của (1) với AT và sử dụng: VTV = I

ta cũng có :

AAT = U.S2 UT

Trang 5

Vậy các cột của U chính là các vector riêng của A.AT Cuối cùng, ta phân tích ma trận A dưới dạng như sau:

A=(u1 … ur … um) [ σ1 ¿ ¿

¿ ¿ ¿¿σ1 ¿¿¿¿¿ ¿¿¿¿¿¿ ¿ 0 ¿] [V1

T

V r T

V n T]

A và S là các ma trận kích thước mxn, U là ma trận mxm và V là ma trận nxn

Trang 6

CHƯƠNG 2 VÍ DỤ

AA T=(17 8

9 17)

Bây giờ chúng ta tìm đúng vector đơn lẻ ( các cột của V) bằng cách tìm một trực

đó là

v1 =(1 /√2

1 /√2

A T A −9 I=( 4 12 2

2 −2 −1) hàng giảm xuống bằng (1 0 −1/4

Trang 7

Một vector độ dài đơn vị trong nhân của ma trận đó là v2 =( 1 /√18

−1 /√18

4 /√18 )

b

, điều kiện sau đó là

v2

T

−a

−2/3

−1/3)

Vì vậy tại thời điểm này chúng ta biết rằng

A =U Σ V T

0 3 0) ( 1 /√2 1 /√2 0

1 /√18 −1/√18 4 /√18

U=(1/√2 1/√2

A =U Σ V T

=(1 /√2 1 /√2

1 /√2 −1/√2) (5 0 0

0 3 0) (1 /√2 1 /√2 0

1 /√18 −1/√18 4 /√18

Trang 8

CHƯƠNG 3 ỨNG DỤNG PHÂN TÍCH SVD ĐỂ NÉN DỮ LIỆU

3.1 Ứng dụng phân tích SVD để nén ảnh số

Mục đích của việc nén ảnh số là mã hoá các dữ liệu ảnh về một dạng thu gọn, tối thiểu hoá cả số bit dùng để biểu diễn ảnh lẫn các sai khác do quá trình nén gây ra Tầm quan trọng của vấn đề nén ảnh có thể thấy rõ qua các số liệu cụ thể: với một bức ảnh trắng đen kích thước 512x512 pixels, mỗi pixel được biểu diễn bởi 8 bits (biểu diễn một trong 256 giá trị mức xám), cần khoảng 256 Kbytes dữ liệu Với ảnh màu cần gấp ba lần con số này Với các dữ liệu video, cần 25 khung hình trên một giây, như vậy một đoạn video chỉ 30s phải cần đến 540MB dữ liệu, một con số quá lớn Do đó vấn đề nén ảnh là hết sức cần thiết

Nói chung, các phương pháp nén ảnh chủ yếu được phân thành 2 nhóm: nhóm không tổn hao và nhóm có tổn hao Các phương pháp nén ảnh không tổn hao cho phép biểu diễn ảnh với chất lượng hoàn toàn ngang bằng với ảnh gốc Các phương pháp này dựa trên các giải thuật nén được áp dụng cho tất cả các đối tượng dữ liệu nói chung chứ không chỉ riêng dữ liệu ảnh, ví dụ mã Huffman, mã số học, mã Golomb, Tuy nhiên, các phương pháp này không lợi dụng được những đặc tính riêng của dữ liệu ảnh và tỷ

lệ nén rất thấp Do đó, trong thực tế, các phương pháp nén có tổn hao là các phương pháp được sử dụng chủ yếu Với các phương pháp này, luôn có sự đánh đổi giữa dung lượng ảnh với chất lượng ảnh

trận A bằng ít phần tử hơn Nếu hạng của ma trận A là r<m hoặc r<n, ta có thể giảm đi những thông tin thừa:

Hơn nữa, các trị riêng được sắp xếp theo thứ tự giảm dần, do đó những số hạng phía sau sẽ có ít ảnh hưởng đến ảnh và có thể bỏ đi các số hạng này

Trang 9

>> [U,S,V] = svd(A) Chúng ta có thể sử dụng hàm này kết hợp với phương trình (2) để viết một hàm nén ảnh dùng giải thuật SVD Ví dụ hàm svdcompr Cú pháp của nó là:

>> im = svdcompr (infile,singvals,outfile)

trong đó infile và outfile là tên các file ảnh gốc và ảnh nén, singvals là số các trị riêng lớn nhất được giữ lại

3.2 Nội dung code

close all clear all clc

%doc va chuyen doi hinh anh inImage=imread('Hinh_anh.jpg');

inImage=rgb2gray(inImage);

inImageD=double(inImage);

% phan tich hinh anh vua roi bang SVD [U,S,V]=svd(inImageD);

% Su dung cac he so k khac nhau de

% nen anh dispEr = [];

numSVals = [];

for N=5:25:300 % Luu cac gia tri singular values vao mot bien C

C = S;

% Bo cac gia tri k khong can thiet de nen anh C(N+1:end,:)=0;

C(:,N+1:end)=0;

% Tao lai anh moi su dung gia tri k moi D=U*C*V';

% bieu dien hinh anh va tinh toan loi sai

Trang 10

numSVals = [numSVals; N];

end

% bieu dien do thi figure;

title('Khac biet khi nen');

plot(numSVals, dispEr);

grid on xlabel('So gia tri Singular Values su dung');

ylabel('Su khac biet giua anh ban dau va sau khi nen');

3.3 Giải thích code

Các câu lệnh trong thuật toán được sử dụng như sau:

- close all: đóng tất cả các đồ thị

- clear all: xóa tất cả các biến, hàm, khỏi bộ nhớ Lệnh này làm cho bộ nhớ trống hoàn toàn

- clc: Xóa cửa sổ lệnh

- imread: sẽ đọc một file thành một ma trận

- rgb2gray: chuyển đổi hình ảnh RGB thành trắng đen bằng cách loại bỏ các thông tin màu sắc và độ bão hòa nhưng vẫn giữ độ sáng

- double: chuyển đổi sang số thập phân với độ chính xác kép

- [U, S, V]=sdv(A): thực hiện phân rã giá trị đơn lẻ của ma trận A, sao cho A = U * S

* V '

- figure: Tạo mới hình ảnh (đồ thị)

- sprintf: hiển thị thông tin lên màn hình

- %d: đối số là số nguyên được viết dưới dạng thập phân

- imshow: cho chúng ta một hình ảnh trong định dạng tiêu chuẩn là 8-bit, giống như trong một trình duyệt web

- sum: tính tổng

- title: đặt tiêu đề cho đồ thị

Trang 11

- plot (numSVals, dispEr): Vẽ đồ thị tuyến tính trong không gian 2 chiều (vẽ giá trị numSVals theo giá trị dispEr)

- grid on: hiển thị lưới tọa độ

- xlable, ylable: đặt tên cho trục x,y

Ngày đăng: 23/02/2024, 13:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w