II. Labview và xử lý ảnh dùng Labview
2.2.2 Xử lý ảnh trên Labview
Để hỗ trợ người dùng trong các lĩnh vực nhất định, National Instrument cung cấp các gói phần mềm tương ứng nhằm hỗ trợ các hàm thông dụng, cũng như là các kết nối vào ra tương ứng trên các KIT. Trong phần này người thực hiện đề tài sẽ giới thiệu cơ bản nhất các hàm, các điều khiển và các hiển thị sử dụng trong phạm vi đề tài.
- Thư viện VIsion trong bảng điều khiển
Như phần trên có đề cập, bảng điều khiển là nơi để xây dựng các khối hiển thị hay điều khiển. Thư viện VIsion trong bảng điều khiển bao gồm:
- IMAQ Image.ctl dùng định nghĩa các mô tả về kiểu dữ liệu của hình ảnh.
- Hai khối Image Display Control và Image Display Control (Classic) dùng để hiển thị các hình ảnh thu được. Sử dụng hay khối này, người lập trình có thể theo dõi chi tiết từng điểm ảnh cũng như thực hiện một số quát trình xử lý cơ bản dùng cho mục đích sửa lỗi chương trình.
Ngoài ra trong thư viện VIsion còn có các thư viện con như IMAQ VIsion Controls hay Machine VIsion Controls dùng để tạo các điều khiển thao tác trực tiếp trên VIs.
- Thư viện “VIsion and Motion” trong bảng hàm
Về tổng quát thư viện VIsion trong bảng hàm có thư viện ứng với từng mục đích cụ thể của xử lý ảnh như là: các thư viện giao tiếp thiết bị (NI-IMAQ, NI- IMAQdx, NI-IMAQ I/O), thư viện tiện ích (VIsion Utilities), thư viện xử lý ảnh (Image Processing), thư viện thị giác máy (Machine VIsion), thư viện xử lý nhanh (VIsion Express).
Hình 2.9: Địa chỉ truy cập các hàm Vision a. Thư viện thiết bị
Đây là thư viện mà người lập trình dùng để lấy thông tin từ Camera, cũng như là lấy ảnh hay Video từ Camera. Thư viện này gồm các thư viện con là NI-IMAQ và NI-IMAQdx. Tuy nhiên, hai thư viện NI-IMAQ và NI-IMAQdx tương tự nhau về chức năng, tuy nhiên, khối NI-IMAQ chỉ điều khiển được các Camera từ các bo PCI của National Instrument. Để sử dụng được các Camera hay Webcam từ máy tính hay các Module khác cần chú ý thiết lập thông số với thư viện NI-IMAQdx.
Hình 2.10 : Thư viện thiết bị camera NI-IMAQdx
Về thu thập hình ảnh có các hàm đáng quan tâm sau.
- Hàm Enumerate Cameras cho phép người dùng LabVIEW thống kê tất cả các Camera đang được kết nối với máy tính hay Module sử dụng LabVIEW. Hàm này cũng cung cấp tất cả các thông tin cơ bản về Camera như tên, loại, số series, cổng mà camera đang kết nối…
- Hàm Open dùng để mở Camera với cổng kết nối được lựa chọn từ hàm Enumerate Cameras.
- Hàm Configure Grab sẽ tạo các thiết lập ban đầu cho việc thu nhận ảnh một cách liên tục (Grab).
- Hàm Snap thực hiện việc chụp ảnh.
- Hàm Grab thực hiện việc lấy ảnh liên tục. Tuy nhiên để lấy ảnh liên tục cần có vòng lặp vô hạn để hàm có thể lập lại.
- Hàm Close sẽ đóng các giao điện kết nối mà người sử dụng muốn, giúp giải phóng tài nguyên cho việc điều khiển, trao đổi dữ liệu với Camera.
b. Thư viện tiện ích (VIsion Utilities)
Hình 2.11 : Thư viện tiện ích
Thư viện tiện ích (VIsion Utilities) cho phép người lập trình thực hiện các thao tác cơ bản về biển đổi ảnh, mở ảnh, lưu ảnh, tìm kiếm ảnh… Nó bao gồm các thư viện con: Thư viện quản lý ảnh (Image Management), thư viện tập tin (Files), thư viện hiển thị ảnh (External Display), thư viện về vùng quan tâm (Region of Interest), thư viện phục vụ thao tác người sử dụng (Image Manipulation và Pixel Manipulation), thư viện phủ (Overlay), thư viện thước đo (Calibration), thư viện tiện ích màu (Color Utilities) và thư viện cho các thiết bị thời gian thực (VIsion RT).
c. Thư viện quản lý ảnh
Thư viện quản lý ảnh hỗ trợ lập trình về các xử lý biến đổi cơ bản của một ảnh, tạo vùng nhớ tạm thời cho một ảnh… Thư viện này có một số hàm quan trọng mà hầu hết các chương trình xử lý ảnh sử dụng LabVIEW đều phải sử dụng như:
- IMAQ Create: tạo vùng nhớ tạm thời cho một ảnh. Đây là hàm mà tất cả mọi chương trình xử lý ảnh với LabVIEW đều dùng. Nó cho phép phân ho ạch một vùng nhất định trên bô nhớ để thực hiện xử lý.
Hình 2.13: Sơ đồ chân hàm IMAQ Create
Hàm này yêu cầu người sử dụng phải đặt tên cho ảnh cần tạo tại đầu vào Image Name. Tên này không phải là tên hiển thị của ảnh mà chỉ là tên để phân biệt vùng nhớ tạm thời của các ảnh khác nhau. Ngoài ra, bằng việc thay đổi loại ảnh (Image Type) mà người lập trình hoàn toàn có được một số ảnh chuẩn của LabVIEW như ảnh xám, ảnh màu RGB hay ảnh màu HSI…
- Trái ngược với IMAQ Create, IMAQ Dispose sẽ hủy vùng nhớ tạm thời đã cấp cho ảnh (Image) tương ứng hoặc người lập trình có thể chọn hủy tất cả các ảnh bằng cách đặt chế độ đúng (Yes) cho chân “All Image?” . Hàm này cần thiết khi người lập trình thao tác với nhiều ảnh mà tài nguyên bộ nhớ máy thấp.
Hình 2.14 : Sơ đồ chân hàm IMAQ Dispose
- IMAQ GetImageInfo trả về tất cả thông tin c ủa ảnh như độ phân giải ngang (X Resolution), độ phân giải dọc (Y Resolution), loại ảnh (Image Type), đơn vị đo lường ảnh (Unit)…
Hình 2.15 : Sơ đồ chân hàm IMAQ GetImageInfo
- IMAQ GetImageSize trả về độ phân giải lớn nhất của ảnh về chiều ngang (X Resolution) và chiều dọc (Y Resolution).
Hình 2.16 : Sơ đồ chân hàm IMAQ GetImageSi ze
- IMAQ Copy sẽ hỗ trợ người sử dụng khi muốn xử lý trên ảnh gốc, và sau khi xử lý cần đem so sánh với ảnh lúc ban đầu. Khối IMAQ Copy sẽ tạo một ảnh nhân bản, việc xử lý sẽ không ảnh hưởng đến ảnh gốc lúc đầu.
Hình 2.17:Sơ đồ chân hàm IMAQ Copy
Khi sử dụng khối IMAQ Copy, ảnh nguồn (Image Scr) là ảnh cần sao chép, ảnh đích (Image Dst) là vùng nhớ tạm thời cung cấp cho ảnh đích. Ảnh đích ngõ ra (Image Dst Out) là ảnh đã sao chép. Ảnh nguồ n và ảnh đích ngõ ra giống nhau nhưng không có liên kết với nhau.
d. Thư viện quản lý tập tin
Thư viện quản lý tập tin hỗ trợ người sử dụng thao tác với các tập tin hình ảnh được lưu trên ổ đĩa cứng như: lưu ảnh, mở ảnh, mở hộp thoại lưu ảnh, lấy thông tin ảnh…
- IMAQ ReadFile cho phép đọc hầu hết các định dạng ảnh được lưu trên ổ đĩa cứng như (BMP, TIFF, JPEG, JPEG2000, PNG và AIPD). Khi sử dụng IMAQ ReadFile cần đưa vào bộ nhớ đệm được tạo sẵn từ khối IMAQ Create và đưa vào chân hình ảnh (Image), đường dẫn (File Path) là các ký t ự chỉ vị trí ảnh được lưu
Hình 2.19: Sơ đồ chân hàm IMAQ ReadFile
- IMAQ WriteFile sẽ ghi ảnh từ bộ nhớ đệm xuố ng một đường dẫn có sẵn. Ảnh từ bộ nhớ đệm sẽ được đưa vào ngõ ảnh (Image). Ngõ ảnh và đường dẫn (File Path) là hai giá trị bắt buộc phải đưa vào.
Hình 2.20: Sơ đồ chân hàm IMAQ WriteFile
- IMAQ GetFileInfo sẽ cho các thông tin về ảnh như độ phân giải (X Resolution và Y Resolution), loại tập tin (File Type), loại ảnh (Image Type) cũng như là loại dữ liệu của ảnh (File Data Type).
e. Thư viện tiện ích màu
Hình 2.22: Thư viện tiện ích màu
Thư viện tiện ích màu sẽ hỗ trợ người dùng, trích xuất một không gian của 1 bức ảnh màu, thay thế màu, đặt màu, chuyển các ảnh màu thành chuỗi và ngược lại… Đây là một công cụ xử lý lúc đầu nếu như người lập trình muốn thao tác trên ảnh màu. Thư viện này có một số hàm đáng chú ý:
- IMAQ ExtractColorPlanes cho phép người lập trình lấy ra các mô hình màu (RGB, HSL, HSV hay HIS) từ một bức ảnh đã lưu được.
Hình 2.23: Sơ đồ chân hàm IMAQ ExtractColorPlanes
Với hàm IMAQ ExtractColorPlanes thì chỉ cần đưa ảnh vào ở nguồn ảnh (Image Scr) và lựa chọn một trong các mô hình trên thì các ngõ ra tương ứng là các thành phần tương ứng của một bức ảnh mà mô hình màu thể hiện. Và để đơn giản hơn cho việc sử dụng hàm, có thể sử dụng hàm IMAQ ExtractSingleColorPlane để trích xuất một thành phần của ảnh.
- Để có giá trị của các thành phần R, G, B của từng điểm ảnh tùy thuộc vào tọa độ (X Coordinate và Y Coordinate), người lập trình có thể dùng hàm IMAQ GetColorpixel. Hay người lập trình cũng có thể thiết lập lại giá trị của thành phần R, G, B của điểm ảnh với hàm IMAQ SetColorpixel.
Hình 2.24: Sơ đồ chân hàm IMAQ GetColorPixel f. Thư viện xử lý ảnh
Hình 2.25: Thư viện xử lý ảnh
Thư viện xử lý ảnh trong LabVIEW cung cấp tương đối đầy đủ cho người lập trình các hàm cơ bản để xử lý ảnh như: các hàm l ấy ngưỡng, tìm ngưỡng, biến đổi ngưỡng, các bộ lọc ảnh, các phép biến đổi hình thái, các phép phân tích ảnh, các xử lý ảnh màu, các phép toán ảnh, các biến đổi trên miền tần số…
- IMAQ MultiThreshold là phép biến đổi đa ngưỡng. Tất cả các giá trị của điểm ảnh nằm trong ngưỡng do người sử dụng quy định sẽ được biến đổi về giá trị định trước, các điểm ngoài ngưỡng sẽ về giá trị 0.
Hình 2.26: Sơ đồ chân hàm IMAQ MultiThreshold
Hàm IMAQ MultiThreshold gồm hai ngõ vào bắt buộc là: nguồn ảnh cần biến đổi (Image Src), và ngưỡng cần lấy (Threshold Data). Ảnh sau khi biến đổi ngõ ra (Image Dst Out) sẽ là ảnh nguồn sau khi biến đổi, hoặc ảnh tham chiếu ngõ vào (Image Dst) nếu ảnh tham chiếu ngõ vào được kết nối.
- IMAQ Multiply là phép toán cho phép bạn tỉ lệ thức giữ hình ảnh muốn hiệu chỉnh với hình ản gốc với hệ số nhân.
Hình 2.27: IMAQ Multiply
Để thay đổi mức tỉ lệ thức theo mức số nhân dựa vào tỉ lệ Constant đưa vào.
- IMAQ Absolute Difference cho phéo ta phổi hợi các hình hảnh đã hiệu chỉnh lại với nhau.
Hình 2.28 : IMAQ Absolute Difference Thư viện thị giác máy
Thư viện thị giác máy cung cấp các hàm hỗ trợ một số tác vụ xử lý trên các hệ thống xử lý, phân tích ảnh như: thư viện vùng quan tâm, thư viện tọa độ, đếm và đo lường vật thể, tìm kiếm mẫu, thước đo… Trong khuôn khổ đề tài đồ án, người thực hiện xin trình bày một số hàm sử dụng như sau:
- IMAQ Find Patterm 3 cho phép tìm kiếm hình ảnh từ hình đã xác định trước.
Hình 2.30: IMAQ Find Patterm 3
là hình ảnh được đưa vào để tìm kiếm. Hình này có thể là
hình đã lưu trong thư mục hoặc lưu tạm thời trên bộ nhớ, nếu lưu tạm thời thì khi bắt đầu tìm kiếm thì hàm sẽ yêu cầu và dừng chương trình vì thế khi bắt đầu chương trình phải tạo thư viện ảnh cho hàm.
hình ảnh ta muốn thực thi lên. Có thề là hình ảnh ho ặc camera.
Ngõ vào này được thiết lập khi muốn có các giá trị
tìm kiếm như tọa độ, góc quay. Bắt buộc phải thực hiện lệnh này để hiện thị khi tìm thấy các giá trị mong muốn và định dạng giá trị ngõ ra .
cho phép người dùng thực hiện cài đặt tìm kiếm của mình như số ảnh có thể tìm kiếm, mức độ chình xác. Thay đổi trong quá trình thực nghiệm là điều cần thiết khi hoạt động trên các loại môi trường khác nhau.
hiện thị các giá trị đã thiết lập. Giá trị hiển thị sẽ cung cấp đầy
đủ các yêu cầu sau khi quá trình tìm kiếm kết thúc và dựa vào số liệu này ta có thể thiết lập các chương trình tiếp theo để hoàn thiện chương trình.