Các hàm xử lí video

Một phần của tài liệu Nghiên cứu hệ thống quan sát cho xe trong việc xác định tình trạng giao thông đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 40 - 47)

3.7.2.1 Hàm vision.VideoFileReader

Hàm này có chức năng đọc các hình ảnh và âm thanh từ các file video hoặc các file ảnh.

 Cú pháp:

videoFReader=vision.VideoFileReader(FILENAME) hoặc

videoFReader=vision.VideoFileReader(Filename,Name,Value)

 Định dạng tập tin mà hàm có thể thực hiện phụ thuộc vào hệ điều hành mà bộ công cụ được cài đặt. Tuy nhiên với tập tin có đuôi là .avi thì hàm có thể thực thi trên tất cả các hệ điều hành. Với hệ điều hành windows, các hàm chỉ thực thi các filename có đuôi là: .jpg, .bmp, .mpeg, .mp2, .mpg, .mp4, m4v, .mj2, .wmv, .asf, .asx, .wav, .aif, .aiff, .aifc, .mp3.

3.7.2.2 Hàm vision.VideoPlayer

Hàm này dùng để mở một video hoặc hiển thị hình ảnh.  Cú pháp

videoPlayer = vision.VideoPlayer

videoPlayer = vision.VideoPlayer(Name,Value)  Để hiển thị một video frames cần thực hiện:

36 o Gọi lệnh step. Theo cú pháp step(videoPlayer,I), trong đó I là đối

tượng cần hiển thị trong video player.  Ví dụ:

% Doc mot hinh anh tu file video va tao doi tuong mo file. videoFReader = vision.VideoFileReader('videothucte_0002.avi'); videoPlayer = vision.VideoPlayer;

% Mo file. Moi lenh goi step se doc mot khung hinh. while ~isDone(videoFReader)

frame = step(videoFReader); step(videoPlayer,frame); end

% Dong doi tuong. release(videoFReader); release(videoPlayer);

Kết quả:

Hình 3. 11 Mở file video dùng vision.VideoPlayer

Để chèn đối tượng vào video player, Computer Vision System Toolbox hổ trợ các hàm:

insertText Chèn text. insertShape Chèn hình dạng.

insertMaker Chèn đánh dấu vào trong ảnh hoặc video. insertObjectAnnotation Chèn chú thích đúng màu vào dòng video.

3.7.2.3 Hàm vision.ImageFilter

Thực hiện lọc ma trận đầu vào dùng bộ lọc 2D FIR.  Cấu trúc:

37 H = vision.ImageFilter hàm này trả về đối tượng hệ thống H.

H = vision.ImageFilter(Name,Value)

3.7.2.4 Hàm vision.Autotheresholder

Đây là hàm chuyển đổi ảnh cường độ sang ảnh nhị phân, sử dụng phương pháp Otsu. Xác định ngưỡng bằng cách chia tách hoành đồ của ảnh đầu vào để giảm thiểu sai số.  Cấu trúc lệnh H = vision.Autothresholder H = vision.Autothresholder(Name,Value)  Ví dụ: img = im2single(rgb2gray(imread('peppers.png'))); imshow(img); hautoth = vision.Autothresholder; bin = step(hautoth,img); pause(2); figure;imshow(bin);  Kết quả: Hình 3. 12 Ảnh cường độ

38

Hình 3. 13 Ảnh nhị phân

3.7.2.5 Hàm vision.LocalMaximaFinder

Hàm tìm cực đại địa phương trong ma trận. Sau khi thiết lập các thuộc tính của ma trận đầu vào, sử dụng cú pháp IDX = step(H,I) hoặc [...] = step(H,I,THRESH) trong đó THRESH là ngưỡng, để tìm vị trí có giá trị cực đại trong ma trận.

Cấu trúc lệnh H = vision.LocalMaximaFinder(Name,Value) H = vision.LocalMaximaFinder(Name,Value) H = vision.LocalMaximaFinder(MAXNUM,NEIGHBORSIZE,Name,Value)  Ví dụ: >> I = [0 0 0 0 0 0 0 0 0 0 0 0; ... 0 0 0 1 1 2 3 2 1 1 0 0; ... 0 0 0 1 2 3 4 3 2 1 0 0; ... 0 0 0 1 3 5 7 5 3 1 0 0; ... 0 0 0 1 2 3 4 3 2 1 0 0; ... 0 0 0 1 1 2 3 2 1 1 0 0; ... 0 0 0 0 0 0 0 0 0 0 0 0]; hLocalMax = vision.LocalMaximaFinder; hLocalMax.MaximumNumLocalMaxima = 1;

39 hLocalMax.NeighborhoodSize = [3 3]; hLocalMax.Threshold = 1; location = step(hLocalMax, I) location = 7 4 3.7.2.6 Hàm vision.HoughLines

Hàm xác định toạ độ Đề các của đường thẳng trong ảnh, được diễn tả bởi cặp tham số rho và theta. Đối tượng đầu vào là các cặp rho và theta của ảnh tham chiếu. Đối tượng đầu ra là các vị trí của hàng và cột của các giao điểm giữa các đường thẳng và đường bao của ảnh tham chiếu. Các đường bao là biên dọc bên trái và bên phải và biên ngang của phía trên và phía dưới của ảnh tham chiếu.

Cấu trúc lệnh:

H = vision.HoughLines

H = vision.HoughLines(Name,Value)

Ví dụ: Xác định đường thẳng dài nhất trong ảnh.

Hình 3. 14 Ảnh circuit.tif

I = imread('circuit.tif'); hedge = vision.EdgeDetector;

hhoughtrans = vision.HoughTransform(pi/360,'ThetaRhoOutputPort', true); hfindmax = vision.LocalMaximaFinder(1, 'HoughMatrixInput', true);

hhoughlines = vision.HoughLines('SineComputation','Trigonometric function');

BW = step(hedge, I);

[ht, theta, rho] = step(hhoughtrans, BW);

linepts = step(hhoughlines, theta(idx(1)-1), rho(idx(2)-1), I); imshow(I); hold on;

40 line(linepts([1 3])-1, linepts([2 4])-1,'color',[1 1 0]);

Kết quả:

Hình 3. 15 Đường thẳng dài nhất trong ảnh

3.7.2.8 Hàm vision.ColorSpaceConverter

Hàm chuyển đổi thông tin giữa các không gian màu.  Cấu trúc lệnh

H = vision.ColorSpaceConverter

H = vision.ColorSpaceConverter(Name,Value)

Ví dụ: Chuyển đổi ảnh RGB sang không gian màu cường độ.

i1 = imread('pears.png'); imshow(i1); hcsc = vision.ColorSpaceConverter; hcsc.Conversion = 'RGB to intensity'; i2 = step(hcsc, i1); pause(2); imshow(i2);  Kết quả:

41

Hình 3. 16 Ảnh RGB

42

Một phần của tài liệu Nghiên cứu hệ thống quan sát cho xe trong việc xác định tình trạng giao thông đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 40 - 47)