Vấn đề mã kênh dựa trên ý tưởng thêm các ký hiệu mới vào trong dữ liệu được truyền, để có thể xây dựng các loại mã nhằm mục đích có thể phát hiện lỗi và sửa sai các lỗi.. Sửa - lỗi: có 2
Trang 1Gi ảng viên hướng dẫn : Ths Trần Văn Líc
Sinh viên th c hi n ự ệ : Nguyễn Văn Thanh Phong 20DT1
: Huỳnh Xuân Ngọ – 20DT1 : Nguyễn Văn Tiến – 20DT1
L ớp h c ph n ọ ầ : 20.38A
Đà Nẵng, tháng 3 năm 2023
Trang 2BÀI 1: KỸ THUẬT MÃ HÓA KÊNH
I LÝ THUYẾT:
- Mã hóa kênh: kỹ thuật này giúp việc truyền thông tin chính xác hơn trong môi
trường nhiễu loạn của kênh truyền thông Vấn đề mã kênh dựa trên ý tưởng thêm các ký hiệu mới vào trong dữ liệu được truyền, để có thể xây dựng các loại
mã nhằm mục đích có thể phát hiện lỗi và sửa sai các lỗi Có 4 dạng kiểm tra - lỗi cơ bản dùng mã thừa trong truyền dữ liệu: +VRC (vertical redundancy check): kiểm tra tính chẵn lẻ của tổng bit ‘1’ trong một đơn vị dữ liệu + LRC (longitudinal redundancy check): kiểm tra tính chẵn lẻ của tổng các bit ‘1’ trong một khối + CRC (cyclic redundancy check): kiểm tra chu kỳ dư + Checksum: kiểm tra tổng Ba dạng đầu thường được thiết lập trong lớp vật lý để dùng trong lớp kết nối dữ liệu Dạng checksum thường được dùng trong các lớp trên Sửa - lỗi: có 2 cách sửa lỗi + Khi phát hiện một mỗi, máy thu phải yêu cầu máy phát truyền lại dữ liệu + Máy thu dùng các mã sửa lỗi, để sửa tự động một số lỗi -
Mã khối tuyến tính là một lớp mã được dùng rất phổ biến trong việc chống nhiễu (phát hiện sai và sửa sai) Mã khối tuyến tính c có mục đích mã hóa các khối tin k bit thành các từ mã n bit trước khi truyền đi, nói cách khác, trong n bit của từ mã truyền đi có k bit chứa thông tin, còn n k bit là thêm vào (mã hóa) đề -chống nhiễu Mã hóa bản tin dùng mã khối tuyến tính (4, 7) là một tin nguồn - gồm 4 bit đã được mã hóa thành một mã nguồn gồm 7 bit, 4 bit chứa thông tin
và 3 bit thêm vào là để chống nhiễu Mã hóa bản tin dùng mã khối tuyến tính - (7, 11) là một tin nguồn gồm 7 bit đã được mã hóa thành một mã nguồn gồm 11 bit, 7 bit chứa thông tin và 4 bit thêm vào là để chống nhiễu Hệ thống thông tin
số điển hình:
Trang 3II BÀI TẬP:
Bài 1: Thực hiện mã hóa ASCII cho đoạn văn bản sau:
Faculty of Electronic and Telecommunication
- Giả sử lỗi rơi vào các vị trí 1, 2, 4, 3, 3, 5, 7, 1, 6, 1, 2 của các ký tự màu đỏ Giải mã
Nhận xét về khả năng phát hiện lỗi của mã ASCII
Trang 4c(3,2)='0'; end
if c(4,4)=='0' c(4,4)='1'; else
c(4,4)='0'; end
if c(5,3)=='0' c(5,3)='1'; else
c(5,3)='0'; end
if c(13,3)=='0' c(13,3)='1'; else
c(13,3)='0'; end
if c(14,5)=='0' c(14,5)='1'; else
c(14,5)='0'; end
if c(16,7)=='0' c(16,7)='1'; else
c(16,7)='0'; end
if c(17,1)=='0' c(17,1)='1';
Trang 5Kết quả: Chuỗi sau khi giải mã :
“ F!C}|ty of E|acu2mnic andElecommunication”
Nhận xét : Mã ASCII không có khả năng phát hiện và sửa chữa lỗi Nếu có lỗi trong quá trình truyền thông tin, các ký tự sẽ bị thay đổi mà không có bất kỳ cơ chế nào để phát hiện hoặc sửa chữa lỗi
Trang 6BÀI 2: KỸ THUẬT MÃ HÓA NÉN
I LÝ THUYẾT:
Giới thiệu về nén tín hiệu:
1.1 Nén dữ liệu:
- Nén dữ liệu (Data compression) là việc chuyển định dạng thông tin sử dụng
ít bit hơn cách thể hiện ở dữ liệu gốc Tùy theo dữ liệu có bị thay đổi trước và sau
khi giải nén không, người ta chia nén thành hai loại: Không tổn hao (lossless) và tổn hao (lossy)
- Nén không tổn hao: entropy được bảo toàn X* = X
- Nén có t n hao: entropy b hao hổ ị ụt X* ≠ X
Đánh giá:
- Tỷ số nén: (số bit trong X)/(số bit trong Y)
- Chất lượng: sai khác giữa X và X*
Nén có tổn hao được thực hiện dựa vào lượng tử hóa:
Trang 7Nén không tổn hao:
ồm các kỹ thuật: mã hóa Huffman, mã hóa run-length,…
Mã hóa Huffman: còn gọi là mã hóa entropy, hiệu quả trong
trường hợp xác suất xuất hiện của các ký tự không đều nhau
Mã hóa run-length: hiệu quả trong trường hợp dữ liệu có sự lặp
lại theo từng đoạn (liên tiếp hay không liên tiếp)
Mã hóa Huffman:
Mã hóa các ký tự có xác suất sinh ra lớn/bé bằng các từ mã ngắn/dài
Mã có tính prefix → không cần ký tự ngắt từ → tăng hiệu suất mã
Mã hóa run-length bằng:
Trang 8<số lần ký tự được lặp lại> <ký tự được lặp lại>
qua đường dây điện thoại
Trang fax được quét thành dòng gồm các pixel trắng – đen liên
tục (run-length)
Run-length được mã hóa dựa vào mã Huffman
Quy t c: run-length hay xu t hiắ ấ ện↔ từ mã ngắn
run-length ít xu t hiấ ện ↔ từ mã dài
Dòng quét trang Fax:
Trang 9II BÀI TẬP
Bài 1: Cho trang tài liệu quét TestRLC.bmp
+ Thực hiện mã hóa nén trang tài liệu quét trên, dung kĩ thuật mã hóa RLC Tính tỉ lệ nén
+ Cho bên thu biết số điểm ảnh trên một dòng quét tài liệu là 250 Thực hiện giải mã
+ So sánh tài liệu gốc và sau khi giải nén để đánh giá chất lượng nén bằng định tính và định lượng
Code matlab :
clc;
im=imread('D:/KI_HAI_NAM_BA/TN TTS/TestRLC.bmp');
Trang 11if mahoa(j)==1
mahoa(j)=255;
end
end
SoBitSauKhiNen = SoBitSauKhiNen + count*8*2;
KyTuMaHoa = [KyTuMaHoa KyTuLap];
ChieuDaiKyTu = [ChieuDaiKyTu DemLap];
Trang 12fprintf('nen co ton hao \n');
Trang 13Bài 2: Cho trang tài liệu quét TestFax.bmp
+ Thực hiện mã hóa nén trang tài liệu quét trên, dung kĩ thuật mã hóa RLC Tính tỉ lệ nén
+ Cho bên thu biết số điểm ảnh trên một dòng quét tài liệu là 250 Thực hiện giải mã
+ So sánh tài liệu gốc và sau khi giải nén để đánh giá chất lượng nén bằng định tính và định lượng
Trang 14a=a+1;
Ky_Tu_Lap(a)=im(i,j); Dem_Lap(a)=1;
Trang 15So_Bit_Sau_Khi_Nen = So_Bit_Sau_Khi_Nen + count*8*2; Ky_Tu_Ma_Hoa = [Ky_Tu_Ma_Hoa Ky_Tu_Lap];
Chieu_Dai_Ky_Tu = [Chieu_Dai_Ky_Tu Dem_Lap];
display([dec2bin(Dem_Lap,8),dec2bin(Ky_Tu_Lap,8)]); end
fprintf('\nSo bit sau khi nen =%.3f bit\n',So_Bit_Sau_Khi_Nen );
Trang 17BÀI 3: KỸ THUẬT SỐ HÓA TÍN HIỆU
I LÝ THUYẾT:
1 Bộ biến đổi tương tự số cơ bản:-
Trang 182 Kỹ thuật lấy mẫu:
Trang 19Trong đó: là chu kỳ lấy mẫu.T
Trang 20tượng chồng phổ
Chồng phổ (Aliasing) có thể tránh được nếu tần số Nyquist lớn hơn tần
số lớn nhất của tín hiệu được lấy mẫu Để chống chồng phổ ta có thể sửdụng bộ lọc
Chọn tần số lấy mẫu:
Trường hợp phổ tín hiệu tương tự từ 0 đến: :
Trường hợp phổ tín hiệu tương tự từ đến :
e Lấy mẫu ảnh:
Lấy mẫu: Phân chia không gian ảnh ra thành lưới các ô vuông
Độ phân giải: Là số lượng điểm ảnh trong bức ảnh Độ phân giải thấp
→ Không chính xác; Độ phân giải cao → Chậm thuật toán lãng phí bộ nhớ
Ví dụ:
3.Kỹ thuật lượng tử hoá:
Trang 21a.Khái niệm:
Lượng tử hoá là quá trình xấp xỉ hoá giá trị của các mẫu
Mục đích của quá trình này nhằm biểu diễn lại một cách chính xác nhất các tín hiệu tương tự bằng tín hiệu số
Quá trình này được thực hiện bằng hàm bậc thang mô tả như hình sau:
b Nhiễu lượng tử hoá:Sai số lượng tử hóa (nhiễu/ lỗi/ méo lượng tử hóa): Sai khác với giá trị
thực và giá trị lượng tử hóa
Kích thước bước lượng tử hóa ảnh hưởng đến méo lượng tử hóa
Muốn giảm méo lượng tử hóa, phải giảm kích thước bước lượng tử hóa, dẫn đến tăng số mức lượng tử hóa, tăng số bit mã hóa
II BÀI TẬP
Bài 1: Cho bức ảnh xám Test.bmp
● 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 và dung lượng ảnh,
rút ra nhận xét Từ đó chọn ra tần số lấy mẫu tối ưu
Code matlab:
img=imread('C:\Users\ASUS\Pictures\TTS\Test.bmp');
Trang 22figure
imgl=imresize(img,1/2); img2=imresize(img,1/4); img3=imresize(img,1/8); img4=imresize(img,1/16); img5=imresize(img,1/32); img6=imresize(img,1/64); img7=imresize(img,1/128); subplot(2,4,1);
Trang 24Bài 2: 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
Trang 25d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 7 bit') subplot(2,4,3)
b = 6;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 6 bit') subplot(2,4,4)
b = 5;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 5 bit') subplot(2,4,5)
b = 4;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 4 bit') subplot(246)
b = 3;
d = 2^(8-b);
Trang 26z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 3 bit') subplot(247)
b = 2;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 2 bit') subplot(248)
b = 1;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh nhi phan')
Ảnh thu được:
Trang 27Chụ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
Trang 28b = 7;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 7 bit') subplot(2,4,3)
b = 6;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 6 bit') subplot(2,4,4)
b = 5;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 5 bit')
Trang 29subplot(2,4,5)
b = 4;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 4 bit') subplot(246)
b = 3;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 3 bit') subplot(247)
b = 2;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 2 bit') subplot(248)
b = 1;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh nhi phan')
Ảnh thu được:
Trang 30● 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
Trang 31title('Anh 7 bit') subplot(2,4,3)
b = 6;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 6 bit') subplot(2,4,4)
b = 5;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 5 bit') subplot(2,4,5)
b = 4;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 4 bit') subplot(246)
b = 3;
d = 2^(8-b);
z = round(pic/d); changeBit = z*d; imshow(changeBit) title('Anh 3 bit')