Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,58 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG an co ng c om cu u du on g th BÁO CÁO THÍ NGHIỆM MÔN: ĐA PHƯƠNG TIỆN Họ tên sinh viên : Lương Văn Minh Mã lớp TN : 671035 MSSV : 20152445 Lớp : Điện tử 06 – K60 Email : lvminh97@gmail.com Hà Nội, 2018 CuuDuongThanCong.com https://fb.com/tailieudientucntt MỤC LỤC MODULE 1: CÁC THAO TÁC XỬ LÝ ẢNH TRÊN MATLAB MODULE 2: BIẾN ĐỔI DCT ẢNH KHỐI TRƯỚC KHI NÉN MODULE 3: TIẾP CẬN XỬ LÝ AUDIO VÀ VIDEO 11 cu u du on g th an co ng c om MODULE THIẾT KẾ BỘ MÃ HÓA – GIẢI MÃ TỰA JPEG 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt MODULE 1: CÁC THAO TÁC XỬ LÝ ẢNH TRÊN MATLAB Đọc file ảnh từ MatLab Code: A = imread('myAvt.jpg'); % Ham doc anh thu muc hien hanh imshow(A); % Ham hien thi anh cu u du on g th an co ng c om Kết thu được: Nhận xét: Ma trận ảnh A thu mảng liệu chiều kích thước 256x256x3 định nghĩa giá trị màu red, green, blue (giá trị – 255) cho pixel riêng biệt Hiển thị ảnh thành phần ảnh RGB ảnh vẽ histogram ảnh thành phần Code: A = imread('myAvt.jpg'); % Ham doc anh thu muc hien hanh R = A; G = A; B = A; R(:, :, 2) = 0; R(:, :, 3) = 0; % Giu nguyen phan R G(:, :, 1) = 0; G(:, :, 3) = 0; % Giu nguyen phan G B(:, :, 1) = 0; B(:, :, 2) = 0; % Giu nguyen phan B CuuDuongThanCong.com https://fb.com/tailieudientucntt subplot(331); subplot(334); subplot(335); subplot(336); subplot(337); subplot(338); subplot(339); imshow(A); imshow(R); title('R'); % Anh phan imshow(G); title('G'); % Anh phan imshow(B); title('B'); % Anh phan imhist(A(:,:,1)); % Histogram cua imhist(A(:,:,2)); % Histogram cua imhist(A(:,:,3)); % Histogram cua R G B phan R phan G phan B cu u du on g th an co ng c om Kết thu được: Chuyển đổi sang ảnh xám Vẽ histogram ảnh Code: A = imread('myAvt.jpg'); gray = rgb2gray(A); % Chuyen sang anh xam subplot(121); imshow(gray); title('Anh xam'); subplot(122); imhist(gray); title('Histrogram cua anh xam'); CuuDuongThanCong.com https://fb.com/tailieudientucntt on g th an co ng c om Kết thu được: u Code: du Tăng độ tương phản hình ảnh đầu cu A = imread('myAvt.jpg'); gray = rgb2gray(A); % Chuyen sang anh xam subplot(121); imshow(gray); title('Anh xam'); A_adjust = imadjust(gray, [0.35 0.65]); % Dieu chinh tuong phan subplot(122); imshow(A_adjust); title('Anh chinh tuong phan'); CuuDuongThanCong.com https://fb.com/tailieudientucntt on g th an co ng c om Kết thu được: u Code: du Hiển thị ảnh âm cu A = imread('myAvt.jpg'); gray = rgb2gray(A); % Chuyen amban = 255.-gray; % Chuyen subplot(121); imshow(amban); subplot(122); imhist(amban); xlim([0 255]); sang anh xam sang anh am ban title('Anh am ban'); title('Histogram cua anh am ban'); CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du on g th an co ng c om Kết thu được: CuuDuongThanCong.com https://fb.com/tailieudientucntt MODULE 2: BIẾN ĐỔI DCT ẢNH KHỐI TRƯỚC KHI NÉN Công thức biến đổi cosine rời rạc thuận ngược ma trận chiều 8x8 Giá trị x(n1 , n2 ) biểu diễn mức xám ảnh miền không gian, X (k1 , k2 ) hệ số sau biến đổi DCT miền tần số co Trong hệ số C ( ) 1 c 7 2k 2k X (k1 , k2 ) cos n1 cos n2 4C (n1 )C (n2 ) k1 0 k2 0 16 16 ng x(n1 , n2 ) 7 2n 2n x(n1 , n2 ) cos k1 cos k2 4C (k1 )C (k2 ) n1 0 n2 0 16 16 om X (k1 , k2 ) an Sử dụng MatLab thực biến đổi DCT thuận ngược cho ma trận 8x8 ngẫu nhiên Nhận xét th Tạo ma trận 8x8 ngẫu nhiên lệnh: a = randi([0 255], 8, 8); on g Ta có ma trận 8x8 sau: a = 245 107 173 70 112 181 245 231 247 234 193 11 97 193 87 190 24 195 70 149 u 202 cu du 208 233 248 245 100 210 203 174 57 161 245 167 167 177 47 167 192 24 124 43 81 125 41 65 71 204 217 180 243 114 30 129 140 36 239 8 165 127 178 32 40 Thực biến đổi DCT hàm dct2 a_dct = dct2(a); a_dct = 1.0e+03 * 1.1162 0.1028 0.0457 -0.0996 -0.0963 -0.0243 0.0392 -0.0266 CuuDuongThanCong.com https://fb.com/tailieudientucntt 0.1351 0.0586 0.0802 -0.0210 -0.0102 0.1090 -0.0724 -0.0872 -0.0178 -0.0309 0.0996 -0.0579 0.0032 0.0533 0.0650 -0.0315 -0.0210 0.0098 0.0440 0.0221 0.0903 -0.1055 -0.1898 -0.0457 0.1425 0.0024 0.1366 0.0348 0.0010 0.0056 -0.0165 0.0807 0.0601 -0.0002 -0.1129 0.0433 0.0301 -0.1022 0.0077 0.0042 0.0216 0.0000 0.0154 0.0982 -0.0805 -0.0473 -0.1355 0.0952 -0.0156 -0.0002 -0.0266 -0.2115 -0.1689 0.0237 0.0367 -0.0639 Thực biến đổi DCT ngược hàm idct2 a_idct = idct2(a_dct); a_idct = 70.0000 112.0000 181.0000 245.0000 231.0000 247.0000 234.0000 193.0000 11.0000 40.0000 202.0000 190.0000 97.0000 193.0000 24.0000 195.0000 c 32.0000 om 208.0000 245.0000 107.0000 173.0000 70.0000 149.0000 233.0000 248.0000 245.0000 100.0000 210.0000 203.0000 174.0000 9.0000 43.0000 81.0000 125.0000 71.0000 204.0000 217.0000 180.0000 243.0000 114.0000 36.0000 239.0000 8.0000 41.0000 65.0000 30.0000 129.0000 8.0000 165.0000 127.0000 178.0000 th an 140.0000 57.0000 47.0000 167.0000 192.0000 co 24.0000 124.0000 ng 161.0000 245.0000 167.0000 167.0000 177.0000 87.0000 Nhận xét: kết biến đổi DCT ngược cho kết giống với ma trận ban đầu on g Thực phép biến đổi DCT (Tính tay) cho ma trận 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 20 20 20 20 20 u cu 20 20 du 20 Biến đổi DCT theo hàng ta được: 56.5685 0 0 0 56.5685 0 0 0 56.5685 0 0 0 56.5685 0 0 0 113.1371 0 0 0 CuuDuongThanCong.com https://fb.com/tailieudientucntt 113.1371 0 0 0 113.1371 0 0 0 113.1371 0 0 0 0 0 0 0 -72.4903 0 0 0 0 0 0 0 25.4552 0 0 0 0 0 0 0 -17.0086 0 0 0 0 0 0 0 14.4192 0 0 0 ng Thực mô c 240 om Biến đổi DCT theo cột ta được: co Code: cu u du on g th an A = zeros(16); B = zeros(16); % Tao ma tran 16x16 A(6:11,6:11) = 255; % Tao ma tran A nhu yeu cau subplot(121); imshow(A); title('Anh tao ban dau'); % Hien thi anh ban dau % Chia anh A khoi 8x8 A1 = A(1:8,1:8); A2 = A(1:8,9:16); A3 = A(9:16,1:8); A4 = A(9:16,9:16); % Thuc hien bien doi DCT cac khoi anh A1_dct = dct2(A1); A2_dct = dct2(A2); A3_dct = dct2(A3); A4_dct = dct2(A4); % Bang so luong tu hoa Q = [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 96 112 100 103 99]; % Chia cho bang luong tu hoa A1_lt = A1_dct./Q; A2_lt = A2_dct./Q; A3_lt = A3_dct./Q; A4_lt = A4_dct./Q; % Thuc hien bien doi IDCT A1_I = idct2(A1_lt); A2_I = idct2(A2_lt); A3_I = idct2(A3_lt); A4_I = idct2(A4_lt); % Ghep anh B(1:8,1:8) = A1_I; B(1:8,9:16) = A2_I; B(9:16,1:8) = A3_I; B(9:16,9:16) = A4_I; subplot(122); imshow(B); title('Anh tao sau nen'); % Hien thi anh B CuuDuongThanCong.com https://fb.com/tailieudientucntt on g th an co ng c om Kết mô phỏng: cu u du Nhận xét: Ảnh tạo ban đầu ảnh tạo sau nén gần giống nhau, có sai khác nhỏ 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt MODULE 3: TIẾP CẬN XỬ LÝ AUDIO VÀ VIDEO Audio Nạp file audio vào MatLab bật qua loa máy tính [y, fs] = audioread('myAudio.wav'); sound(y,fs); Vẽ dạng sóng liệu cửa sổ MatLab Code: om [y, fs] = audioread('myAudio.wav'); plot(y,'b'); title('Song du lieu'); cu u du on g th an co ng c Kết thu được: Tăng kích thước dạng sóng lên 30% Code: [y, fs] = audioread('myAudio.wav'); y = y.*(1.3); sound(y,fs); plot(y,'b'); title('Song du lieu sau tang len 30%'); 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt on g th an co ng c om Kết thu được: du Tạo vector 2*4096 giá trị ngẫu nhiên Đặt tần số lấy mẫu Fs = 4096 aud = rand(1, 2*4096); u fs = 4096; cu Bật vector âm qua loa máy tính vẽ dạng sóng Code: aud = rand(1, 2*4096); fs = 4096; sound(aud, fs); plot(aud,'b'); title('Song du lieu'); 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt ng c om Kết thu được: co Video Bật video MatLab an Code: g th obj = VideoReader('myVideo.avi'); vid = obj.read(); implay(vid); cu u du on Kết quả: 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt Hiển thị khung ảnh (frame) Code: file = aviinfo('myVideo.avi'); % Lay thong tin file nFrames = file.NumFrames; % So frame video Rate=file.AudioRate; for k = 1:10 % Lay 10 frame dau tien this_frame = read(M, k); % Doc tung frame thisfig = figure(); image(this_frame); % Hien thi frame title(sprintf('Frame #%d', k)); end cu u du on g th an co ng c om Kết mô 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt om c ng co an th g on du u cu Tạo đoạn phim cách hoán vị ngẫu nhiên frame ảnh gốc ban đầu Code: file = VideoReader('myVideo.avi'); % Lay thong tin file video newavi = VideoWriter('newvideo.avi'); % Tao file avi moi newavi.FrameRate = 30; open(newavi); 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt pos = randi([1 150],1,150); % Hoan vi ngau nhien vi tri cac frame for k = 1:150 this_frame = read(file, pos(k)); % Doc tung frame writeVideo(newavi,this_frame); end disp('Closing movie file'); % Dong video goc close(newavi); disp('Display new video'); % Chay video moi implay('newvideo.avi'); cu u du on g th an co ng c om Kết mô phỏng: 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt MODULE THIẾT KẾ BỘ MÃ HÓA – GIẢI MÃ TỰA JPEG Mã hóa Code: clear all, close all; imRGB = imread('myAvt.jpg'); figure, imshow(imRGB), title('RGB Full Image'); imYIQ = rgb2ntsc(imRGB); imYIQsubI = imresize(imYIQ(:,:,2), 0.5, 'bilinear'); imYIQsubQ = imresize(imYIQ(:,:,3), 0.5, 'bilinear'); c ng reconstruct_imYIQ = imYIQ; reconstruct_imYIQ(:,:,2) = imYIQupsampI; reconstruct_imYIQ(:,:,3) = imYIQupsampQ; om imYIQupsampI = imresize(imYIQsubI, 2); imYIQupsampQ = imresize(imYIQsubQ, 2); co reconstruct_imRGB = uint8(256*ntsc2rgb(reconstruct_imYIQ)); figure, imshow(reconstruct_imRGB), title('Recontructor RGB Full Image'); cu u du on Kết mô phỏng: g th an figure, imshow(256*abs(imRGB(:,:,1)-reconstruct_imRGB(:,:,1))); title('Recontructor R error'); figure, imshow(256*abs(imRGB(:,:,2)-reconstruct_imRGB(:,:,2))); title('Recontructor G error'); figure, imshow(256*abs(imRGB(:,:,3)-reconstruct_imRGB(:,:,3))); title('Recontructor B error'); 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt om c ng co an th g on du u cu 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Giải mã Code: I = imread('myAvt.jpg'); I1 = I; I2 = double(I); [row col] = size(I); I = double(I); I = I - (128*ones(256)); c om QX = [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99]; co dct_restored = zeros(row, col); QX = double(QX); ng DCT_matrix8 = dct(eye(8)); iDCT_matrix8 = DCT_matrix8; on g th an for i = 1:8:row for j = 1:8:col zBLOCK = I(i:i+7, j:j+7); win1 = DCT_matrix8*zBLOCK*iDCT_matrix8; dct_domain(i:i+7, j:j+7) = win1; end end cu u du for i = 1:8:row for j = 1:8:col win1 = dct_domain(i:i+7,j:j+7); win2=round(win1./QX); dct_quantized(i:i+7,j:j+7)=win2; end end for i = 1:8:row for j = 1:8:col win2 = dct_quantized(i:i+7,j:j+7); win3 = win2.*QX; dct_dequantized(i:i+7,j:j+7)=win3; end end for i=[1:8:row] for j=[1:8:col] win3 = dct_dequantized(i:i+7,j:j+7); win4=iDCT_matrix8*win3*DCT_matrix8; dct_restored(i:i+7,j:j+7)=win4; end end I2=dct_restored; 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt K=mat2gray(I2); figure(1);imshow(I1);title('Original image'); figure(2);imshow(K);title('Restored image from DCT'); cu u du on g th an co ng c om Kết mô phỏng: 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... trị màu red, green, blue (giá trị – 255) cho pixel riêng biệt Hiển thị ảnh thành phần ảnh RGB ảnh vẽ histogram ảnh thành phần Code: A = imread(''myAvt.jpg''); % Ham doc anh thu muc hien hanh R =... 43 81 125 41 65 71 204 217 180 243 114 30 129 140 36 239 8 165 127 178 32 40 Thực biến đổi DCT hàm dct2 a_dct = dct2(a); a_dct = 1.0e+03 * 1.1162 0.1028 0.0457 -0.0996 -0.0963 -0.0243 0.0392... -0.1355 0.0952 -0.0156 -0.0002 -0.0266 -0.2115 -0.1689 0.0237 0.0367 -0.0639 Thực biến đổi DCT ngược hàm idct2 a_idct = idct2(a_dct); a_idct = 70.0000 112.0000 181.0000 245.0000 231.0000 247.0000 234.0000