3.1.2. Các bước cơ bản để thu nhận ảnh (Image Acquisition Toolbox)
Các bước để thu nhận ảnh bằng công cụ thu nhận ảnh của MATLAB: Bước 1 Cài đặt và cẩu hình cho thiết bị thu nhận ảnh Bước 2 Lầy thông tin về phần cứng
Bước 3 Tạo một đối tượng lối vào video
Bước 4 Xem dòng tín hiệu video lối vào (tùy chọn)
Bước 5 Cấu hình các thuộc tính cho đối tượng ảnh thu nhận (Tùy chọn) Bước 6 Thu nhận dữ liệu ảnh
Bước 7 Xóa bỏ các dữ liệu ảnh trong bộ nhớ
Bước 1: Cài đặt thiết bị thu nhận ảnh
Để có thể thu nhận được ảnh khi cắm các thiết bị thu nhận ảnh vào máy tính qua các cổng vào ra (thường là cổng USB) thì ta phải cài đặt các phần mềm điều khiển các thiết bị đó. Các phần mềm này thường được nhà cung cấp đưa đi kèm với các
thiết bị.
Bước 2: Lấy thông tin về phần cứng
Trong bước này ta phải thu nhận lấy các thông tin về phần cứng trước khi tạo ra một đối tượng ảnh.
Bảng thông tin dưới đây liệt kê các thông tin liên quan đến phần cứng của thiết bị thu nhận ảnh. Sử dụng hàm imaqhwinfo của Matlab để thu nhận thông tin từng mục
Adaptor name
Adaptor là một phần mềm Matlab sử dụng để giao tiêp với thiết bị thu nhận ảnh thông qua bộ phận điều khiển của thiết bị (Driver). Toolboxs xử lý ảnh trong Matlab có sẵn một số adaptor của các nhà cung cấp thiết bị thu nhận ảnh chính và một vài các thiết bị thu nhận ảnh riêng.
Device ID
ID thiết bị là một con số mà adptor đã gán duy nhất cho mỗi thiết bị thu nhận ảnh mà chúng có thể giao tiếp được
Chú ý: Nếu một thiết bị có ID tùy chọn thì toolbox sử dụng ID đầu tiên có thể làm giá trị mặc định.
Video format
Định dạng hình ảnh là chỉ ra độ phân giải cụ thể cho một tín hiệu ảnh (Bề rộng, chiều cao)
Một thiết bị thu nhận ảnh thường hỗ trợ nhiều định dạng khác nhau đề tùy lựa chọn cho người dùng.
Chú ý: Nếu định dạng của thiết bị là tùy ý hay không có thì toolbox sử dụng một trong các định dạng được hỗ trợ làm giá trị mặc định
+ Adaptor Name – Tên của Adaptor
Để biết tên của một adaptor, trong Matlab dùng câu lệnh imaqhwinfo và không có tham số như dưới đây:
imaqhwinfo ans =
InstalledAdaptors: {'matrox' 'winvideo'} MATLABVersion: '7.0 (R14)'
Nguyễn Văn Thắng – Luận văn thạc sĩ tổng quan về xử lý ảnh
ToolboxVersion: '1.5 (R14)'
Trong kết quả trả về của câu lệnh imaqhwinfo trong trường InstalledAdaptors liệt kê tất cả các adaptor hiện có trên máy tính. Trong ví dụ trên imaqhwinfo tìm thấy hai adaptor trong máy tính là „matrox‟ và „winvideo‟. Tuy nhiên một máy tính có thể có nhiều hơn hai hoặc chỉ có một adaptor, lựa chọn tên của adaptor để truy cập vào thiết bị thu nhận ảnh.
+ Device ID
Để tìm ID của từng thiết bị thu nhận ảnh, dùng câu lệnh imaqhwinfo với tham số duy nhất là tên của một adaptor.(tên của adaptor được tìm thấy ở phần Adaptor Name info = imaqhwinfo('winvideo') info = AdaptorDllName: [1x73 char] AdaptorDllVersion: '1.5 (R14)' AdaptorName: 'matrox' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]
Trong kết quả trả về của câu lệnh info = imaqhwinfo('winvideo' ), trường DeviceIDs cho ta tất cả các ID của tất cả các thiết bị có thể truy cập được thông qua adaptor đã chỉ ra. Cụ thể trong ví dụ trên ta dùng adaptor winvideo và có một giá trị ID trả về 1.
Để có nhiều thông tin hơn về từng thiết bị ta có thể xem cấu trúc trong trường DeviceInfo. Trường thông tin này là một mảng cấu trúc (structure array ). Mỗi một cấu trúc miêu tả từng thiết bị cụ thể. Tuy nhiên trong ví dụ trên trường DeviceIDs chỉ có một cấu trúc miêu tả một thiết bị có ID là 1. Một cách khác để lấy đầy đủ thông tin về từng thiết bị ta có thể dùng câu lệnh imaqhwinfo với cú pháp như sau:
dev_info = imaqhwinfo('matrox',1) dev_info = DefaultFormat: 'M_RS170' DeviceFileSupported: 1 DeviceName: 'Orion' DeviceID: 1 ObjectConstructor: 'videoinput('matrox', 1)' SupportedFormats: {1x10 cell}
Trong cú pháp câu lệnh trên ta chỉ ra cụ thể cả tên adaptor và ID của thiết bị.
+ Video Formats
Ta có thể lựa chọn định dạng video cụ thể cho dòng video lối vào. Để xác định xem thiết bị thu nhận ảnh của ta có thể hỗ trợ những định dạng video nào, xem thông tin trong trường SupportedFormats từ kết quả trả về của câu lệnh imaqhwinfo
Ví dụ:
vidinf=imaqhwinfo('winvideo',1) vidinf =
DefaultFormat: 'I420_160x120' DeviceFileSupported: 0
DeviceName: 'USB 2820 Video' DeviceID: 1 ObjectConstructor: 'videoinput('winvideo', 1)' SupportedFormats: {1x18 cell} >> vidinf.SupportedFormats ans = Columns 1 through 6
'I420_160x120' 'I420_320x240' 'I420_352x240' 'I420_352x288' 'I420_640x480' 'YUY2_160x120'
Columns 7 through 12
'YUY2_320x240' YUY2_352x240' 'YUY2_352x288' 'YUY2_352x480' 'YUY2_352x576' 'YUY2_360x480'
Columns 13 through 18
'YUY2_360x576' 'YUY2_480x480' 'YUY2_480x576' 'YUY2_640x480' 'YUY2_720x480' 'YUY2_720x576'
Bước 3: Tạo một đối tượng lối vào video (video input object)
Toolbox xử lý ảnh của Matlab sử dụng một đối tượng lối vào video làm một đại diện kết nối giữa Matlab và thiết bị thu nhận ảnh. Sử dụng các thuộc tính của đối tượng này ta có thể điều khiển được quá trình thu nhận ảnh.
Để tạo một đối tượng lối vào video ta dùng câu lệnh videoinput của Matlab. Cú pháp:
obj = videoinput('adaptorname')
obj = videoinput('adaptorname', deviceID)
Nguyễn Văn Thắng – Luận văn thạc sĩ tổng quan về xử lý ảnh
Giải thích các thành phần trong câu lệnh:
„adaptorname‟: Là một xâu kí tự chỉ ra tên của adaptor (tên của các adaptor có thể tìm thấy khi dùng câu lệnh imaqhwinfo
„deviceID‟: Là số xác định ID thiết bị. Nếu tham số này không có thì ID đầu tiên sẵn có được sử dụng như giá trị mặc định.
„format‟: Là một xâu chỉ ra định dạng video cho đối tượng. Nếu tham số này không được chỉ ra thì format mặc định của thiết bị sẽ được sử dụng.
Chú ý: Giá trị ID và định dạng của thiết bị dùng làm giá trị mặc định có thể biết được khi dùng câu lệnh: imaqhwinfo('adaptorname').
Câu lệnh videoinput sử dụng các tham số đã tìm ở bước 2 (adaptor name, device ID, and video format) để tạo ra đối tượng.
Trong các cú pháp ở trên ta thấy câu lệnh này chỉ có adaptorname là bắt buộc các tham số còn lại nếu không chỉ ra thì hàm videoinput sẽ sử dụng các giá trị mặc định
Ví dụ:
>> vidobj=videoinput('winvideo',1,'YUY2_640x480')
Summary of Video Input Object Using 'USB 2820 Video'.
Acquisition Source(s): composite, svideo, and tuner are available. Acquisition Parameters: 'composite' is the current selected source. 10 frames per trigger using the selected source.
'YUY2_640x480' video data to be logged upon START. Grabbing first of every 1 frame(s).
Log data to 'memory' on trigger.
Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START.
0 frames acquired since starting. 0 frames available for GETDATA.
Bước 4: Xem dòng tín hiệu video lối vào
Sau khi ta tạo được đối tượng lối vào video, MATLAB có thể truy cập vào thiết bị thu nhận ảnh và sẵn sàng thu nhận dữ liệu. Tuy nhiên trước khi nhận dữ liệu ta có thể xem trước dòng tín hiệu video xem có hài lòng hay không có muốn thay đối gì không ví dụ như ta muốn thay đổi vị trí của camera, thay đổi độ sáng, hay các thay đổi nào khác. Để xem tín hiệu video ta dùng câu lệnh preview(vidobj)
Ví dụ:
vidobj = videoinput(„winvideo‟,1,‟YUY2_640x480‟);
preview(vid);