Tải bản đầy đủ - 0 (trang)
Hình 3.8: Kết quả dùng houghpeaks

Hình 3.8: Kết quả dùng houghpeaks

Tải bản đầy đủ - 0trang

figure, imshow(rotI), hold on

max_len = 0;

for k = 1:length(lines)

xy = [lines(k).point1; lines(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

% Plot beginnings and ends of lines

plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');

plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

% Determine the endpoints of the longest line segment

len = norm(lines(k).point1 - lines(k).point2);

if ( len > max_len)

max_len = len;

xy_long = xy;

end

end

% highlight the longest line segment

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','blue');



 Kết quả:



47



Hình 3.9: Kết quả sử dụng hàm houghlines.

3.2. Image Acquisition Toolbox.

3.2.1. Chức năng.

Image Acquisition Toolbox là tập hợp các hàm của MATLAB có chức năng

thu thập hình ảnh số từ các thiết bị thu hình. Cụ thể là:

-



Thu thập hình ảnh từ các thiết bị thu hình khác nhau, từ loại chuyên dụng



-



đến loại rẻ tiền như Webcam (giao tiếp USB).

Trình chiếu (preview) luồng dữ liệu video từ thiết bị thu hình.

Trích hình ảnh từ luồng dữ liệu video.

Thiết lập các callback cho các sự kiện khác nhau.

Chuyển dữ liệu hình ảnh vào khơng gian workspace của MATLAB để xử lý

ảnh tiếp theo.



3.2.2. Các bước thu thập hình ảnh cơ bản.

Bước 1: Gắn thiết bị thu hình vào máy tính và cài đặt driver điều khiển.

-



Gắn thiết bị thu hình vào máy tính.

Cài đặt driver (trình điều khiển) cho thiết bị (được cho bởi nhà sản xuất).

Xem thử hình ảnh video hiện trên máy tính thơng qua phần mềm của nhà sản



-



xuất.

Khởi động MATLAB



Bước 2: Chỉ định thông tin phần cứng:

Ta cần chỉ định cho MATLAB biết phần cứng nào dùng để lấy dữ liệu (vì có

thể có nhiều camera kết nối với PC).

Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng.

>> imaqhwinfo

ans =

InstalledAdaptors: {'gentl' 'gige' 'matrox'



'winvideo'}



MATLABVersion: '8.1 (R2013a)'

ToolboxName: 'Image Acquisition Toolbox'

ToolboxVersion: '4.5 (R2013a)'



48



Trong đó ‘winvideo’ chỉ các thiết bị dùng chuẩn Windows Driver Model

(WDM) hoặc Video for Windows (VFW). Bao gồm các loại USB WEBCAM và

camera IEEE 1394.

Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị cùng loại

gắn vào PC được đánh số ID, thiết bị thứ nhất có deviceID = 1, thiết bị thứ hai có

deviceID = 2,…

Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, ta cũng dùng

lệnh imaqhwinfor với đối số là winvideo.

>> imaqhwinfo('winvideo')

ans =

AdaptorDllName: [1x81 char]

AdaptorDllVersion: '4.5 (R2013a)'

AdaptorName: 'winvideo'

DeviceIDs: {[1]}

DeviceInfo: [1x1 struct]

Có một thiết bị với DeviceID là 1. Ta có thể tìm hiểu thêm thơng tin về thiết

bị này bằng cú pháp:

>> imaqhwinfo('winvideo',1)

ans =

DefaultFormat: 'YUY2_160x120'

DeviceFileSupported: 0

DeviceName: 'HP Webcam'

DeviceID: 1

VideoInputConstructor: 'videoinput('winvideo', 1)'

VideoDeviceConstructor:

'imaq.VideoDevice('winvideo', 1)'

SupportedFormats: {1x5 cell}

Đây là webcam mặc định của laptop.

Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu hình ảnh.



49



Để tạo luồng dữ liệu hình ảnh ta dùng lệnh videoinput hoặc lệnh

imaq.VideoDevice

Ví dụ:

>> vid = videoinput('winvideo',1)

Summary of Video Input Object Using 'HP Webcam'.

Acquisition Source(s):

Acquisition Parameters:



input1 is available.

'input1' is the current selected

source.

10 frames per trigger using the

selected source.

'YUY2_160x120' video data to be

logged upon START.

Grabbing first of every 1

frame(s).

Log data to 'memory' on trigger.



Trigger Parameters:

Status:



1 'immediate' trigger(s) on START.

Waiting for START.

0 frames acquired since starting.

0 frames available for GETDATA.



Bước 4: Hiển thị luồng video lên màn hình để xem thử

Để xem trước luồng dữ liệu video ta dùng lệnh preview.

Ví dụ: preview(vid)

Màn hình lúc này hiện lên cửa sổ video của đối tượng vid. Để kết thúc xem

ta dùng lệnh stoppreview hoặc để đóng cửa sổ preview ta dùng lệnh

closepreview(vid).

Bước 5: Lấy một khung ảnh và lưu thành file đồ hoạ.

Để lấy một ảnh vào xử lý ta dùng lệnh getsnapshot.

Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite.

Bước 6: Làm sạch bộ nhớ



50



Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằng các lệnh

sau:

delete(vid)

clear

close(gcf)

3.3. Computer Vision System Toolbox.

Đây là bộ cơng cụ được sử dụng chính trong đề tài.

3.3.1. Chức năng.

Computer Vision Toolbox là bộ công cụ cung cấp các giải thuật, hàm và các

ứng dụng cho việc mơ phỏng thị giác máy và xử lí ảnh. Một số ứng dụng chính :

-



Phát hiện và nhận dạng đối tượng.

Theo dõi đối tượng.

Hiệu chỉnh camera.

Xử lí video, chú thích đối tượng trong video, xuất nhập video, hiển thị video.



3.3.2. Các hàm xử lí video.

3.3.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ó đ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ó đi là: .jpg, .bmp, .mpeg, .mp2, .mpg, .mp4, m4v, .mj2, .wmv, .asf,

.asx, .wav, .aif, .aiff, .aifc, .mp3.

3.3.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



51



videoPlayer = vision.VideoPlayer(Name,Value)

 Để hiển thị một video frames cần thực hiện:

o Định nghĩa và thiết lập đối tượng mở theo cú pháp.

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ả:



52



Hình 3.10: 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.3.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:

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

H = vision.ImageFilter(Name,Value)

3.3.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ả:



53



Hình 3.11: Ảnh cường độ



Hình 3.12: Ảnh nhị phân

3.3.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)



54



 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;

hLocalMax.NeighborhoodSize = [3 3];

hLocalMax.Threshold = 1;



location = step(hLocalMax, I)

location =

7



4



3.3.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.



55



Hình 3.13: Ả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;

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



 Kết quả:



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

3.3.2.7. Hàm vision.ColorSpaceConverter.

Hàm chuyển đổi thông tin giữa các không gian màu.



56



 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ả:



Hình 3.15: Ảnh RGB



57



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Hình 3.8: Kết quả dùng houghpeaks

Tải bản đầy đủ ngay(0 tr)

×