Professional Documents
Culture Documents
BÀI 2 THÔNG TIN SỐ
BÀI 2 THÔNG TIN SỐ
BÀI TẬP 2
Nhóm 18N39
Đề bài: Thực hiện mã hoá nén trang tài liệu quét TestRLC.bmp và TestFax.bmp dùng kỹ
thuật mã hóa RLC. Cho biết trước số điểm ảnh trên một dòng quét tài liệu. Tính tỉ lệ nén.
Giải mã. Nhận xét.
clc;
im=imread('TestRLC.bmp');
subplot(1,2,1)
imshow(im)
title('Anh goc');
%Ma Hoa
SoBitSauKhiNen=0;
KyTuMaHoa=[];
ChieuDaiKyTu=[];
mahoa=[];
for i=1:250
x=im(i,:);
DemLap=[];
KyTuLap=[];
a=1;
KyTuLap(a)=x(1);
DemLap(a)=1;
count=1;
for j=2:250
if x(j)==x(j-1)
DemLap(a)=DemLap(a)+1;
else
a=a+1;
KyTuLap(a)=im(i,j);
DemLap(a)=1;
count=count+1;
end
end
display(DemLap);
display(KyTuLap);
mahoa=KyTuLap;
for j=1:length(KyTuLap)
if mahoa(j)==1
mahoa(j)=255;
end
end
SoBitSauKhiNen = SoBitSauKhiNen + count*8*2;
SoBitSauKhiNen=0;
KyTuMaHoa=[];
ChieuDaiKyTu=[];
for i=1:250
x=im(i,:);
DemLap=[];
KyTuLap=[];
a=1;
KyTuLap(a)=x(1);
DemLap(a)=1;
count=1;
for j=2:250
if x(j)==x(j-1)
DemLap(a)=DemLap(a)+1;
else
a=a+1;
KyTuLap(a)=im(i,j);
DemLap(a)=1;
count=count+1;
end
end
display(DemLap)
display(KyTuLap)
SoBitSauKhiNen = SoBitSauKhiNen + count*8*2;
KyTuMaHoa = [KyTuMaHoa KyTuLap];
ChieuDaiKyTu = [ChieuDaiKyTu DemLap];
display([dec2bin(DemLap,8),dec2bin(KyTuLap,8)]);
end
%Giai Ma
x=[];
MaTranGiaiMa=zeros(250,250);
for a=1:length(ChieuDaiKyTu)
x=[x KyTuMaHoa(a)*ones(1,ChieuDaiKyTu(a))];
end
count=1;
for i=1:250
for j=1:250
MaTranGiaiMa(i,j)= x(count);
count=count+1;
end
end
kq=0;
if im==MaTranGiaiMa
kq=1;
end
fprintf('Kiem tra xem day có phai nen khong ton hao hay
khong?\n');
if kq==0
fprintf('Nen co ton hao\n');
else
fprintf('Nen khong ton hao\n');
end
TyLeNenFax=(64078/(SoBitSauKhiNen/8));
fprintf('\nTy Le Nen Fax :%.4f\n\n',TyLeNenFax);
subplot(1,2,2)
imshow(MaTranGiaiMa)
title('Anh sau giai ma');
Nhận xét:
- Tỉ lệ nén của ảnh Fax cao hơn tỉ lệ nén của ảnh RLC.Vì RLC chỉ có 1 bit nên tỉ số
nén không được nhiều.
- Sau khi giải nén, file giải nén vẫn giữ nguyên được chất lượng so với file gốc,