Thực hành truyền thông đa phương tiện

19 1 0
Thực hành truyền thông đa phương tiện

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hiển thị ma trận thu được dưới dảng một bức ảnh.. - Nạp dữ liệu file ảnh màu parrots.jpg search bằng google vảo mảng ma trận MATLAB.. Hiển thị file ảnh màu này.. Hiển thị ba ảnh R,G,B tr

TRƯỜNG ĐẠI HỌC QUY NHƠN KHOA KỸ THUẬT VÀ CÔNG NGHỆ -  - THỰC HÀNH TRUYỀN THÔNG ĐA PHƯƠNG TIỆN Biên soạn: TS Nguyễn Tường Thành Bộ môn: Điện tử - Viễn thông Tài liệu lưu hành nội BÀI 1: CÁC TRÊN MATLAB THAO TÁC XỬ LÝ ẢNH Đọc file ảnh từ MatLab -Tạo ma trận kích thước 512 x 512 gồm số ngẫu nhiên Hiển thị ma trận thu dảng ảnh - Nạp liệu file ảnh màu parrots.jpg (search google) vảo mảng ma trận MATLAB Hiển thị file ảnh màu Hiển thị ba ảnh R,G,B cửa sổ MATLAB riêng biệt Vẽ histogram ảnh (ghi kèm tên sinh viên thực giao diện hiển thị) - Nhập ảnh xám Lena.jpg, kích thước 256x256 Giá trị điểm ảnh nhận từ đến 255, tương ứng màu đen 255 tương ứng màu trắng Thực chuyển đổi sang ảnh âm cách thay giá trị điểm ảnh giá trị Hiển thị hai ảnh histogram chúng (như hình vẽ- ghi kèm tên sinh viên thực giao diện hiển thị) Code: A = imread('myAvt.jpg'); % Ham doc anh thu muc hien hanh imshow(A); % Ham hien thi anh 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 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 subplot(331); imshow(A); subplot(334); imshow(R); title('R'); % Anh phan R subplot(335); imshow(G); title('G'); % Anh phan G subplot(336); imshow(B); title('B'); % Anh phan B subplot(337); imhist(A(:,:,1)); % Histogram cua phan subplot(338); imhist(A(:,:,2)); % Histogram cua phan subplot(339); imhist(A(:,:,3)); % Histogram cua phan hanh R G B 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'); Kết thu được: Tăng độ tương phản hình ảnh đầu Code: 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'); Kết thu được: Hiển thị ảnh âm Code: A = imread('myAvt.jpg'); gray = rgb2gray(A); % Chuyen sang anh xam amban = 255.-gray; % Chuyen sang anh am ban subplot(121); imshow(amban); title('Anh am ban'); subplot(122); imhist(amban); title('Histogram cua xlim([0 255]); anh am ban'); Kết thu được: BÀI 2: TRƯỚC KHI NÉN BIẾN ĐỔI DCT ẢNH KHỐI 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ố 7  2n    2n   X (k1 , k2 )  x(n1 , n2 ) cos  k1  cos  k2    4C (k1 )C (k2 ) n1 0 n2 0  16   16  x(n1 , n2 )  7  2k    2k   X (k1 , k2 ) cos  n1  cos  n2    4C (n1 )C (n2 ) k1 0 k2 0  16   16   1 Trong hệ số C ( )       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 Tạo ma trận 8x8 ngẫu nhiên lệnh: a = randi([0 255], 8, 8); Ta có ma trận 8x8 sau: a = 208 231 32 233 161 24 71 140 245 247 40 248 245 124 204 36 107 234 202 245 167 217 239 173 193 190 100 167 43 180 70 11 24 210 177 81 243 112 97 195 203 47 125 114 165 181 193 70 174 167 41 30 127 245 87 149 57 192 65 129 178 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 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.0367 -0.0639 0.0237 Thực biến đổi DCT ngược hàm idct2 a_idct = idct2(a_dct); a_idct = 208.0000 245.0000 107.0000 173.0000 70.0000 112.0000 181.0000 245.0000 231.0000 247.0000 234.0000 193.0000 32.0000 40.0000 202.0000 190.0000 11.0000 97.0000 193.0000 24.0000 195.0000 70.0000 149.0000 233.0000 248.0000 245.0000 100.0000 210.0000 203.0000 174.0000 161.0000 245.0000 167.0000 167.0000 177.0000 24.0000 124.0000 9.0000 43.0000 36.0000 239.0000 81.0000 125.0000 8.0000 57.0000 47.0000 167.0000 192.0000 71.0000 204.0000 217.0000 180.0000 243.0000 114.0000 140.0000 87.0000 41.0000 65.0000 30.0000 129.0000 8.0000 165.0000 127.0000 178.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 Thực phép biến đổi DCT (Tính tay) cho ma trận 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 20 20 20 20 40 40 40 40 Biến đổi DCT theo hàng ta được: 56.5685 56.5685 56.5685 56.5685 113.1371 113.1371 113.1371 113.1371 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Biến đổi DCT theo cột ta được: 240 -72.4903 25.4552 -17.0086 14.4192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thực mô Code: 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; 10 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 Kết mô phỏng: 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ỏ 11 BÀI 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: [y, fs] = audioread('myAudio.wav'); plot(y,'b'); title('Song du lieu'); 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%'); Kết thu được: 12 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); fs = 4096; 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'); Kết thu được: 13 Video Bật video MatLab Code: obj = VideoReader('myVideo.avi'); vid = obj.read(); implay(vid); Kết quả: Hiển thị khung ảnh (frame) Code: file = aviinfo('myVideo.avi'); % Lay thong tin file nFrames = file.NumFrames; % So frame video 14 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 Kết mô 15 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); 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'); Kết mô phỏng: 16 17 BÀI 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'); imYIQupsampI = imresize(imYIQsubI, 2); imYIQupsampQ = imresize(imYIQsubQ, 2); reconstruct_imYIQ = imYIQ; reconstruct_imYIQ(:,:,2) = imYIQupsampI; reconstruct_imYIQ(:,:,3) = imYIQupsampQ; reconstruct_imRGB = uint8(256*ntsc2rgb(reconstruct_imYIQ)); figure, imshow(reconstruct_imRGB), title('Recontructor RGB Full Image'); 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'); Kết mô phỏng: 18/19 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)); 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]; DCT_matrix8 = dct(eye(8)); iDCT_matrix8 = DCT_matrix8; dct_restored = zeros(row, col); QX = double(QX); for i = 1:8:row 19/19 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 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; K=mat2gray(I2); figure(1);imshow(I1);title('Original image'); figure(2);imshow(K);title('Restored image from DCT'); Kết mô phỏng: 20/19

Ngày đăng: 19/02/2024, 12:57

Tài liệu cùng người dùng

Tài liệu liên quan