1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo tiểu luận môn matlab chủ Đề tìm hiểu nén ảnh bằng giải thuật phân tích giá trị riêng

12 1 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 đề Tìm Hiểu Nén Ảnh Bằng Giải Thuật Phân Tích Giá Trị Riêng
Tác giả Vũ Đình Cường, Hoàng Quang Vinh, Nguyễn Bùi Bảo, Nguyễn Công Trình, Đinh Lương Bình
Người hướng dẫn Th.s. Vũ Thúy Hằng
Trường học Đại học Thái Nguyên
Chuyên ngành Kỹ thuật Y sinh
Thể loại báo cáo tiểu luận
Năm xuất bản 2016
Thành phố Thái Nguyên
Định dạng
Số trang 12
Dung lượng 1,27 MB

Nội dung

MỞ ĐẦUMụ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

Trang 1

ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG

-

BÁO CÁO TIỂU LUẬN MÔN: MATLAB

Chủ đề:

TÌM HIỂU NÉN ẢNH BẰNG GIẢI THUẬT PHÂN TÍCH GIÁ TRỊ RIÊNG

Giảng viên: Th.s Vũ Thúy Hằng

Sinh viên thực hiện:

1 Vũ Đình Cường

2 Hoàng Quang Vinh

3 Nguyễn Bùi Bảo

4 Nguyễn Công Trình

5 Đinh Lương Bình

Lớp : Kỹ thuật Y sinh

Khóa: 13

Thái Nguyên, tháng 10, năm 2016

1

Trang 2

MỞ ĐẦU

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 frames 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

2

Trang 3

PHƯƠNG PHÁP PHÂN TÍCH GIÁ TRỊ RIÊNG

(SVD)

I, Cơ sở lý thuyết

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 m x n 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:

A = USV T (4.1) 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 > s > > s > s 2 r r +1 = = s p

= 0

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

Trang 4

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

Bước 1: Tìm ma trận V Nhân T A vào hai vế của (4.1), ta có:

A T A = (USV ) USV = V.S U U.S.V T T T T T T

= V.S S.V T T = V.S 2 V T

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

ta cũng có :

AA T = U.S U 2 T

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

A=(u 1 … u … u ) r m r V T r

… …

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 5

II Ứng dụng SVD để nén ảnh số.

thể biểu diễn xấp xỉ ma 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:

1 + s 2 2 v T

2 + … + s r r v T

r + r+1 u r+1 v T

r+1 + … (4.2)

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

MATLAB có hàm svd để thực hiện nhân tử hoá ma trận A thành

>> [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 (4.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à:

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

Trang 6

Ta có hàm svdcompr()m:

function [im] = svdcompr (infile,singvals,outfile)

% IMCOMPR (infile,singvals,outfile)

% Image compression based on Singular Value Decomposition

% Written by Luigi Rosa – L’Aquila - Italia

% infile is input file name present in the current directory

% singvals is the number of largest singular values (positive integer)

% outfile is output file name which will be created

% Compression ratio is equal to k(n+m+k) / n*m

% where k is the number of singular values (singvals)

% and [n,m]=size(input_image)

%*****************************************************

if (exist(infile)==2)

a = imread(infile);

figure('Name','Input image');

imshow(a);

else

warndlg('The file does not exist.',' Warning ');

Trang 7

im=[];

return

end

if isrgb(a)

if isa(a(:,:,1),'uint8')

red = double(a(:,:,1));

green = double(a(:,:,2));

blue = double(a(:,:,3));

[u,s,v] = svds(red, singvals);

imred = uint8(u * s * transpose(v)); [u,s,v] = svds(green, singvals); imgreen = uint8(u * s * transpose(v)); [u,s,v] = svds(blue, singvals);

imblue = uint8(u * s * transpose(v)); im(:,:,1) = imred;

im(:,:,2) = imgreen;

im(:,:,3) = imblue;

imwrite(im, outfile);

figure('Name','Output image'); imshow(im);

return;

end

if isa(a(:,:,1),'uint16')

red = double(a(:,:,1));

green = double(a(:,:,2));

blue = double(a(:,:,3));

[u,s,v] = svds(red, singvals);

imred = uint16(u * s * transpose(v)); [u,s,v] = svds(green, singvals); imgreen = uint16(u * s * transpose(v)); [u,s,v] = svds(blue, singvals);

imblue = uint16(u * s * transpose(v)); im(:,:,1) = imred;

Trang 8

im(:,:,2) = imgreen;

im(:,:,3) = imblue;

imwrite(im, outfile);

figure('Name','Output image'); imshow(im);

return;

end

if isa(a(:,:,1),'double')

red = double(a(:,:,1));

green = double(a(:,:,2));

blue = double(a(:,:,3));

[u,s,v] = svds(red, singvals); imred = (u * s * transpose(v)); [u,s,v] = svds(green, singvals); imgreen = (u * s * transpose(v)); [u,s,v] = svds(blue, singvals); imblue = (u * s * transpose(v)); im(:,:,1) = imred;

im(:,:,2) = imgreen;

im(:,:,3) = imblue;

imwrite(im, outfile);

figure('Name','Output image'); imshow(im);

return;

end

end

if isgray(a)

dvalue=double(a);

[u,s,v] = svds(dvalue, singvals);

if isa(a,'uint8')

im = uint8(u * s * transpose(v)); end

if isa(a,'uint16')

im = uint16(u * s * transpose(v)); end

if isa(a,'double')

im = (u * s * transpose(v)); end

imwrite(im, outfile);

figure('Name','Output image');

imshow(im);

return;

end

Trang 9

III Ví dụm:

1 Ví dụ 1m:

Thực hiện giải thuật nén SVD dùng hàm svdcompr: Trong ví

dụ này ta chỉ giữ lại 30 số hạng đầu tiên trong phương trình (4.2)

in = imread(‘2.bmp’) ;

out=svdcompr(‘2.bmp’,30,’svd.bmp’);

imshow(in),figure, imshow(out);

Trang 10

2 Ví dụ 2:

close all

[A,map]=imread(‘lena.gif’); B=im2double(A,’indexed’); imshow(B,map)

[u,s,v]=svd(B);

C=zeros(size(B));

for j=1:k

Trang 11

C=C+s(j,j)*u(:,j)*v(:,j).’;

end

C=floor(C);

imshow(C,map)

k=find(C<1);

C(k)=1;

set(gcf,’Unit’,’inches’,’Paperposition’,[0,0,2,1])

print -djpeg ’lenak.jpg’

Dưới đây là kết quả của đoạn chương trình trên với các giá trị k (số vòng lặp, cũng là số trị b riêng được giữ lại) khác nhau:

Trang 12

Hình 4.10.

Trong hình vẽ 4.9, hình b ứng với số trị riêng giữ lại là 5, ảnh này tiết kiệm được 99,9% dung lượng so với ảnh gốc nhưng chất lượng kém, chỉ thấy được dạng ảnh mà không thấy rõ các chi tiết Nếu giữ lại 60 trị riêng lớn nhất, chất lượng ảnh đã đạt gần với ảnh gốc (hình e) và ta tiết kiệm được khoảng 84% dung lượng Khi tăng số lần lặp lên 100, chất lượng ảnh rất tốt (hình f) mà vẫn tiết kiệm được 55% so với ảnh gốc

Ngày đăng: 19/12/2024, 16:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w