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: