MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 228

Nén ảnh số

207

Ví dụ 13-4. 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 (13.12).

in = imread(‘2.bmp’)

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

imshow(in),figure, imshow(out)

Ảnh gốc

Ảnh nén bằng giải thuật SVD

Hình 13.9.

Ví dụ 13-5. Một đoạn chương trình khác thực hiện nén ảnh theo giải thuật SVD:

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

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ị
riêng được giữ lại) khác nhau: