Thí nghiệm môn Đa Phương Tiện Viện Điện tử viễn thông Đại học bách khoa Hà Nội 2. Hiển thị 3 ảnh thành phần R, G, B. Vẽ histogram của 3 thành phần. B = A; C = A; D = A; B(:,:,2) = 0; B(:,:,3) = 0; C(:,:,1) = 0; C(:,:,3) = 0; D(:,:,1) = 0; D(:,:,2) = 0; figure(2); subplot(231); imshow(B); title(R); subplot(232); imshow(C); title(G); subplot(233); imshow(D); title(B); subplot(234); imhist(A(:,:,1)); title(Histogram R); subplot(235); imhist(A(:,:,2)); title(Histogram G); subplot(236); imhist(A(:,:,3)); title(Histogram B);
Trang 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA
HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
KẾT QUẢ THÍ NGHIỆM
MÔN ĐA PHƯƠNG TIỆN
Họ tên: Trần Bá Đạt
Mã lớp TN: 682579
Mã số SV: 20165966 Lớp: CN-Điện tử 01.K61 Email: Dat.tb165966@sis.hust.edu.vn
Hà Nội 2019
MODULE 1: CÁC THAO TÁC XỬ LÝ ẢNH TRÊN
MATLAB
Trang 21 Đọc hình ảnh
Code:
clear all,close all;
A = imread('28.jpg');
imshow(A);
Figure:
2 Hiển thị 3 ảnh thành phần R, G, B Vẽ histogram của 3 thành phần.
B = A; C = A; D = A;
B(:,:,2) = 0; B(:,:,3) = 0;
C(:,:,1) = 0; C(:,:,3) = 0;
D(:,:,1) = 0; D(:,:,2) = 0;
figure(2);
subplot(231); imshow(B); title('R');
subplot(232); imshow(C); title('G');
subplot(233); imshow(D); title('B');
subplot(234); imhist(A(:,:,1)); title('Histogram R'); subplot(235); imhist(A(:,:,2)); title('Histogram G'); subplot(236); imhist(A(:,:,3)); title('Histogram B');
Trang 33 Chuyển đổi ảnh sang ảnh xám Vẽ histogram của ảnh này.
Code:
gray = rgb2gray(A);
figure(3);
subplot(121); imshow(gray); title('Anh xam');
subplot(122); imhist(gray); title('Histogram anh xam');
Trang 44 Hiển thị ảnh âm bản của bức ảnh.
Code:
amban = 255.-gray;
figure(4);
subplot(121); imshow(amban); title('Anh am ban ');
subplot(122); imhist(amban); title('Histogram anh am ban ');
Trang 5Figure:
Trang 6MODULE 2: BIẾN ĐỔI DCT ẢNH KHỐI TRƯỚC KHI NÉN
1 Công thức biến đổi cosine rời rạc thuận và ngược của ma trận 2 chiều 8x8.
Giá trị x(n1,n2) biểu diễn các mức xám của ảnh trong miền không gian, X(k1,k2) là các hệ số sau biến đổi DCT trong miền tần số
2 Thực hiện phép biến đổi DCT(tính tay) cho ma trận sau:
Áp dụng DCT-1D cho từng hàng:
F ( v )=1
2 C (v ) ∑
i=0
7
f (i) cos(2i+1)vπ
16
Với u=0:
Trang 7F (0 )= 1
2√2 20 8=40√2
F ( v )=0 , ∀ v ≠0
Tương tự với các hang còn lại, ta có:
Áp dụng DCT-1D cho từng cột:
F (u )=1
2.C (u) ∑
j=0
7
f ( j) cos(2 j+1)uπ
16
Với v=0:
F (0 )= 1
2√2(4 40√2+4 80√2)=2 40
F (1)=1
2.(40√2 cos π
16+40√2 cos
3 π
16+…)=−72,49
F (2)=1
2.(40√2 cos2 π
16+40√2 cos
6 π
16+…)=0
F (3 )=1
2.(40√2 cos3 π
16 +40√2 cos
9 π
16 +…)=25,46
F ( 4)=1
2.(40√2 cos4 π
16 +40√2cos
12 π
16 +…)=0
F (5)=1
2.(40√2 cos5 π
16 +40√2 cos
15 π
16 +…)=−17,01
F (6 )=1
2.(40√2 cos6 π
16 +40√2 cos
18 π
16 +…)=0
F (7 )=1
2.(40√2 cos7 π
16 +40√2 cos
21 π
16 +…)=14,42 Tương tự với các cột còn lại, ta có:
Trang 8240 0 0 0 0 0 0 0
3 Kiểm tra lại kết quả bằng lệnh dct2 trong Matlab
A = [ 20,20,20,20,20,20,20,20;
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];
A_dct = dct2(A);
Trang 94 Thực hành với ảnh xám
Code :
A=zeros(16);B=zeros(16);C=zeros(16);
A(4:13,7:10)=255;
A(5:12,5:12)=255;
A(7:10,4:13)=255;
subplot(121);imshow(A);title('anh tao ban dau');
A1=A(1:8,1:8);A2=A(1:8,9:16);
A3=A(9:16,1:8); A4=A(9:16,9:16);
A1_dct=dct2(A1);A2_dct=dct2(A2);
A3_dct=dct2(A3);A4_dct=dct2(A4);
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;
];
A1_lt=A1_dct./Q;A2_lt=A2_dct./Q;
A3_lt=A3_dct./Q;A4_lt=A4_dct./Q;
A1_I=idct2(A1_lt);A2_I=idct2(A2_lt);
A3_I=idct2(A3_lt);A4_I=idct2(A4_lt);
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 khi nen');
Trang 10Figure:
Trang 11MODULE 3:TIẾP CẬN XỬ LÝ AUDIO VÀ VIDEO
1 Nạp audio và bật audio qua loa
Code:
close all; clear all;
%read file wav doc file
[y,fs]= audioread('music.wav');
%sound(y,fs);%phat am thanh goc
figure;
subplot(2,1,1);
plot(y);
title('dang song du lieu')
Y=y*10;
%sound(Y,fs)
subplot(2,1,2);
plot(Y);
Figure:
Trang 122 Tạo vector 2*8192
Code:
close all; clear all; r=rand(1,2*8192); sound(r);
plot(r);
title('hen thi')
Figure:
Trang 133 Bật video trong matlab
Code:
close all; clear all;
obj=VideoReader('Capture.avi');
video=obj.read();
implay(video);
Figure:
4 Tìm hiểu các hàm
- getframe: chụp trục hoặc hình như một khung phim
- im2frame: chuyển đổi hình ảnh thành khung phim
- frame2im: Trả về dữ liệu hình ảnh được liên kết với khung phim
- movie: phát các khung phim đã ghi.
- mmreader:
- mmfileinfo: thông tin về tập tin đa phương tiện
- avifile:
- aviread:
- aviwite:
Trang 145 Hiển thị từng khung ảnh (frame)
Code:
file = aviinfo('video.avi');
nFrames = file.NumFrames;
Rate = file.AudioRate;
for k=1:10
this_frame=read(obj,k);
thisfig=figure();
image(this_frame);
title(sprintf('Frame #%d', k));
end
Figure:
6 Tạo ra một đoạn phim mới
Code:
newavi= VideoWriter('newvideo.avi'); newavi.FameRate=Rate;
open(newavi);
for k= 200:(-1):1
this_frame = read(obj,k);
writeVideo(newavi,this_frame);
Trang 15disp('Closing movie file');
close(newavi);
disp('display newvideo');
implay('newvideo.avi');
MODULE 4:THIẾT KẾ BỘ MÃ HÓA- GIẢI MÃ TỰA JPEG
Code:
clear all, close all;
imRGB= imread('bocanh.png');
figure, imshow(imRGB), title('RGB full image');
YIQ = 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('Reconstructed RGB full image');figure;
imshow(256*abs(imRGB(:,:,1)-reconstruct_imRGB(:,:,1))); title('Reconstructed R Error');
figure;
imshow(256*abs(imRGB(:,:,2)-reconstruct_imRGB(:,:,2))); title('Reconstructed G Error');
figure;
imshow(256*abs(imRGB(:,:,3)-reconstruct_imRGB(:,:,3))); title('Reconstructed B Error');
Trang 16Code:
clc;
clear all;
I= imread('ABC.jpg');
I1=I;
[row, coln] = size(I);
I2=double(I);
I= double(I);
x= 128*ones(256);
for i = 1:3
I(:,:,i) = I(:,:,i)- x;
end
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,coln);
QX = double(QX);
for i1 = [1:8:row]
Trang 17for i2=[1:8:coln]
zBLOCK = I(i1:i1+7,i2:i2+7);
win1 = DCT_matrix8*zBLOCK*iDCT_matrix8;
dct_domain(i1:i1+7,i2:i2+7)=win1;
end
end
for i1=[1:8:row]
for i2=[1:8:coln]
win1 = dct_domain(i1:i1+7,i2:i2+7);
win2 = round(win1./QX);
dct_quantized(i1:i1+7,i2:i2+7) = win2;
end
end
for i1=[1:8:row]
for i2=[1:8:coln]
win2 = dct_quantized(i1:i1+7,i2:i2+7);
win3 = win2.*QX;
dct_dequantized(i1:i1+7,i2:i2+7) = win3;
end
end
for i1=[1:8:row]
for i2=[1:8:coln]
win3 = dct_dequantized(i1:i1+7,i2:i2+7);
win4 = iDCT_matrix8*win3*DCT_matrix8;
dct_restored(i1:i1+7,i2:i2+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');
Figure: