Professional Documents
Culture Documents
1) Lý thuyết.
a) Lấy mẫu.
- Lấy mẫu: phân chia không gian ảnh ra thành lưới các ô vuông.
- Độ phân giải: số lượng điểm ảnh trong bức ảnh. Độ phân giải
thấp và không chính xác, phân giải cao và chậm thuật toán và
lãng phí bộ nhớ.
b) Lượng tử hóa.
- Lượng tử hóa: rời rạc hóa giá trị của điểm ảnh.
- Số mức lượng tử hóa: ảnh hưởng đến số lượng bit dùng để biểu
diễn mỗi điểm ảnh và bị chi phối bởi các giới hạn về phần cứng.
2) Bài tập.
* Bài 1A *
a) Nội dung: Ảnh hưởng của lượng tử hoá đến chất lượng ảnh
xám.
- Cho bức ảnh xám Test.bmp.
- Thay đổi số mức lượng tử hoá trên ảnh này.
- Quan sát ảnh, so sánh, đánh giá chất lượng ảnh và dung lượng
ảnh, rút ra nhận xét.
- Từ đó chọn ra số mức lượng tử hoá tối ưu.
- Chụp ảnh cả nhóm, chuyển về ảnh xám và thực hiện lại các
yêu cầu trên.
b) Code matlab.
*Với file Test.bmp
1- img = imread('Test.bmp');
2- subplot(2,4,1);
3- imshow(img);
4- title(‘2048x2048’);
5- subplot(2,4,2);
7- imshow(img2);
8- title(‘1024x1024’);
9- subplot(2,4,3);
11- imshow(img3);
12- title(‘512x512’) ;
13- subplot(2,4,4);
15- imshow(img4);
16- title(‘256x256’) ;
17- subplot(2,4,5);
19- imshow(img5);
20- title(‘128x128');
21- subplot(2,4,6);
23- imshow(img6);
24- title(’64x64');
25- subplot(2,4,7);
27- imshow(img7);
28- title(’32x32');
29- subplot(2,4,8);
31- imshow(img8);
32- title(’16x16');
-Kết quả.
-Nhận xét.
• Độ phân giải càng cao thì ảnh càng rõ, mượt mà hơn và
ngược lại.
• Độ phân giải 2048x2048 cho ảnh rõ nét nhất, độ phân giải
16x16 cho ảnh bị vỡ, không rõ nét.
• Độ phân giải càng cao thì càng tốn dung lượng , tốn không
gian lưu trữ (ví dụ: ban đầu bức ảnh có dung lượng là
12MB, với mức lượng tử hóa là 2048x2048 thì dung lượng
là 14MB, còn với mức lượng tử hóa là 16x16 thì dung
lương là 16kB.
• Tần số lấy mẫu tối ưu là 8, ta chọn ảnh 256x256, vì khi
nhìn qua bức ảnh ta có thể biết được nội dung và tốn ít
dung lượng hơn khoảng 410kB.
*Với file ảnh nhóm.
1- img = imread('anhnhom15.bmp’);
2- gray = rgb2gray(img);
3- figure
4- subplot(2,4,1);
5- imshow(gray);
6- title(‘2048x2048’)
7- subplot(2,4,2);
9- imshow(gray1);
10- title(‘1024x1024’)
11- subplot(2,4,3);
13- imshow(gray2);
14- title(‘512x512’)
15- subplot(2,4,4);
17- imshow(gray3);
18- title(‘256x256’)
19- subplot(2,4,5);
21- imshow(gray4);
22- title(‘128x128’);
23- subplot(2,4,6);
25- imshow(gray5);
26- title(‘64x64’);
27- subplot(2,4,7);
29- imshow(gray6);
30- title(‘32x32’);
31- subplot(2,4,8);
33- imshow(gray7);
34- title(‘16x16');
-Kết quả
-Nhận xét.
• Độ phân giải càng cao thì ảnh càng rõ, mượt mà hơn và
ngược lại.
• Độ phân giải 2048x2048 cho ảnh rõ nét nhất, độ phân giải
16x16 cho ảnh bị vỡ, không rõ nét.
• Độ phân giải càng cao thì càng tốn dung lượng , tốn không
gian lưu trữ (ví dụ: ban đầu bức ảnh có dung lượng là 8MB,
với mức lượng tử hóa là 2048x2048 thì dung lượng là
8MB, còn với mức lượng tử hóa là 16x16 thì dung lương là
18kb.
• Tần số lấy mẫu tối ưu là 8, ta chọn ảnh 256x256, vì khi
nhìn qua bức ảnh ta có thể biết được nội dung và tốn ít
dung lượng hơn khoảng 263kB.
* Bài 1B *
a) Nội dung: Ảnh hưởng của lượng tử hoá đến chất lượng ảnh
xám
- Yêu cầu: Cho bức ảnh xám Test.bmp
- Thay đổi số mức lượng tử hoá trên ảnh này.
-Quan sát ảnh, so sánh, đánh giá chất lượng ảnh và dung lượng
ảnh, rút ra nhận xét.
-Từ đó chọn ra số mức lượng tử hoá tối ưu.
-Chụp ảnh cả nhóm, chuyển về ảnh xám và thực hiện lại các yêu
cầu trên.
b) Code matlab.
*Với bức ảnh Test.bmp
1- x = imread('Test.bmp’);
2- imshow(x);
3- b = [0 1 2 3 4 5 6 7 8];
4- for i = 1 : length(b);
5- d = 2^b(i);
6- z = floor(x/d);
7- title([num2str(10-i),'bit']);
8- subplot(2,4,i);
9- imshow(z*d)
10- end
-Kết quả.
-Nhận xét
• Chất lượng ảnh và màu sắc giảm dần từ 8 bit về 1 bit.
• Với 8 bit thì có 256 cấp độ màu sắc và tông màu, cho nên
ta thấy ảnh qua biến đổi như ảnh gốc.
• Tương tự, giảm số bit thì số cấp độ màu sắc và tông màu sẽ
giảm đi nên màu sắc của ảnh sẽ bị biến đổi. Đến 1 bit thì
chỉ còn lại 2^1 = 2 màu, đó là màu trắng và đen.
• Số bit càng lớn thì không gian để lưu trữ lớn hơn(ví dụ: ban
đầu ảnh có dung lượng là 12MB, sau khi thay đổi mức
lượng tử hóa với 8 bit thì dung lượng là 14MB còn 1 bit là
300kB.
• Quan sát ảnh thì ta thấy lượng tử hoá 4 bit là tối ưu, vì màu
sắc chưa bị thay đổi nhiều, và có dung lượng vừa phải
khoảng 1.5MB.
-Nhận xét.
• Chất lượng ảnh và màu sắc giảm dần từ 8 bit về 1 bit.
• Với 8 bit thì có 256 cấp độ màu sắc và tông màu, cho nên
ta thấy ảnh qua biến đổi như ảnh gốc.
• Tương tự, giảm số bit thì số cấp độ màu sắc và tông màu sẽ
giảm đi nên màu sắc của ảnh sẽ bị biến đổi. Đến 1 bit thì
chỉ còn lại 2^1 = 2 màu, đó là màu trắng và đen.
• Số bit càng lớn thì không gian để lưu trữ lớn hơn(ví dụ: ban
đầu ảnh có dung lượng là 8MB, sau khi thay đổi mức lượng
tử hóa với 8 bit thì dung lượng là 8MB còn 1 bit là 580kB.
• Quan sát ảnh thì ta thấy lượng tử hoá 5 bit là tối ưu, vì màu
sắc chưa bị thay đổi nhiều, và có dung lượng vừa phải
khoảng 1.5MB.
* Bài 1C *
a) Nội dung: Ảnh hưởng của lấy mẫu và lượng tử hoá đến chất
lượng ảnh màu
-Yêu cầu: Chọn ảnh màu chụp cả nhóm.
- Thay đổi tần số lấy mẫu trên ảnh này. Quan sát ảnh, so sánh,
đánh giá chất lượng ảnh và dung lượng ảnh, rút ra nhận xét.
- Thay đổi số mức lượng tử hoá trên ảnh này. Quan sát ảnh, so
sánh, đánh giá chất lượng ảnh và dung lượng ảnh, rút ra nhận
xét.
-Lưu ý: Cần quan sát sự thay đổi màu sắc. Tần số lấy mẫu và số
mức lượng tử hoá có ảnh hưởng như thế nào đến màu sắc?
b) Code matlab.
*Với file ảnh nhóm(lấy mẫu).
1- img = imread('anhnhom15.png);
2- subplot(2,4,1);
3- imshow(img);
4- title(‘2048x2048’);
5- subplot(2,4,2);
6- img2 = imresize(img, 1/2);
7- imshow(img2);
8- title(‘1024x1024’);
9- subplot(2,4,3);
10- img3 = imresize(img, 1/4);
11- imshow(img3);
12- title(‘512x512’);
13- subplot(2,4,4);
14- img4 = imresize(img, 1/8);
15- imshow(img4);
16- title(‘256x256’);
17- subplot(2,4,5);
18- img5 = imresize(img, 1/16);
19- imshow(img5);
20- title(‘128x128');
21- subplot(2,4,6);
22- img6 = imresize(img, 1/32);
23- imshow(img6);
24- title(‘64x64’);
25- subplot(2,4,7);
26- img7 = imresize(img, 1/64);
27- imshow(img7);
28- title(‘32x32’);
29- subplot(2,4,8);
30- img8 = imresize(img, 1/128);
31- imshow(img8);
32- title(‘16x16');
-Kết quả.
-Nhận xét.
• Độ phân giải càng cao thì ảnh càng rõ hơn và ngược lại.
• Độ phân giải 2048x2048 cho ảnh rõ nét nhất, độ phân giải
16x16 cho ảnh bị vỡ nhiều nhất, không rõ nét.
• Độ phân giải càng cao thì càng tốn dung lượng, tốn không
gian lưu trữ(ví dụ ban đầu bức ảnh có dung lượng khoảng
8MB, với độ phân giải 2048x2048 thì ta có dung lượng là
25MB, với độ phân giải 16x16 là 18kB.
• Tần số lấy mẫu tối ưu là 1/8, ta chọn ảnh 256x256, vì khi
nhìn qua bức ảnh ta có thể biết được nội dung và tốn ít
dung lượng hơn khoảng 680kB.
*Với file ảnh nhóm (lượng tử hóa)
1- x = imread(‘anhnhom15.png);
2- imshow(x);
3- b = [0 1 2 3 4 5 6 7 8];
4- for i = 1 : length(b)
5- d = 2^b(i);
6- z = floor(x/d);
7- title([num2str(10-i),'bit']);
8- subplot(2,4,i);
9- imshow(z*d);
10- end
-Kết quả.
-Nhận xét.
• Chất lượng ảnh và màu sắc có sự thay đổi dần từ 8 bit về 1
bit.
• Với 8 bit, ta có 256 cấp độ màu sắc và tông màu, số bit
giảm dần, từ 7 bit về 1 bit, các cấp độ màu sắc và tông màu
giảm dần.
• Số bit càng lớn thì không gian để lưu trữ càng lớn(ví dụ ban
đầu bức ảnh có dung lượng là 8MB, sau khi lượng tử hóa ở
mức 8 bit thì có dung lượng là 25MB, và ở mức lượng tử
hóa 1 bit thì có dung lượng là 2MB.
• Quan sát ảnh ta thấy mức lượng tử hoá tối ưu ở 5 bit, bức
ảnh có dung lượng là 8MB.
%giai ma
img2=Decoder(img);
subplot(1,2,2)
imshow(img2);
title('Anh sau giai ma');
%HAM NEN
function img=Encoder(im)
s = size(im);
ww = [1,1,1,1,1,1,1,1];
bb = [0,0,0,0,0,0,0,0];
img=[];
i=1;
while i <= s(1)
w=0;
b=0;
j=1;
while j <= s(2)
while(im(i,j)==1)
w=w+1;
b=0;
j=j+1;
if (j>s(2))
break;
end
end
if (w>0)
img = cat(2,img,Dec2Bin(w));
img = cat(2,img,ww);
end
if (j>250)
break;
end
while(im(i,j)==0)
b=b+1;
w=0;
j=j+1;
if (j>250)
break;
end
end
if(b>0)
img = cat(2,img,Dec2Bin(b));
img = cat(2,img,bb);
end
end
i=i+1; %t?ng hàng lên ?? th?c hi?n ti?p code
end
end
function bi = Dec2Bin(num)
for k=8:-1:1
bi(9-k) = floor(num/2^(k-1));
num = num-bi(9-k)*2^(k-1);
if num<0
num=0;
end
end
end
%HAM GIAI MA
function img=Decoder(im)
m=1;n=1;
for i= 1:16:length(im)
k = Bin2Dec(im(i:i+7));
for x = 1:k
img(m,n)=im(i+8);
n=n+1;
if (n>250)
n=1;
m=m+1;
end
end
end
end
%giai ma
img2=Decoder(img);
subplot(1,2,2)
imshow(img2);
title('Anh sau giai ma');
%HAM NEN
function img=Encoder(im)
s = size(im);
ww = [255,255,255,255,255,255,255,255];
bb = [0,0,0,0,0,0,0,0];
img=[];
i=1;
while i <= s(1)
w=0;
b=0;
j=1;
while j <= s(2)
while(im(i,j)==255)
w=w+1;
b=0;
j=j+1;
if (j>250)
break;
end
end
if (w>0)
img = cat(2,img,Dec2Bin(w));
img = cat(2,img,ww);
end
if (j>250)
break;
end
while(im(i,j)==0)
b=b+1;
w=0;
j=j+1;
if (j>250)
break;
end
end
if(b>0)
img = cat(2,img,Dec2Bin(b));
img = cat(2,img,bb);
end
end
i=i+1;
end
end
function bi = Dec2Bin(num)
for k=8:-1:1
bi(9-k) = floor(num/2^(k-1));
num = num-bi(9-k)*2^(k-1);
if (num<0)
num=0;
end
end
end
%HAM GIAI MA
function img=Decoder(im)
m=1;n=1;
for i= 1:16:length(im)
k = Bin2Dec(im(i:i+7));
for x = 1:k
img(m,n)=im(i+8);
n=n+1;
if (n>250)
n=1;
m=m+1;
end
end
end
end
-Kết quả:
b) Code matlab
a='Electronic and Telecommunication'
c=dec2bin(a)
if c(1,1)=='0'
c(1,1)='1';
else
c(1,1)='0';
end
if c(4,2)=='0'
c(4,2)='1';
else
c(4,2)='0';
end
if c(12,4)=='0'
c(12,4)='1';
else
c(12,4)='0';
end
if c(17,3)=='0'
c(17,3)='1';
else
c(17,3)='0';
end
if c(22,3)=='0'
c(22,3)='1';
else
c(22,3)='0';
end
if c(24,5)=='0'
c(24,5)='1';
else
c(24,5)='0';
end
if c(26,7)=='0'
c(26,7)='1';
else
c(26,7)='0';
end
if c(29,1)=='0'
c(29,1)='1';
else
c(29,1)='0';
end
if c(32,6)=='0'
c(32,6)='1';
else
c(32,6)='0';
end
c
a=char(bin2dec(c))
a=a'
Output matlab:
a=
c=
1000101
1101100
1100101
1100011
1110100
1110010
1101111
1101110
1101001
1100011
0100000
1100001
1101110
1100100
0100000
1010100
1100101
1101100
1100101
1100011
1101111
1101101
1101101
1110101
1101110
1101001
1100011
1100001
1110100
1101001
1101111
1101110
c=
0000101
1101100
1100101
1000011
1110100
1110010
1101111
1101110
1101001
1100011
0100000
1101001
1101110
1100100
0100000
1010100
1110101
1101100
1100101
1100011
1101111
1111101
1101101
1110001
1101110
1101000
1100011
1100001
0110100
1101001
1101111
1101100
a=
leCtronic ind Tuleco}mqnhca4iol
-Nhận xét:
Ma trận c đầu là ma trận mã hóa, ma trận c sau là ma
trận giải mã và sửa lỗi, a sau khi giải mã không tương
khớp ma trận a ban đầu
Mã ASCII không có khả năng phát hiện lỗi và tự sửa
được lỗi
*Bài 3B*
a) Yêu cầu.
Cho đoạn văn bản sau:
Electronic
- Mã hóa bản tin trên dùng mã khối tuyến tính (4,7) với đa thức
sinh như trong ví dụ. Tính tỷ lệ mã.
- Giải mã bản tin trên với giả sử lỗi xuất hiện ở vị trí 1, 7 trong
ký tự “e” màu đỏ. Nhận xét về khả năng phát hiện lỗi của mã (4,
7).
b) Code matlab.
a='Electronic'
m=dec2bin(a)
m=[1 0 0 0
1011
1011
0011
0010
1110
0011
1110
1001
1100
1011
0111
1110
1110
1101
0011
1000
1 1 0 0]
H=[1 0 1 1 1 0 0
1101010
1 1 1 0 0 0 1]
G=[1 0 0 0 1 1 1
0100011
0010101
0 0 0 1 1 1 0]
c=m*G
c=mod(c,2)
Output:
a=
Electronic
m=
1000101
1101100
1100101
1100011
1110100
1110010
1101111
1101110
1101001
1100011
m=
1 0 0 0
1 0 1 1
1 0 1 1
0 0 1 1
0 0 1 0
1 1 1 0
0 0 1 1
1 1 1 0
1 0 0 1
1 1 0 0
1 0 1 1
0 1 1 1
1 1 1 0
1 1 1 0
1 1 0 1
0 0 1 1
1 0 0 0
1 1 0 0
H=
1 0 1 1 1 0 0
1 1 0 1 0 1 0
1 1 1 0 0 0 1
G=
1 0 0 0 1 1 1
0 1 0 0 0 1 1
0 0 1 0 1 0 1
0 0 0 1 1 1 0
c=
1 0 0 0 1 1 1
1 0 1 1 3 2 2
1 0 1 1 3 2 2
0 0 1 1 2 1 1
0 0 1 0 1 0 1
1 1 1 0 2 2 3
0 0 1 1 2 1 1
1 1 1 0 2 2 3
1 0 0 1 2 2 1
1 1 0 0 1 2 2
1 0 1 1 3 2 2
0 1 1 1 2 2 2
1 1 1 0 2 2 3
1 1 1 0 2 2 3
1 1 0 1 2 3 2
0 0 1 1 2 1 1
1 0 0 0 1 1 1
1 1 0 0 1 2 2
c=
1 0 0 0 1 1 1
1 0 1 1 1 0 0
1 0 1 1 1 0 0
0 0 1 1 0 1 1
0 0 1 0 1 0 1
1 1 1 0 0 0 1
0 0 1 1 0 1 1
1 1 1 0 0 0 1
1 0 0 1 0 0 1
1 1 0 0 1 0 0
1 0 1 1 1 0 0
0 1 1 1 0 0 0
1 1 1 0 0 0 1
1 1 1 0 0 0 1
1 1 0 1 0 1 0
0 0 1 1 0 1 1
1 0 0 0 1 1 1
1 1 0 0 1 0 0
e=[zeros(1,7)
eye(7)]
s=e*H'
s1=r1*H'
s1=mod(s1,2)
s2=r2*H'
s2=mod(s2,2)
Output:
r1 =
0 0 0 0 1 1 1
r2 =
1 0 0 1 1 0 0
e=
0 0 0 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
s=
0 0 0
1 1 1
0 1 1
1 0 1
1 1 0
1 0 0
0 1 0
0 0 1
s1 =
1 1 1
s1 =
1 1 1
s2 =
3 2 1
s2 =
1 0 1
Kết luận:
+ Dựa vào s1 và s2 so sánh với s ta tìm được lỗi ở vị trí 1 trong s1 và 3 trong s2
( tương đương lỗi bit 7 của kí tự E). Vậy mã khối tuyến tính (4,7) sửa được lỗi
trên.
*BÀI 3C*
a) Yêu cầu.
-Thực hiện bài tập 3B với mã (7, 11). Đa thức sinh tự chọn.
-So sánh mã (4,7) và (7,11) về các tiêu chí:
+ Tỷ lệ mã.
+ Khả năng phát hiện lỗi.
b) Code matlab.
r=[0 0 0 0 1 0 0 1 1 0 0]
e=[zeros(1,11)
eye(11)]
s=e*H'
s1=r*H'
s1=mod(s1,2)
Output:
r=
0 0 0 0 1 0 0 1 1 1 0
e=
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 1
s=
0 0 0 0
1 1 0 0
1 0 1 0
1 0 0 1
1 1 1 0
0 1 0 1
0 0 1 1
0 1 1 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
s1 =
1 2 1 1
s1 =
1 0 1 1
-Kết luận:
So sánh giữa s1 và từng vector của s ta không suy ra
được vector lỗi vậy không thể sửa được lỗi.
* Bài 4A *
Yêu cầu:
Thiết kế hệ thống FDM gồm 7 kênh thoại, mỗi kênh nằm trong
dải tần số từ 300Hz đến 3400Hz. Tín hiệu FDM được tạo thành
từ các tín hiệu điều chế SSB biên trên và nằm trong dải tần từ
30kHz đến 70kHz.
a) Vẽ phổ của tín hiệu FDM, trong đó ghi rõ vị trí các phổ thành
phần và băng thông bảo vệ.
b) Vẽ sơ đồ khối phát của hệ thống FDM và xác định rõ các
thông số của các khối.
*Bài 5A*
Yêu cầu:
Thiết kế hệ thống TDM ghép 4 kênh thông tin số tốc độ 300 bps
và một kênh thông tin tương tự có băng thông 500 Hz. Giả sử
rằng các mẫu tín hiệu tương tự sẽ được mã hoá thành các từ mã
PCM 4 bit.
a) Vẽ sơ đồ khối của hệ thống thiết kế, ghi đầy đủ các giá trị của
các đại lượng cần thiết ở tất cả các điểm trên sơ đồ.
b) Giải thích thiết kế.
BÀI LÀM
a) Sơ đồ khối
Nguồn 3
300 (bps)
Chèn bit
500 (bps)
.
Nguồn 4
Chèn bit
300 (bps) 500 (bps)
(b(bps)
Nguồn 5
Chèn bit
300 (bps) 500 (bps)
b)Giải thích thiết kế
Bộ ghép kênh TDM được thiết kế để ghép tín hiệu từ 5 nguồn,
trong đó:
Nguồn 1 là nguồn tín hiệu tương tự, băng thông 500 (Hz)
Nguồn 2,3,4,5 là nguồn tín hiệu số, đồng bộ với tốc độ 300
(pbs)
Đầu tiên, cần phải số hóa nguồn tương tự. Tần số lấy mẫu của
nguồn tương tự là 500.2=1000 ( Hz ) =1( KHz). Việc lấy mẫu này tạo ra
tín hiệu TDM PAM 1000 mẫu trong một giây. Giả sử mỗi
mẫu được chuyển sang từ mã PCM 4 bit. Như vậy tín hiệu
TDM PCM ở đầu ra của ADC có tốc độ 4 (kbps)
Tiếp theo, tín hiệu từ 4 nguồn số được chèn thêm bit để tạo
thành các dòng số có tốc độ 500 (bps)
Tín hiệu số TDM PCM sẽ được kết hợp với dữ liệu từ các
dòng số 500 (bps) bằng cách sử dụng một bộ chuyển mạch
ghép kênh. Bộ chuyển mạch này hoạt động theo kiểu xoay
vòng lần lượt lấy mẫu dòng TDM PCM 4 (kbps), dòng số 500
(bps) từ nguồn 2, dòng TDM PCM 4 (kbps), dòng số 500
(bps) từ nguồn 3… và cứ như thế. Đây là bộ chuyển mạch 4
đầu vào 1 đầu ra, với tần số chuyển mạch là f =500( Hz)