You are on page 1of 11

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG


----

BÁO CÁO THÍ NGHIỆM


MÔN: ĐA PHƯƠNG TIỆN

Họ tên sinh viên : Vũ Văn Phương


Mã lớp TN : 713579
MSSV : 20172754
Lớp : ĐTVT.02 – K62

Hà Nội, 2021
MỤC LỤC

MODULE 3: KỸ THUẬT TĂNG CƯỜNG CHẤT LƯỢNG HÌNH ẢNH..............2


MODULE 4: XỬ LÝ AUDIO VÀ VIDEO...............................................................5
MODULE 3: KỸ THUẬT TĂNG CƯỜNG CHẤT LƯỢNG HÌNH ẢNH
SMQT

function A = alg_m(RGBimage,l,n)

[row,column,d] = size(RGBimage); if (d == 3)

HSVimage = rgb2hsv(RGBimage); V = HSVimage(:,:,3);

else

V = double(RGBimage)/255;

end

V = V(:);

[Vsorted,ix] = sort(V); s = (row*column)/n;

i = 0; h =[];

while(i <n)

i = i + 1;

z = Vsorted(((floor(s*(i-1))+1)):floor(s*i));

Vstart = (s*(i-1))/(row*column);

Vstop = (s*i)/(row*column);

r = z - z(1);

f = (1/n)/(r(size(r,1))); g = r*f;

if (isnan(g(1)))

g = r + Vstop;

else

g = r + Vstart;

end

h = vertcat(h,g);

end

m(ix) = h;

m = m(:);

2
if (d==3)

HSVimage(:,:,3) = reshape(m, row, column); A = hsv2rgb(HSVimage);

else

A = reshape(m,row,column);

end

return;

end

Cân bằng mức xám đồ Matlab

function B = alg_hm(OriginalImage)

[row, column, d] = size(OriginalImage); i = 0;

while(i < d)

i = i + 1;

B(:,:,i) = histeq(OriginalImage(:,:,i));

end

end

Chức năng cân bằng mức xám đồ

function Output = alg_h(Input)

[row, column, d] = size(Input); i = 0;

while(i < d)

i = i + 1;

histo = imhist(Input(:,:,i));

Input(:,:,i) = double (Input(:,:,i));

probability = histo./(row*column);

equalizer = cumsum( probability)*256;

Output(:,:,i) = equalizer(Input(:,:,i)+1);

end

3
Input = uint8(Input); Output = uint8(Output);

End

Biến đổi V

function A = alg_a(RGBimage, n)

[row,column,d] = size(RGBimage);

if (d == 3)

HSVimage = rgb2hsv(RGBimage); V = HSVimage(:,:,3);

else

V = double(RGBimage)/255;

end

V = V(:);

[Vsorted,ix] = sort(V); s = (row*column)/n;

i = 0; h =[];

while(i <n)

i = i + 1;

z = Vsorted(((floor(s*(i-1))+1)):floor(s*i)); Vstart = (s*(i-1))/(row*column);

Vstop = (s*i)/(row*column); r = z - z(1);

f = (1/n)/(r(size(r,1))); g = r*f;

if (isnan(g(1)))

g = r + Vstop;

else

g = r + Vstart;

end

h = vertcat(h,g);

end

m(ix) = h;

m = m(:);

if (d==3)

4
HSVimage(:,:,3) = reshape(m, row, column); A = hsv2rgb(HSVimage);

else

A = reshape(m,row,column);

End

Chương trình chính

RGB = imread('1.png'); subplot(4,3,1);

imshow(RGB); title('Original Pic'); subplot(4,3,7);

imhist(RGB); title('Histogram Original Pic');

SMQT = alg_m(RGB,1,8);

subplot(4,3,2); imshow(SMQT); title('SMQT'); subplot(4,3,8);

imhist(SMQT); title('SMQT Histogram (L=8)');

EqualizerMatlab = alg_hm(RGB); subplot(4,3,3);

imshow(EqualizerMatlab); title('Equalization (Matlab)'); subplot(4,3,9);

imhist(EqualizerMatlab); title('Histogram Equalization (Matlab)');

% Can bang muc xam

Equalizer = alg_h(RGB); subplot(4,3,4);

imshow(Equalizer); title('Equalization ');

subplot(4,3,10);

imhist(Equalizer); title('Histogram Equalization ');

% Bien doi V (n=1)

SHV1 = alg_a(RGB,1);

subplot(4,3,5);

imshow(SHV1); title('HSV, V transform algorithm (n=1)'); subplot(4,3,11);

5
imhist(SHV1); title('HSV histogram,(n=1)');

% Bien doi V (n=10)

SHV10 = alg_a(RGB,10);

subplot(4,3,6);

imshow(SHV10); title('HSV, V transform algorithm (n=10)'); subplot(4,3,12);

imhist(SHV10); title('HSV histogram,(n=10)');

6
MODULE 4: XỬ LÝ AUDIO VÀ VIDEO

AUDIO

[data, sr]= audioread('music.wav');

subplot(311); plot(data);

A=data.*10;

subplot(312); plot(A);

r = rand(1,2*8192);

subplot(313); plot(r);

7
VIDEO

Bật video trong Matlab

obj = VideoReader('Shortvideo.avi');

video = obj.read();

implay(video);

Hiển thị từng khung hình ảnh

obj = VideoReader('Shortvideo.avi');

nFrames = obj.NumberOfFrames;

8
for k = 50:60

this_frame = read(obj, k);

thisfig = figure();

image(this_frame);

title(sprintf('Frame #%d', k));

end

Tạo đoạn phim mới bằng cách hoán đổi các khung ảnh ban đầu

file = VideoReader('Shortvideo.avi');

newavi = VideoWriter('newvideo.avi');

newavi.FrameRate = 30;

open(newavi);

pos = randi([1 150],1,150);

for k = 1:150

this_frame = read(file, pos(k));

writeVideo(newavi,this_frame);

end

9
disp('Closing movie file');

close(newavi);

disp('Display new video');


implay('newvideo.avi');

10

You might also like