- Trang Trang Trang Trang
5.1.1. Thu nhận ảnh vào bằng Matlab
Dùng Image Acquisition Toolbox của MatLab để thu thập ảnh số từ các thiết bị thu hình.
Hình 5.1: Các thành phần bên trong Image Acquisition Toolbox.
Cụ thểđược thực hiện theo các bước sau:
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, trong đồ án dùng Webcam của hãng Creavite.
+ 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 tới PC).
- TrangTrangTrangTrang 105105105105 -
Tên Nội dung
''WebCam Vista/Live! Cam Chat''
Thiết bị cĩ tên là ''WebCam Vista/Live! Cam Chat'' của hãng Creavite.
‘DCAM’ Các thiết bị dùng chuẩn IEEE 1394.
DeviceID: 1 Thiết bị cĩ chỉ số ID là 1.
‘winvideo’
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.
Bảng 5.1: Liệt kê các thơng số của thiết bị thu video.
* 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ứ 2 cĩ deviceID=2, v.v…
Để liệt kê xem loại winvideo cĩ bao nhiêu thiết bị gắn vào máy, ta cũng ta cũng dùng lệnh imaqhwinfo với đối số là winvideo.
Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu video Để tạo luồng dữ liệu video, dùng lệnh videoinput. Ví dụ
>> vid = videoinput('winvideo',1)
Bước 4: Hiển thị luồng video trên màn hình để xem thử (tuỳ chọn)
Sau khi tạo biến tham chiếu luồng video (MatLab gọi là tạo đối tượng video
ngõ vào), Ta cĩ thể dùng MatLab để lấy dữ liệu từ thiết bị thu hình (thu thập dữ liệu).
Tuy nhiên, trước khi làm việc này, ta cĩ thể xem trước luồng video để đảm bảo thiết bị hoạt động tốt (để điều chỉnh độ sáng, độ tương phản, độ hội tụ v.v…). Để xem trước luồng dữ liệu video, ta dùng lệnh preview. Ví dụ:
- TrangTrangTrangTrang 106106106106 -
Hình 5.2:Cửa sổ preview.
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, dùng lệnh stoppreview. Hoặc để đĩng cửa sổ preview, dùng lệnh
closepreview(vid).
Bước 5: Cấu hình cho hoạt động trích hình ảnh (tuỳ chọn)
Một số thơng số hoạt động của biến video mà bạn cĩ thể thay đổi. Trước tiên, ta phải hiểu là cĩ 2 đối tượng tác động khác nhau khi bạn tạo biến video.
+ Video input objects: Đối tượng này đại diện cho các thơng tin kết nối phần cứng. Nĩ được tạo bằng lệnh videoinput ở bước 3.
Để xem thơng tin các thuộc tính của đối tượng video (Video input objects) ta dùng lệnh get(biến đối tượng video). Ví dụ:
>> get(vid)
Hoặc để biết luồng dữ liệu hiện thời (luồng dữ liệu được chọn để xử lý) ta dùng lệnh getselectedsource(đối tượng video). Và do đĩ, ta thường dùng lệnh sau để biết thơng số của luồng dữ liệu hiện thời:
- TrangTrang 107TrangTrang 107107107 -
Trong các thơng số này, cĩ một số là chỉ đọc (read only), một số ta cĩ thể thay đổi được. Để thay đổi thơng số mong muốn, ta dùng lệnh set. Cấu trúc lệnh set thơng thường giống như khi ta tạo GUI. Ví dụ lệnh sau:
>> set(vid,'TriggerRepeat',Inf);
sẽ thiết lập cho thơng số triggerRepeat thành giá trị vơ cùng inf.
Hoặc ta cĩ thể thiết lập thơng số bằng cách xem biến video như một biến kiểu cấu trúc. Ví dụ:
>> vid.FrameGrabInterval = 5;
+ Video source objects: Khi bạn tạo video inut object, MatLab tự động tạo thêm đối tượng “video source object” và liên kết nĩ với video input object. Đối tượng này đại diện cho luồng dữ liệu hình ảnh. Cĩ thể tạo nhiều “video source object” trên một thiết bị phần cứng, nhưng tại một thời điểm thì chỉ cĩ một được chọn để xử lý. Để thiết lập giá trị cho Video source objects, ta phải đặt một biến đại diện thơng qua lệnh getselectedsource. Ví dụ:
>> vid_src = getselectedsource(vid)
Bước 6: Lấy dữ liệu hình ảnh
Ta tiến hành theo các bước sau để lấy dữ liệu:
+ Gọi hàm start để bắt đầu. (ví dụ : Start(vid)) . Một số thơng số của biến video sẽ bị khố thành dạng chỉđọc.
+ Lấy dữ liệu (hay cịn gọi là thu thập dữ liệu): Tuỳ vào thơng số TriggerType, ta cĩ nhiều cách lấy dữ liệu.
Ví dụ: ta thiết lập TriggerType là immediate thì MatLab tự động lấy dữ liệu chuyển vào bộ đệm ngay sau lệnh start. Nếu ta thiết lập là manual, MatLab chờ lệnh gọitrigger (lệnh này phải được gọi sau khoảng thời gian khởi tạo)
+ Đem dữ liệu trong bộđệm đi tính tốn hoặc sử dụng: Dữ liệu thu thập được sau khi trigger nằm ở bộ đệm hay ở đĩa cứng, hay cả hai tuỳ vào thơng số LoggingMode. Đểđem dữ liệu này vào workspace, ta dùng lệnh getdata.
Bước 7: Làm sạch bộ nhớ
Sau khi lấy dữ liệu video, ta cĩ thể giải phĩng bớt bộ nhớ bằng các lệnh sau:
>> delete(vid) >> clear
- TrangTrangTrangTrang 108108108108 -