1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật điện tử: Ứng dụng xử lý ảnh nhận dạng vật thể theo màu sắc và hình dạng cho robot tay máy

117 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng Xử Lý Ảnh Nhận Dạng Vật Thể Theo Màu Sắc Và Hình Dạng Cho Robot Tay Máy
Tác giả Đặng Đức Duy
Người hướng dẫn PGS.TS. Hoàng Đình Chiến
Trường học Trường Đại học Bách Khoa, ĐHQG - HCM
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại Luận văn thạc sĩ
Năm xuất bản 2014
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 117
Dung lượng 3,12 MB

Cấu trúc

  • Chương 1 (18)
    • 1.1. Phương pháp nhận dạng vật thể theo màu sắc (18)
      • 1.1.1. Tạo vùng ROI (Region of Interest) (18)
      • 1.1.2. Decompose channels (19)
      • 1.1.3. Transform color space (19)
      • 1.1.4. Nhận dạng (21)
    • 1.2. Phương pháp nhận dạng vật thể theo hình dạng (21)
      • 1.2.1. Nhận dạng dựa vào mẫu (21)
        • 1.2.1.1. Sử dụng mẫu là mô hình chứa các đặc trưng nhận dạng (21)
        • 1.2.1.2. Sử dụng mẫu là ảnh chứa duy nhất vật thể cần nhận dạng (23)
      • 1.2.2. Nhận dạng dựa vào đặc trưng của vật thể (28)
  • Chương 2 (30)
    • 2.1. Phần mềm MVTEC HALCON/Hdevelop 9.0.2 (30)
      • 2.1.1. Giới thiệu (30)
      • 2.1.2. Giao diện làm việc của phần mềm (31)
    • 2.2. Thư viện OpenCV (31)
      • 2.2.1. Giới thiệu (31)
      • 2.2.2. Cấu trúc thư viện mã nguồn mở OpenCV (32)
  • Chương 3 (33)
    • 3.1. Nhận dạng vật thể theo màu sắc và hình dạng trong HALCON theo giải thuật đã nghiên cứu (33)
      • 3.1.1. Nhận dạng vật thể theo màu sắc trong HALCON (33)
        • 3.1.1.1. Tạo vùng ROI (Region of Interest) (33)
        • 3.1.1.2. Decompose channels (34)
        • 3.1.1.3. Transform color space (34)
        • 3.1.1.4. Nhận dạng (34)
      • 3.1.2. Nhận dạng vật thể theo hình dạng trong HALCON (37)
        • 3.1.2.1. Tạo mẫu (38)
        • 3.1.2.2. Đọc mẫu (42)
        • 3.1.2.3. Nhận dạng (43)
    • 3.2. Nhận dạng vật thể theo màu sắc và hình dạng trong thư viện OpenCV theo giải thuật đã nghiên cứu (44)
      • 3.2.1. Nhận dạng vật thể theo màu sắc trong OpenCV (44)
      • 3.2.2. Nhận dạng vật thể theo hình dạng trong OpenCV (45)
        • 3.2.2.1. Chuyển sang ảnh trắng đen (46)
        • 3.2.2.2. Tìm contour (49)
        • 3.2.2.3. Lọc bỏ contour nhiễu (49)
        • 3.2.2.4. Xác định hình dạng contour (50)
        • 3.2.2.5. Xác định vật thể trong ảnh (50)
    • 3.3. So sánh kết quả nhận dạng giữa HALCON và OpenCV (51)
      • 3.3.1. Sai số nhận dạng (51)
        • 3.3.1.1. Sai số nhận dạng vật thể theo màu sắc (51)
        • 3.3.1.2. Sai số nhận dạng vật thể theo hình dạng (51)
      • 3.3.2. Thời gian nhận dạng (59)
        • 3.3.2.1. Thời gian nhận dạng theo màu sắc (59)
        • 3.3.2.2. Thời gian nhận dạng theo hình dạng (0)
  • Chương 4 (63)
    • 4.1. Giới thiệu robot tay máy (63)
    • 4.2. Lập trình điều khiển robot tay máy (63)
      • 4.2.1. Điều khiển theo phương pháp cho học trước tọa độ (64)
        • 4.2.1.1. Ưu điểm (65)
        • 4.2.1.2. Nhược điểm (66)
      • 4.2.2. Điểu khiển theo phương pháp sử dụng động học ngược (66)
        • 4.2.2.1. Tính giá trị độ rộng xung để điều khiển một khớp quay một góc 1 (rad) (66)
        • 4.2.2.2. Thiết lập phương trình động học ngược tính giá trị góc quay từng khớp theo tọa độ đỉnh đầu kẹp của tay máy và góc xoay của vật thể cần gắp (67)
        • 4.2.2.3. Thiết lập công thức tính giá trị các độ rộng xung theo tọa độ của vị trí đỉnh đầu kẹp tay máy và góc xoay của vật thể (77)
        • 4.2.2.4. Ưu điểm (81)
        • 4.2.2.5. Nhược điểm (81)
  • Chương 5 (82)
    • 5.1. Ứng dụng điều khiển tay máy gắp sản phẩm trên băng chuyền bỏ vào nơi (82)
      • 5.1.1. Phân tích giải thuật (84)
        • 5.1.1.1. Nhận dạng màu (84)
        • 5.1.1.2. Điều khiển tay máy gắp và đặt vật (85)
      • 5.1.2. Code chương trình điều khiển của ứng dụng (85)
    • 5.2. Ứng dụng điều khiển tay máy gắp vật ở vị trí bất kì sắp xếp vào nơi qui định (86)
      • 5.2.1. Phân tích giải thuật (89)
        • 5.2.1.1. Nhận dạng vật thể theo hình dạng (89)
        • 5.2.1.2. Xác định tọa độ tâm và góc xoay của vật thể (89)
        • 5.2.1.3. Nhận dạng vật thể theo màu (97)
        • 5.2.1.4. Điều khiển tay máy gắp vật (98)
        • 5.2.1.5. Điều khiển tay máy đặt vật (102)
      • 5.2.2. Code chương trình điều khiển của ứng dụng (102)
  • Chương 6 (103)
    • 6.1. Kết luận (103)
    • 6.2. Hướng phát triển (104)
  • TÀI LIỆU THAM KHẢO (105)
  • PHỤ LỤC (106)
    • A. Các hàm HALCON sử dụng trong luận văn (106)
    • B. Các hàm OpenCV sử dụng trong luận văn (111)

Nội dung

Chương trình xử lý ảnh trong phần mềm HALCON được viết theo cú pháp ngôn ngữ của phần mềm này, sau đó sử dụng chức năng chuyển đổi ngôn ngữ của phần mềm để chuyển sang dạng ngôn ngữ CSha

Phương pháp nhận dạng vật thể theo màu sắc

Luận văn dùng phương pháp nhận dạng vật thể theo màu được thực hiện theo lưu đồ giải thuật sau

Hình 1.1: Lưu đồ giải thuật nhận dạng màu

1.1.1 Tạo vùng ROI (Region of Interest)

Vùng ROI được tạo nhằm mục đích giới hạn vùng ảnh cần xử lý (vùng ảnh chứa thông tin cần để nhận dạng), loại bỏ các phần ảnh dư thừa (phần ảnh không chứa thông tin có ích cho quá trình nhận dạng) Nhờ đó, quá trình này sẽ loại bỏ đáng kể các thành phần nhiễu làm sai lệch kết quả nhận dạng

Mỗi một ảnh số đều được biểu diễn ở dạng tập hợp các pixel (điểm ảnh), mỗi pixel có một tọa độ (x; y) trong không gian ảnh 2 chiều Do đó, để tạo vùng ROI, phải dựa vào tọa độ của các pixel ảnh Hình 1.2 minh họa cách tạo vùng ROI dạng hình chữ nhật cho một ảnh I dựa vào tọa độ của 3 pixel A, B, C Các pixel có tọa độ nằm trong phạm vi hình chữ nhật ABCD trong hệ tọa độ ảnh Oxy (xA ≤ x ≤ xB và yA

≤ y ≤ yC) sẽ được giữ lại, còn lại bị lọa bỏ

O x y xA xB yA yC Ảnh I

Hình 1.2: Hình minh họa tạo vùng ROI ABCD cho ảnh I 1.1.2 Decompose channels

Phân tách ảnh theo vùng giới hạn bởi ROI thành ba thành phần: Đỏ (Red), Xanh lá (Green), Xanh dương (Blue) là ba thành phần cơ bản trong không gian màu RGB của ảnh màu Quá trình này đóng vai trò quan trọng trong nhận dạng màu sắc.

1.1.3 Transform color space Ảnh màu là tập hợp của 3 thành phần Red, Green, Blue trong không gian màu RGB (hình 1.3) Mỗi thành phần có dạng là một ảnh xám (ảnh xám là ảnh có các pixel được gán một giá trị mức xám nằm trong đoạn [0, 255] như trong hình 1.5 (a)

Nếu nhận dạng màu trực tiếp trong không gian màu RGB thì sẽ gặp khó khăn vì phải dựa trên cả 3 thành phần Red, Green, Blue để nhận dạng cho một màu Nếu chỉ dựa trên một thành phần thì không nhận dạng một màu so với các màu khác được vì sẽ có nhiều màu có cùng giá trị trên một thành phần Ví dụ như các màu đỏ, trắng, vàng đều có giá trị thành phần Red là 255 hay màu lam, tím, trắng đều có giá trị thành phần Blue là 255

Vấn đề trên được giải quyết bằng cách chuyển ba thành phần Red, Green, Blue sang một không gian màu khác, đó là không gian màu HSV như trong hình 1.4 gồm 3 thành phần Hue, Saturation và Value Trong đó, thành phần Hue thể hiện màu thuần túy, tức là một giá trị thể hiện cho duy nhất một màu Thành phần Saturation thể hiện độ bão hòa màu (mức độ tươi hoặc xẫm của màu) và Value thể hiện độ sáng màu, cả hai thành phần này liên quan đến độ sáng của ảnh gây ra do điều kiện ánh sáng khi thu ảnh Luận văn chỉ giới hạn thực hiện nhận dạng trong một điều kiện ánh sáng phòng, do đó chỉ cần dựa vào một thành phần Hue để nhận dạng màu

Trong không gian màu RGB, màu chuẩn được xác định bằng các giá trị R, G, B cụ thể: màu đỏ chuẩn (R = 255, G = 0, B = 0), màu lục chuẩn (R = 0, G = 255, B = 0), màu lam chuẩn (R = 0, G = 0, B = 255) Những giá trị này có thể được chuẩn hóa về phạm vi [0; 1] để thuận tiện cho việc xử lý và tính toán màu sắc.

Hình 1.4 thể hiện không gian màu HSV Trong đó, đi theo vòng tròn từ 0 -360 độ là trường biểu diễn màu sắc (Hue) Bắt đầu từ màu đỏ chuẩn (red primary) tới màu lục chuẩn (green primary) nằm trong khoảng 0 – 120 , từ 120 – 240 độ là màu lục tới lam chuẩn (green primary - blue primary) Từ 240 – 360 là từ màu lam chuẩn quay về màu đỏ chuẩn Giá trị độ sáng (V) được biểu diễn bằng cách đi từ đáy hình trụ lên đỉnh và nằm trong khoảng từ 0 – 1 (chuẩn hóa) Ở đáy hình trụ V có giá trị là 0, là tối nhất và trên đỉnh hình trụ là sáng nhất (V = 1) Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S) S có giá trị từ 0 – 1 (chuẩn hóa), 0 ứng với tâm hình trụ là chỗ màu sắc nhạt nhất, 1 ở ngoài mặt trụ là nơi màu sắc đậm nhất

Các bước chuyển đổi từ hệ màu RGB sang HSV được thực hiện như sau: Đặt M = max(R, G, B), m = min(R, G, B) và C = M – m - Nếu M = R: H = mod 6 (mod 6: phép chia modulo cho 6) (1.1)

Giá trị H (thành phần Hue) được tính: H = H x 60 (C = 0 thì H = 0 ) (1.4) Giá trị V (thành phần Value) được tính: V = M (1.5) Giá trị S (thành phần Saturation) được tính: S = (V hoặc C = 0 thì S = 0) (1.6)

Hình 1.3: Không gian màu RGB

Hình 1.4: Không gian màu HSV 1.1.4 Nhận dạng

Quá trình nhận dạng được thực hiện trên thành phần Hue để xác định màu của vật thể.

Phương pháp nhận dạng vật thể theo hình dạng

1.2.1.1 Sử dụng mẫu là mô hình chứa các đặc trưng nhận dạng

Các đặc trưng nhận dạng là các đặc điểm giúp phân biệt vật thể cần nhận dạng với các vật thể khác trong ảnh Các đặc điểm này chủ yếu nằm ở các vị trí thuộc đường viền của vật thể như các phần góc, cạnh hay các họa tiết trên vật thể a) b) Hình 1.5: Ảnh gốc (a) và ảnh thể hiện đường viền của vật thể (b)

Trong phương pháp này, mẫu sẽ được tạo từ ảnh mẫu chứa duy nhất vật thể cần nhận dạng hoặc bao gồm cả các vật thể khác a) b) c)

Hình 1.6: Ảnh dùng để tạo mẫu: a) Chỉ chứa vật thể cần nhận dạng, b) Chứa cả các vật thể khác, c) mẫu được tạo

Các đặc trưng nhận dạng cho vật thể sẽ được rút trích từ các pixel thuộc về phần ảnh của vật thể trong ảnh mẫu, và lưu vào một mô hình mẫu Mẫu này sẽ được dùng để nhận dạng vật thể trong ảnh

Mẫu được tạo ra dựa trên các đặc điểm nhận dạng chủ yếu nằm ở vị trí đường viền Để tạo được dạng mẫu như trên, một phương pháp hiệu quả là dựa vào mức xám của các pixel trong ảnh Tại vị trí đường viền, mức xám của pixel sẽ thay đổi đột ngột, đồng nghĩa với việc giá trị mức xám của pixel tăng hoặc giảm đáng kể so với pixel kế cận Đối với ảnh màu RGB cơ bản, mức xám G của mỗi pixel được tính bằng công thức chuyển ảnh màu RGB sang ảnh xám.

Giải thuật của phương pháp sẽ được trình bày cụ thể trong chương 3

1.2.1.2 Sử dụng mẫu là ảnh chứa duy nhất vật thể cần nhận dạng

Khác với phương pháp sử dụng mẫu là mô hình chứa các đặc trưng nhận dạng, phương pháp này sẽ dùng trực tiếp mẫu (ảnh chứa duy nhất vật thể cần nhận dạng) đối chiếu với ảnh (chứa vật thể cần nhận dạng và các vật thể khác) theo các điểm đặc trưng để nhận dạng chính xác

Mẫu và ảnh sẽ được rút trích các điểm đặc trưng, sau đó so sánh đối chiếu nhau để nhận dạng chính xác vật thể trong ảnh

Tìm kiếm đặc điểm là một kỹ thuật quan trọng trong xử lý ảnh Trong số nhiều giải thuật hiện có, SURF (Đặc điểm bền bỉ được tăng tốc) nổi bật nhờ tốc độ xử lý nhanh và độ chính xác cao.

Lưu đồ giải thuật SURF như sau

Hình 1.7: Lưu đồ giải thuật SURF a Interest Point Detection

Là quá trình tìm các điểm đặc trưng, được thực hiện dựa trên ma trận Hessian

Cho trước một pixel p = (x, y) trên ảnh I, ma trận Hessian H(p, σ) tại p theo tỉ lệ σ được xác định bằng công thức:

Trong đó, L (p, σ)là tích chập đạo hàm cấp hai của hàm Gaussian g(σ) với ảnh I tại p, tương tự với L (p, σ) và L (p, σ) Giải thuật SURF tính đạo hàm cấp 2 của hàm Gaussian bằng các bộ lọc (box filter) được xấp xỉ từ mô hình rời rạc

Hình 1.8 thể hiện mô hình rời rạc của đạo hàm cấp hai hàm Gaussian với tỉ lệ σ=1.2 và các bộ lọc được xấp xỉ có kích thước tương ứng là 9x9

Hình 1.8: Xấp xỉ đạo hàm cấp 2 của hàm Gaussian bằng bộ lọc

Trong hình 1.8, từ trái qua, ảnh thứ nhất là mô hình rời rạc đạo hàm cấp 2 của hàm Gaussian theo trục y, ảnh thứ hai theo trục x và y Ảnh thứ ba và thứ tư lần lượt là các bộ lọc xấp xỉ của ảnh một và hai Phép tích chập của ảnh I với các bộ lọc này được thực hiệc rất nhanh bằng việc sử dụng ảnh tích lũy của ảnh I Ảnh tích lũy được thiết lập bằng cách thay đổi giá trị mức xám của các pixel trong ảnh gốc Gọi G là giá trị mức xám của pixel có tọa độ (x, y) trong ảnh gốc, giá trị mức xám của pixel có tọa độ tương ứng trong ảnh tích lũy là G được tính theo công thức sau:

Nhờ ảnh tích lũy, việc tìm tổng giá trị mức xám trong một phân vùng ảnh (có dạng hình chữ nhật) của ảnh gốc trở nên đơn giản, chỉ cần thực hiện cộng trừ các giá trị mức xám của 4 pixel trong ảnh tích lũy như trong hình minh họa 1.9

C O y x Ảnh tích lũy của ảnh I Σ ứ á = A − C − B + D

Hình 1.9: Tính tổng giá trị mức xám trong một phân vùng ảnh DBAC dựa vào ảnh tích lũy (A, B, C, D là giá trị mức xám của 4 pixel tại 4 góc của vùng ảnh)

Vị trí của điểm đặc trưng được xác định bằng cách sử dụng thuật toán non- maximum suppression 3x3x3 neigbourhood để xét xấp xỉ định thức của ma trận Hessian trong không gian ảnh và không gian tỉ lệ Công thức tính xấp xỉ định thức ma trận Hessian như sau: det H ấ ỉ = D D − (w D ) (1.10) Trong đó w = 0.9 là trọng số cân bằng D , D , D là các bộ lọc được xấp xỉ

Không gian tỉ lệ được tạo ra bằng cách chập ảnh với các bộ lọc có kích thước tăng dần Hình 1.10 (a) thể hiện không gian tỉ lệ, (b) là biểu diễn không gian tỉ lệ theo octaves và scale (tỉ lệ), (c) là cách tạo ra bộ lọc kích thước 15x15 ở octave đầu tiên từ kích thước 9x9 (kích thước nhỏ nhất trong không gian tỉ lệ Hình 1.11 thể hiện 3x3x3 neigbourhood của pixel đánh dấu “X” pixel “X” được xem là điểm đặc trưng nếu có giá trị det H ấ ỉ cực đại a) b) c) Hình 1.10: Tạo không gian tỉ lệ

Hình 1.11: 3x3x3 neigbourhood trong không gian ảnh và không gian tỉ lệ

Vì số lượng điểm đặc trưng tìm được là rất ít tại những tỉ lệ cao (hình 1.12 thể hiện điều này) nên cần xem xét chọn tỉ lệ cao nhất cho không gian tỉ lệ để giảm thời gian tính toán mà vẫn đảm bảo độ chính xác của giải thuật

Hình 1.12: Số lượng điểm đặc trưng tìm được theo tỉ lệ b Interest Point Description Để thuật toán có khả năng nhận ra vật thể ngay cả khi ảnh bị xoay thì mỗi điểm đặc trưng cần được gán hướng Thực hiện tìm hướng cho điểm đặc trưng trong phạm vi vùng hình tròn tâm là điểm đặc trưng, bán kính 6s (s là tỉ lệ mà tại đó điểm đặc trưng được tìm thấy) Tìm hướng bằng cách tính Haar wavelet tác động theo trục x (dx) và y (dy) Kích thước của Haar wavelet là 4s (hình 1.14) Sử dụng ảnh tích lũy để tăng tốc độ tính toán Tìm hướng trên từng cung tròn 60 , vector hướng nào trội nhất sẽ được chọn là hướng của điểm đặc trưng Hình 1.13 là ví dụ về tìm hướng cho điểm đặc trưng, các điểm màu lam là các giá trị Haar wavelet tính được

Hình 1.13: Tìm hướng của điểm đặc trưng

Hình 1.14: Bộ lọc Haar wavelet để tìm hướng theo trục x và y Vùng màu đen có trọng số là -1, vùng màu trắng là +1

Xét trong phạm vi vùng hình vuông gồm 4x4 hình vuông con men theo vector hướng đã tìm được ở bước 1, thực hiện tìm thông tin của điểm đặc trưng bằng cách tính Haar wavelet tác động trên hai hướng ngang và dọc Cộng dồn các giá trị và trên mỗi hình vuông con Các giá trị tuyệt đối | | và | | cũng được cộng dồn để lấy thông tin về độ lớn của sự thay đổi cường độ sáng trên ảnh Như vậy mỗi hình vuông con sẽ được mô tả bởi một vector 4 chiều

Phần mềm MVTEC HALCON/Hdevelop 9.0.2

Ngoài những ứng dụng liên quan đến xử lý ảnh thông thường, HALCON/Hdevelop 9.0.2 còn là một công cụ lập trình dùng cho các ứng dụng liên quan đến thị giác máy trong các hệ thống máy móc để xử lý dữ liệu ảnh thu từ những thiết bị quan sát như camera Nó cung cấp một môi trường lập trình tương tác cao để phát triển và thử nghiệm các ứng dụng, có nhiều thư viện hỗ trợ Đây là gói phần mềm tinh vi phù hợp cho phát triển sản phẩm, nghiên cứu và giảng dạy

Có bốn cách cơ bản để thực hiện các ứng dụng phân tích hình ảnh bằng cách sử dụng HDevelop:

Với nền tảng tương tác HDevelop, người dùng có thể tạo mẫu ứng dụng nhanh chóng và dễ dàng Sử dụng HDevelop, bạn có thể tối ưu hóa các hàm và thông số để giải quyết các vấn đề phân tích hình ảnh Sau đó, sử dụng các ngôn ngữ lập trình khác nhau như C, C++, CSharp, Visual Basic.NET hoặc Delphi để xây dựng ứng dụng dựa trên các hàm và thông số đã tối ưu hóa này.

- Phát triển các chương trình ứng dụng trong HDevelop

- Thực hiện chương trình, thủ tục HDevelop bằng cách sử dụng HDevEngine Ta có thể trực tiếp thực hiện chương trình, thủ tục HDevelop từ một ứng dụng viết bằng C++ hoặc ngôn ngữ nào đó có thể tích hợp NET hay COM

- Xuất mã của chương trình ứng dụng ra mã nguồn C, CSharp, C++, VB…

Trong đề tài này, HALCON/HDevelop 9.0.2 được ứng dụng theo cách cuối cùng: các chương trình viết bằng HALCON sẽ được xuất ra mã nguồn CSharp để kết hợp với các chương trình khác viết trực tiếp bằng ngôn ngữ lập trình CSharp

2.1.2 Giao diện làm việc của phần mềm

Hình 2.1: Giao diện làm việc của phần mềm HALCON graphics window: hiển thị dữ liệu hình ảnh được xử lý operator window: hiển thị tất cả các thông số của một hàm hoặc thủ tục trong HALCON để người sử dụng thiết lập variable window: hiển thị giá trị các biến được tính toán program window: dùng để thao tác viết lệnh lập trình.

Thư viện OpenCV

OpenCV (Open source Computer Vision) là thư viện mã nguồn mở về thị giác máy được viết bằng ngôn ngữ C và C++ OpenCV được xây dựng cho những ứng dụng xử lý tính toán thời gian thực Các thuật toán xử lý ảnh được tối ưu hóa thành các hàm đơn giản và dễ sử dụng Một trong những mục đích của thư viện mã nguồn mở OpenCV đó là cung cấp một cơ sở hạ tầng về thị giác máy giúp cho người sử dụng có thể xây dựng những ứng dụng một cách nhanh chóng và dễ dàng

2.2.2 Cấu trúc thư viện mã nguồn mở OpenCV

Thư viện mã nguồn mở OpenCV gồm 5 thành phần chính đó là CV, MLL, HighGUI, CXCORE, CvAux Hình 2.2 thể hiện 4 thành phần CV, MLL, HighGUI, CXCORE

- CV: chứa những thuật toán xử lý ảnh cơ bản và thuật toán thị giác máy tính ở mức độ cao hơn

- MLL: là thư viện học máy bao gồm các công cụ phân loại và thống kê

- HighGUI: chứa các hàm và các thủ tục xuất nhập cho việc lưu trữ, mở file ảnh và video

- CXCORE: chứa các cấu trúc cơ bản của dữ liệu như pixel (CvPoint), kích thước (CvSize), vùng ảnh (CvRect) hay cấu trúc phức tạp hơn như cấu trúc ảnh (IplImage), cấu trúc ma trận (CvMat), cấu trúc chuỗi dữ liệu (CvSeq) và một số cấu trúc liên quan đến đồ họa

- CvAux: chứa các thuật toán thực nghiệm

Hình 2.2: Cấu trúc cơ bản của thư viện mã nguồn mở OpenCV

Nhận dạng vật thể theo màu sắc và hình dạng trong HALCON theo giải thuật đã nghiên cứu

Phần này nêu ra các hàm chính và công cụ trong phần mềm HALCON được sử dụng để thực hiện nhận dạng vật thể dựa trên màu sắc và hình dạng theo các giải thuật đã nêu trong chương 1, bên cạnh đó sẽ trình bày về các biến/tham số chính trong các hàm này Chi tiết các hàm được trình bày trong phụ lục của luận văn

3.1.1 Nhận dạng vật thể theo màu sắc trong HALCON

Luận văn này sử dụng phần mềm HALCON để thực hiện nhận dạng vật thể theo màu sắc Phương pháp nhận dạng này được trình bày trong chương 1, phần 1.1 Giải thuật của phương pháp bao gồm các phần sau:

3.1.1.1 Tạo vùng ROI (Region of Interest)

Hai hàm gen_rectangle1 được sử dụng để tạo vùng ROI và hàm reduce_domain thực hiện cắt bỏ các phần ảnh còn lại chỉ giữ lại phần ảnh giới hạn bởi vùng ROI, cách sử dụng cụ thể trong luận văn như sau: gen_rectangle1 (Rectangle, 424.5, 331.5, 441.5, 348.5) reduce_domain (Image, Rectangle, ImageReduced)

- 424.5, 331.5 và 441.5, 348.5 là tọa độ theo pixel của đỉnh trên bên trái và đỉnh dưới bên phải để tạo vùng ROI hình chữ nhật, vùng ROI được lưu trong biến Rectangle

- ImageReduced là biến chứa vùng ảnh được giữ lại

Các hàm xử lý tiếp theo chỉ thực hiện xử lý cho phần ảnh lưu trong biến

Vùng ROI được tạo là vùng chữ nhật màu đỏ như trong hình minh họa 3.1

Hình 3.1: Kết quả tạo vùng ROI để nhận dạng màu cho khối màu lục trên băng chuyền màu trắng ở đáy ảnh 3.1.1.2 Decompose channels

Hàm decompose3 được sử dụng cho quá trình này như sau: decompose3 (ImageReduced, Red, Green, Blue)

Trong đó: Red, Green, Blue là 3 thành phần của hệ màu RGB được tách ra từ vùng ảnh ImageReduced

Hàm trans_from_rgb được dùng để chuyển hệ màu của ảnh từ RGB sang HSV

Cách sử dụng trong luận văn như sau: trans_from_rgb (Red, Green, Blue, Hue, Saturation, Value, 'hsv')

Trong đó: Hue, Saturation, Value là 3 thành phần của hệ màu HSV Thành phần Hue được sử dụng cho quá trình nhận dạng màu

Hai hàm threshold và area_center được dùng cho quá trình nhận dạng.

Hàm threshold thực hiện chọn ra phần ảnh cần xử lý dựa vào thành phần Hue và mức ngưỡng màu được chọn trước Theo giải thuật nhận dạng màu cần chọn hết toàn bộ, và vì nhận dạng cho khối màu Lục nên mức ngưỡng được chọn là [60, 110]

Giá trị ngưỡng này được chọn bằng công cụ “Gray Histogram” trong phần mềm

HALCON Hình sau sẽ minh họa cho việc sử dụng công cụ này Phần ảnh được chọn sẽ được phủ màu đỏ để báo hiệu cho người dùng Nếu ngưỡng màu được chọn đúng thì toàn bộ phần ảnh cần xử lý sẽ được phủ màu đỏ, ngược lại chỉ một phần ít hoặc toàn bộ sẽ không được phủ màu a) Giá trị ngưỡng màu chung b) Giá trị ngưỡng màu thực của khối màu Hình 3.2: Dùng “Gray Histogram” dựa vào giá trị chung và giá trị thực tế trên thang màu để xác định ngưỡng nhận dạng phù hợp cho khối màu Lục

Hình 3.3: Ngưỡng màu để xác định màu Lục được chọn đúng [60 – 110]

Hình 3.4: Ngưỡng màu thiếu [90 – 110] Ngưỡng này nằm trong thang màu

Lục nhưng không đủ để chọn hết vùng ảnh cần xử lý

Hình 3.5: Ngưỡng màu sai [10 – 20] Ngưỡng này nằm ngoài thang màu Lục nên không có phần ảnh nào được chọn

Hàm area_center sẽ xử lý phần ảnh được chọn ở trên Trong các kết quả xử lý của hàm này, giá trị số lượng pixel sẽ được sử dụng để xác định màu bằng cách so sánh với mức ngưỡng có giá trị 324 (là số lượng pixel của toàn bộ phần ảnh được giới hạn bởi ROI)

Luận văn sử dụng 2 hàm threshold và area_center như sau: threshold (Hue, Color, HueRanges1, HueRanges2) area_center(Color, Area, Row, Column)

- [HueRanges1, HueRanges2] là ngưỡng màu được sử dụng để chọn ra phần ảnh cần xử lý từ thành phần Hue lưu vào biến Color Ngoài nhận dạng cho màu Lục với mức ngưỡng màu như đã nêu, luận văn còn thực hiện nhận dạng cho 4 màu khác là Vàng, Lam, Tím, Đỏ với các ngưỡng màu được chọn như sau: Vàng [30, 60], Lam [130, 150], Tím [140, 190], Đỏ [0, 10] và [200, 255]

Các mức ngưỡng màu được chọn trong cùng một điều kiện ánh sáng phòng

Các mức ngưỡng này sẽ thay đổi khi điều kiện ánh sáng phòng thay đổi

- Area là biến chứa kết quả số lượng pixel của phần ảnh Color

3.1.2 Nhận dạng vật thể theo hình dạng trong HALCON

Luận văn sử dụng phần mềm HALCON thực hiện nhận dạng vật thể theo hình dạng dựa trên phương pháp nhận dạng sử dụng mẫu là mô hình chứa các đặc trưng nhận dạng (phần 1.2.1.1), giải thuật của phương pháp như sau

Hình 3.6: Giải thuật nhận dạng vật thể theo hình dạng trong HALCON

Kiểm tra hình dạng mẫu Trích phần ảnh thích hợp để tạo mẫu

Hình 3.7: Giải thuật tạo mẫu

Trong thuật toán tạo mẫu, yếu tố màu sắc không ảnh hưởng đến quá trình tạo mẫu Do đó, ảnh được sử dụng chỉ cần đầy đủ thông tin về hình dạng để nhận dạng đối tượng Màu sắc và các yếu tố khác như độ sáng có thể lựa chọn tùy ý để tạo mẫu Mẫu tạo từ ảnh tam giác màu vàng vẫn có thể dùng để nhận dạng bất kỳ tam giác nào có màu khác nhau, miễn là có sự đồng dạng với mẫu ở mức độ quy định Mức độ này được quyết định bởi thông số trong hàm nhận dạng sẽ được trình bày sau.

Hình 3.8: Ảnh dùng để tạo mẫu cho khối tam giác a Tạo vùng ROI

Create a region of interest (ROI) to delimit the image portion for processing Utilize the 'draw_rectangle1', 'gen_rectangle1' functions to define the ROI The 'reduce_domain' function is employed to retain the ROI-bounded portion as the input for subsequent processing steps, and discard the remaining image areas.

Trong đó: ImageReduced là biến chứa phần ảnh giới hạn bởi vùng ROI

Hình 3.9: Ảnh sau khi tạo vùng ROI (vùng màu đỏ)

Hình 3.10: Ảnh sau khi cắt bỏ các phần khác, chỉ giữ lại phần giới hạn bởi vùng ROI Phần ảnh này được dùng làm ảnh đầu vào cho các hàm xử lý tiếp theo b Trích phần ảnh thích hợp để tạo mẫu

Luận văn thực hiện trích chọn phần ảnh thích hợp để tạo mẫu dựa trên thành phần Saturation của ảnh Vì trong thành phần này, phần ảnh cần cho việc tạo mẫu (hình tam giác màu vàng) có sự phân biệt so với phần nền rõ rệt nhất, tạo thuận lợi cho việc trích chọn đặc trưng để tạo mẫu Điều này được thể hiện trong hình minh họa 3.11 Thành phần Saturation được tạo theo trình tự các bước decompose channels, transform color space tương tự như đã trình bày trong phần 3.1.1.2 và 3.1.1.3 Sau khi có được thành phần này Saturation, các hàm threshold, dilation_circle, reduce_domain được sử dụng để trích phần ảnh thích hợp cho việc tạo mẫu

Hình 3.11: Thành phần Saturation được tạo

Hàm threshold dùng để chọn phần ảnh thích hợp ban đầu dựa vào giá trị mức xám của pixel, là phần ảnh được thể hiện bằng màu đỏ như trong hình minh họa 3.12 decompose3 (ImageReduced, Red, Green, Blue) trans_from_rgb(Red, Green, Blue, Hue, Saturation, Value, 'hsv') threshold (Saturation, Regions, 80, 255)

[80, 255] là ngưỡng mức xám để chọn ra phần ảnh thích hợp từ thành phần Saturation lưu vào biến Regions Đây là ngưỡng mức xám để tạo mẫu cho khối tam giác khi sử dụng ảnh mẫu trong hình 3.8 Trường hợp sử dụng một ảnh mẫu khác có độ sáng thay đổi thì ngưỡng này sẽ thay đổi Ngưỡng mức xám này cũng có thể thay đổi khi thực hiện tạo mẫu cho loại vật thể có hình dạng khác

Nhận dạng vật thể theo màu sắc và hình dạng trong thư viện OpenCV theo giải thuật đã nghiên cứu

Đoạn văn trình bày việc thực hiện nhận dạng vật thể theo màu sắc và hình dạng trong thư viện OpenCV dựa trên các giải thuật đã nghiên cứu ở chương 1 Trong đó, luận văn phân tích các giải thuật được sử dụng, nêu các hàm xử lý chính cho từng phần của giải thuật và các biến/tham số chính trong các hàm này Chi tiết về các hàm được trình bày trong phần phụ lục.

3.2.1 Nhận dạng vật thể theo màu sắc trong OpenCV

Luận văn thực hiện nhận dạng vật thể theo màu sắc trong OpenCV với phương pháp tương tự như đã sử dụng cho nhận dạng màu trong HALCON

Các hàm chính được sử dụng là:

- Rect: dùng để tạo vùng ROI

- cvCvtColor: dùng để chuyển hệ màu của ảnh từ RGB sang HSV

- cvInRangeS: dùng để nhận dạng màu bằng cách sử dụng ngưỡng mức xám cho thành phần Hue Mức ngưỡng này sẽ thay đổi khi điều kiện ánh sáng phòng thay đổi Mức ngưỡng để nhận dạng 5 màu Vàng, Lục, Lam, Tím, Đỏ trong cùng một điều kiện ánh sáng phòng của luận văn là: Vàng [21, 43], Lục [42, 78], Lam [91, 106], Tím [98, 134], Đỏ [0, 8] và [140, 179]

Các mức ngưỡng trên không giống với các mức ngưỡng đã chọn trong HALCON (3.1.1.4) vì trong OpenCV qui định thang xám cho thành phần Hue là [0, 179] khác với thang xám trong HALCON là [0, 255] Do đó, mức ngưỡng cho màu Lục chọn trong HALCON là [60, 110] thì trong OpenCV mức ngưỡng dưới phải là 60*179/255 = 42.1 ≈ 42 (làm tròn xuống cho mức ngưỡng dưới) và mức ngưỡng trên là 110*179/255 = 77.2

≈ 78 (làm tròn lên cho mức ngưỡng trên), tương tự cho các mức ngưỡng còn lại

Luận văn sử dụng các hàm đã nêu ở trên như sau:

Rect(331, 424, 18, 18) cvCvtColor(frame, imgHSV, CV_BGR2HSV) cvInRangeS(imgHSV, cvScalar(hueL, satL, valL), cvScalar(hueH, satH, valH), imgThresh)

- (331, 424) là tọa độ tâm của vùng ROI, (18, 18) là kích thước một nửa chiều rộng và chiều cao của vùng ROI

- Giá trị mức ngưỡng sẽ được thế vào các biến hueL (mức ngưỡng dưới) và hueH (mức ngưỡng trên)

3.2.2 Nhận dạng vật thể theo hình dạng trong OpenCV

Luận văn thực hiện nhận dạng vật thể dựa trên hình dạng theo phương pháp dựa vào đặc trưng của vật thể cần nhận dạng, phương pháp này đã trình bày ở chương 1 (phần 1.2.2) Hình 3.17 là giải thuật của phương pháp

Chuyển sang ảnh trắng đen

Lọc bỏ contour nhiễu Tìm contour

Xác định hình dạng contour

Xác định vật thể trong ảnh

Hình 3.17: Giải thuật nhận dạng theo hình dạng dựa vào đặc trưng của vật thể trong OpenCV 3.2.2.1 Chuyển sang ảnh trắng đen Ảnh trắng đen ở đây là ảnh gồm các pixel chỉ có một trong hai giá trị 0 hoặc 255 Luận văn thực hiện chuyển ảnh cần xử lý sang ảnh trắng đen bằng cách chuyển hệ màu của ảnh sang HSV, từ thành phần Saturation thực hiện tách lọc các khối vật thể khỏi phần nền ảnh dựa trên một mức ngưỡng được xác định qua thực nghiệm

Thành phần Saturation được sử dụng vì trong ảnh của thành phần này, sự phân biệt giữa các khối vật thể và phần nền ảnh là rõ ràng nhất, thuận lợi cho việc tách lọc Điều này được thể hiện trong hình minh họa 3.19 Ảnh trắng đen được tạo bằng cách gán giá trị 255 (màu trắng) cho các pixel của các khối vật, phần nền ảnh gán giá trị 0 (màu đen)

Các hàm chính được xử dụng là:

- cvCvtColor: dùng để chuyển từ hệ màu RGB sang HSV

- cvCreateImage: tạo ảnh kết quả ban đầu để xử lý tạo ảnh trắng đen

- cvInRangeS: dùng để tạo ảnh trắng đen bằng cách sử dụng ngưỡng mức xám cho thành phần Saturation để chọn ra các pixel của khối vật Trong ảnh kết quả, các pixel có vị trí tương đương với các pixel đã chọn sẽ được gán giá trị 255, các pixel còn lại gán giá trị 0, kết quả được ảnh trắng đen

Luận văn sử dụng mức ngưỡng là [70; 255] Mức ngưỡng này sẽ thay đổi khi điều kiện ánh sáng phòng thay đổi

Trong luận văn, các hàm trên sẽ được sử dụng như sau: cvCvtColor(img, imgHSV, CV_BGR2HSV) imgThresh = cvCreateImage(cvGetSize(imgHSV), IPL_DEPTH_8U, 1) cvInRangeS(imgHSV, cvScalar(hueL, satL, valL), cvScalar(hueH, satH, valH), imgThresh)

Trong đó: giá trị mức ngưỡng [70; 255] thế tương ứng cho cặp biến [hueL, hueH]

Hình 3.18: Ảnh cần nhận dạng

Value Hình 3.19: Kết quả các thành phần trong hệ màu HSV của ảnh

Hình 3.20: Ảnh trắng đen được tạo từ thành phần Saturation 3.2.2.2 Tìm contour

Dựa vào ảnh trắng đen đã tạo ở trên, các contour được xác định là các pixel nằm trên ranh giới giữa phần ảnh màu trắng của khối vật và màu đen của nền

Hàm được sử dụng để tìm contour là cvFindContours, được sử dụng trong luận văn như sau: cvFindContours(imgThresh, storage, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0))

Contour nhiễu là các contour không chứa hoặc chỉ chứa một vài pixel thuộc đường bao của khối vật thể cần nhận dạng, có kích thước nhỏ hơn nhiều so với contour thật của vật thể Trong hình 3.20, các vật thể nằm ở nửa trên của ảnh có đường bao xuất hiện nhiễu gây ra contour nhiễu

Các hàm chính được sử dụng là:

- cvApproxPoly: dùng để xấp xỉ contour thành một hình đa giác phù hợp, điều này sẽ được nói rõ ở phần 3.2.2.4

- cvMinAreaRect2: lấy thông số của đa giác được xấp xỉ gồm tâm và kích thước (chiều cao, chiều rộng) Trong đó, kích thước chiều cao được dùng làm điều kiện để lọc bỏ contour nhiễu Trong quá trình thực nghiệm, luận văn xác định được các đa giác xấp xỉ từ contour nhiễu luôn có chiều cao nhỏ hơn 20 (pixel)

Trong luận văn, các hàm trên được sử dụng như sau: cvApproxPoly(contours, sizeof(CvContour), storage, CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.036, 0) cvMinAreaRect2(result, NULL)

Trong đó: 0.036 là ngưỡng sai số được chọn từ thực nghiệm để thực hiện xấp xỉ

3.2.2.4 Xác định hình dạng contour

Luận văn thực hiện nhận dạng contour bằng cách xấp xỉ những đoạn cong thẳng của contour thành các cạnh của một hình đa giác với ngưỡng sai số được xác định trong thực nghiệm đã nêu ở phần 3.2.2.3, sao cho xấp xỉ chính xác hình dạng tổng thể của mỗi contour

3.2.2.5 Xác định vật thể trong ảnh

Xác định dạng khối vật thể dựa vào dạng contour Khi contour là một đa giác, số cạnh quyết định hình dạng khối vật thể Khối hình tam giác có 3 cạnh contour, ngũ giác có 5 cạnh Khối tròn có số cạnh xác định từ 7 trở lên Khối chữ nhật và vuông có 4 cạnh, phân biệt dựa vào tổng chiều dài cạnh, khối chữ nhật có tổng chiều dài cạnh lớn hơn 300 pixel, khối vuông nhỏ hơn 300 pixel.

Số cạnh của đa giác được xấp xỉ nằm trong kết quả của hàm xấp xỉ contour cvApproxPoly đã nêu trong phần 3.2.2.3 Số cạnh này được lấy như sau: result -> total

- result là biến chứa kết quả xấp xỉ của hàm cvApproxPoly

- total là biến chứa số cạnh của đa giác được xấp xỉ

Hình 3.21: Kết quả nhận dạng cho 5 loại khối vật thể tam giác, chữ nhật,

So sánh kết quả nhận dạng giữa HALCON và OpenCV

Kết quả nhận dạng trong HALCON và OpenCV được so sánh theo sai số nhận dạng và thời gian nhận dạng

3.3.1 Sai số nhận dạng 3.3.1.1 Sai số nhận dạng vật thể theo màu sắc

Với điều kiện ánh sáng phòng không đổi, sai số nhận dạng vật thể theo màu trong HALCON và OpenCV cho 5 màu Vàng, Tím, Lam, Đỏ, Lục là như nhau

Trong quá trình thực nghiệm, kết quả nhận dạng cho 5 màu trên có sai số bằng 0

3.3.1.2 Sai số nhận dạng vật thể theo hình dạng

Giải thuật nhận dạng của luận văn thực hiện cho ảnh thu chỉ từ một camera tức trong không gian 2 chiều Nhưng vì vật thể cần nhận dạng ở dạng 3 chiều nên khi thực hiện nhận dạng theo giải thuật của luận văn, thì sẽ có sai số khi vị trí của vật thể thay đổi lệch đi so với vị trí đặt thẳng góc với hướng nhìn của camera Sai số này gây ra do phần bóng và phần mặt cạnh bên của vật thể làm cho kết quả nhận dạng bị lệch so với thực tế

Các vật thể sẽ lần lượt được đặt tại vị trí có sai số nhận dạng thấp nhất (đặt thẳng góc với hướng nhìn của camera) và ở vị trí bị lệch so với hướng nhìn thẳng góc để thực hiện nhận dạng Kết quả nhận dạng (là tọa độ tâm vật thể trong không gian 2 chiều) được đối chiếu với kết quả đo thực tế để xác định sai số, từ đó so sánh sai số nhận dạng theo hình dạng giữa HALCON và OpenCV Hình 3.22 và 3.23 thể hiện kết quả nhận dạng cho 5 khối vật tam giác, chữ nhật, vuông, ngũ giác và tròn

Trong đó: các hình bên trái là kết quả nhận dạng khi đặt khối vật thẳng góc với hướng nhìn của camera (sai số nhận dạng thấp nhất), các hình bên phải là kết quả khi đặt khối vật lệch so với hướng nhìn thẳng góc của camera (có sai số cao hơn)

Hình 3.22: Ảnh minh họa sai số nhận dạng theo hình dạng trong

Hình 3.22: Ảnh minh họa sai số nhận dạng theo hình dạng trong HALCON

Hình 3.22: Ảnh minh họa sai số nhận dạng theo hình dạng trong HALCON

Tọa độ dạng (x; y) và sai số nhận dạng của các vật thể trong HALCON được xác định như sau (đơn vị tính là pixel): Đối với các hình bên trái (khối vật đặt thẳng góc với hướng nhìn của camera):

- Tọa độ thực tế: tam giác (301; 360), chữ nhật (314; 319), vuông (331; 331), ngũ giác (296; 343), tròn (310; 334)

- Kết quả nhận dạng: tam giác (302; 362), chữ nhật (314; 321), vuông (330;

- Sai số nhận dạng được tính riêng cho 2 trục x và y của không gian 2 chiều, bằng cách lấy hiệu của kết quả nhận dạng và thực tế tương ứng cho thành phần tọa độ x và y:

+ Theo trục x: ±1 (tam giác), ±0 (chữ nhật), ±1 (vuông), ±0 (ngũ giác), ±0 (tròn)

+ Theo trục y: ±2 (tam giác), ±2 (chữ nhật), ±1 (vuông), ±2 (ngũ giác), ±1 (tròn)

 Sai số nhận dạng trung bình trong HALCON khi đặt vật thẳng góc với hướng nhìn của camera: theo trục x là ±0.5, theo trục y là ±1.6 Đối với các hình bên phải (khối vật đặt lệch so với hướng nhìn thẳng góc):

- Tọa độ thực tế: tam giác (198; 68), chữ nhật (201; 104), vuông (266; 94), ngũ giác (195; 85), tròn (273; 69)

- Kết quả nhận dạng: tam giác (200; 70), chữ nhật (201; 107), vuông (265;

+ Theo trục x: ±2 (tam giác), ±0 (chữ nhật), ±1 (vuông), ±3 (ngũ giác), ±0 (tròn)

+ Theo trục y: ±3 (tam giác), ±3 (chữ nhật), ±1 (vuông), ±8 (ngũ giác), ±6 (tròn)

 Sai số nhận dạng trung bình trong HALCON khi đặt vật lệch so với hướng nhìn thẳng góc của camera: theo trục x là ±1.2, theo trục y là ±3.8

Hình 3.23: Ảnh minh họa sai số nhận dạng theo hình dạng trong OpenCV

Hình 3.23: Ảnh minh họa sai số nhận dạng theo hình dạng trong OpenCV

Hình 3.23: Ảnh minh họa sai số nhận dạng theo hình dạng trong OpenCV

Tọa độ dạng (x, y) và sai số nhận dạng của đối tượng trong OpenCV được xác định như sau (đơn vị là pixel) Trong trường hợp đối tượng được đặt vuông góc với hướng nhìn của camera (các hình bên trái), tọa độ (x, y) của trọng tâm đối tượng được xác định là giao điểm của hai đường chéo đối diện trên khung biên của đối tượng Sai số nhận dạng được xác định là khoảng cách từ trọng tâm thực tế đến trọng tâm được phát hiện trên ảnh.

- Tọa độ thực tế: tam giác (301; 360), chữ nhật (314; 319), vuông (331; 331), ngũ giác (296; 343), tròn (310; 334)

- Kết quả nhận dạng: tam giác (309; 372), chữ nhật (314; 321), vuông (330;

Sai số nhận dạng trung bình trong OpenCV khi đặt vật thẳng góc với hướng nhìn của camera: theo trục x là ±3, theo trục y là ±3 Đối với các hình bên phải (khối vật đặt lệch so với hướng nhìn thẳng góc), sai số nhận dạng phụ thuộc vào góc lệch và không được tính toán cụ thể trong bài viết này.

- Tọa độ thực tế: tam giác (198; 68), chữ nhật (201; 104), vuông (266; 94), ngũ giác (195; 85), tròn (273; 69)

Kết quả nhận dạng: tam giác (194; 64), chữ nhật (206; 111), vuông (266; 93), ngũ giác (205; 91), tròn (272; 71)

- Tương tự cách tính đối với nhận dạng trong HALCON ở hình 3.22, sai số nhận dạng trung bình trong OpenCV khi đặt vật lệch so với hướng nhìn thẳng góc của camera: theo trục x là ±4, theo trục y là ±4

Kết quả thực nghiệm cho thấy nhận dạng vật thể theo hình dạng trong HALCON có độ chính xác cao hơn so với OpenCV Điều này được thể hiện qua sai số thấp hơn, cho thấy khả năng nhận dạng hình dạng vượt trội của HALCON.

3.3.2 Thời gian nhận dạng 3.3.2.1 Thời gian nhận dạng theo màu sắc

Luận văn thực hiện xác định thời gian trung bình của quá trình nhận dạng theo 5 màu Vàng, Tím, Lam, Đỏ, Lục trong HALCON và OpenCV bằng cách tiến hành thực nghiệm 10 lần nhận dạng cho từng màu, sau đó tính kết quả trung bình Kết quả thực nghiệm được thể hiện trong bảng 3.1 và 3.2, đơn vị tính là giây Hình 3.24 là đồ thị thể hiện thời gian nhận dạng màu trung bình trong HALCON và OpenCV được tính từ bảng thực nghiệm 3.1 và 3.2

Bảng 3.1: Kết quả thực nghiệm xác định thời gian của quá trình nhận dạng vật thể theo màu trong HALCON tương ứng cho 5 màu (đơn vị tính là giây)

Vàng Tím Lam Đỏ Lục

Bảng 3.2: Kết quả thực nghiệm xác định thời gian của quá trình nhận dạng vật thể theo màu trong OpenCV tương ứng cho 5 màu (đơn vị tính là giây)

Vàng Tím Lam Đỏ Lục

Hình 3.24: Đồ thị thể hiện thời gian trung bình của quá trình nhận dạng vật thể theo màu trong HALCON và OpenCV tương ứng cho 5 màu

Vàng Tím Lam Đỏ Lục

(ms) Đồ thị thể hiện thời gian nhận dạng trung bình theo màu cho thấy OpenCV có thời gian nhận dạng ngắn hơn rất nhiều so với HALCON, tính trung bình trên 5 loại màu là ngắn hơn khoảng 750 lần

3.3.2.1 Thời gian nhận dạng theo hình dạng

Luận văn thực hiện xác định thời gian của quá trình nhận dạng theo hình dạng cho 5 loại khối vật thể là khối trụ tam giác, chữ nhật, vuông, ngũ giác, tròn trong HALCON và OpenCV bằng cách tiến hành thực nghiệm 10 lần nhận dạng cho từng loại, sau đó tính kết quả trung bình Kết quả thực nghiệm được thể hiện trong bảng 3.3 và 3.4, đơn vị tính là giây Hình 3.25 là đồ thị thể hiện thời gian nhận dạng theo hình dạng trung bình trong HALCON và OpenCV được tính từ bảng thực nghiệm 3.3 và 3.4 Đồ thị thể hiện thời gian nhận dạng trung bình theo hình dạng cho thấy OpenCV có thời gian nhận dạng ngắn hơn nhiều so với HALCON, tính trung bình trên 5 loại khối vật thể là ngắn hơn khoảng 7 lần

Bảng 3.3: Kết quả thực nghiệm xác định thời gian quá trình nhận dạng theo hình dạng trong HALCON tương ứng cho 5 khối vật thể (đơn vị tính là giây)

Tam giác Chữ nhật Vuông Ngũ giác Tròn

Bảng 3.4: Kết quả thực nghiệm xác định thời gian quá trình nhận dạng theo hình dạng trong OpenCV tương ứng cho 5 khối vật thể (đơn vị tính là giây)

Tam giác Chữ nhật Vuông Ngũ giác Tròn

Hình 3.25: Biểu đồ thể hiện thời gian trung bình của quá trình nhận dạng vật thể theo hình dạng trong HALCON và OpenCV tương ứng cho 5 khối vật thể

Tam giác Chữ nhật Vuông Ngũ giác Tròn

Giới thiệu robot tay máy

Robot tay máy sử dụng trong luận văn là dạng tay máy 6 khâu, 6 bậc tự do và có một đầu kẹp để gắp vật thể Đây là hệ thống tay máy gồm 6 khớp quay, mỗi khớp hoạt động nhờ 1 động cơ servo được điều khiển thông qua mạch điều khiển trung tâm Tay máy hoạt động gắp và đặt vật tại các tọa độ trong không gian 3 chiều Hình 4.1 thể hiện robot tay máy được sử dụng trong luận văn

Sự di chuyển của tay máy sẽ được điều khiển thông qua hoạt động quay của 6 động cơ servo Động cơ servo hoạt động khi nhận được tín hiệu xung kích từ mạch điều khiển, động cơ sẽ quay một góc nhất định phụ thuộc vào giá trị độ rộng của xung kích Việc thiết lập giá trị độ rộng xung phù hợp để điều khiển các động cơ servo của tay máy sẽ được trình bày trong phần tiếp theo.

Lập trình điều khiển robot tay máy

6 tín hiệu xung kích điều khiển 6 động cơ servo sẽ được phát từ mạch điều khiển Độ rộng của các xung kích được quyết định bởi một tín hiệu cấp cho mạch điều khiển Luận văn thực hiện lập trình cấp tín hiệu này từ máy tính thông qua giao tiếp cổng COM với mạch điều khiển của tay máy

Các thông số cổng COM để thực hiện giao tiếp với mạch điều khiển của tay máy là: Baudrate (112500), Data bits (8), Parity (None), Stop bits (1), Flow control (None)

Tín hiệu cấp cho mạch điều khiển của tay máy sẽ chứa chuỗi dữ liệu điều khiển là dạng chuỗi text gồm 6 giá trị độ rộng xung để điều khiển 6 động cơ servo, cú pháp chuỗi dữ liệu như sau

˽#0˽Px0 ˽#1˽Px1 ˽#2˽Px2 ˽#3˽Px3 ˽#4˽Px4 ˽#5˽Px5\r˽˽˽˽˽T 1000

Trong đó, “˽” là ký tự khoảng trắng, x0, x1, x2, x3, x4, x5 là 6 giá trị độ rộng xung để điều khiển 6 động cơ servo có giá trị trong khoảng [500; 2500] Hoạt động của 6 động cơ servo sẽ làm quay 6 khớp quay để di chuyển đầu kẹp của tay máy tới vị trí mong muốn Trong đó, các giá trị độ rộng xung x1, x2, x3, x4, x5 quyết định vị trí của đầu kẹp, còn giá trị x0 quyết định góc quay của đầu kẹp sao cho phù hợp với góc xoay của vật để đầu kẹp có thể gắp vật

Tay máy được điều khiển theo hai phương pháp cho học trước tọa độ (động học thuận) và động học ngược

4.2.1 Điều khiển theo phương pháp cho học trước tọa độ

Trong phương pháp này, các giá trị độ rộng xung sẽ được xác định nhờ vào phần mềm điều khiển riêng của tay máy Tay máy sẽ được điều khiển tới những vị trí có tọa độ được xác định trước bằng phần mềm điều khiển riêng Phần mềm này giúp tương tác trực quan để thay đổi lần lượt 6 giá trị độ rộng xung x0, x1, x2, x3, x4, x5 sao cho các khớp quay chuyển động đưa đầu kẹp của tay máy di chuyển đến được tọa độ mong muốn Các giá trị độ rộng xung sau đó được ghi lại để phục vụ cho việc lập trình Khi lập trình điều khiển, chỉ cần truyền chuỗi dữ liệu chứa đúng các giá trị độ rộng xung này cho mạch điều khiển của tay máy thì tay máy sẽ di chuyển đến được tọa độ mong muốn đã xác định trước

Hình 4.2: Giao diện phần mềm điều khiển riêng của tay máy, 6 giá trị độ rộng xung sẽ được thay đổi cho 6 servo đánh số từ 0  5 nằm trong khung màu đỏ

Để thay đổi giá trị độ rộng xung, kéo lần lượt 6 thanh trượt tương ứng với 6 servo (No.0  No.5) Giá trị độ rộng xung sẽ hiển thị trong ô ký hiệu P bên dưới thanh trượt hoặc nhập trực tiếp giá trị vào ô Ưu điểm của phương pháp này là độ chính xác cao Khi truyền đúng các giá trị độ rộng xung đã xác định trong quá trình điều khiển bằng phần mềm riêng cho mạch điều khiển của tay máy, mạch sẽ điều khiển các động cơ servo quay, làm chuyển động các khớp tay máy theo đúng tọa độ mong muốn.

Phạm vi hoạt động của tay máy bị giới hạn chỉ đến được một số vị trí trong vùng hoạt động danh định, có tọa độ đã xác định trước Vì quá trình điều khiển bằng phần mềm riêng chỉ cho ra được các giá trị độ rộng xung để lập trình đưa tay máy đến được các vị trí này, muốn đến được vị trí mới phải tiến hành lại quá trình điều khiển để xác định các giá trị độ rộng xung mới

4.2.2 Điểu khiển theo phương pháp sử dụng động học ngược

Trong phương pháp này, các giá trị độ rộng xung điều khiển các khớp quay sẽ được xác định thông qua tọa độ vị trí đỉnh đầu kẹp của tay máy và góc xoay của vật thể cần gắp Để thực hiện, đầu tiên luận văn tiến hành xác định phương trình động học ngược cho tay máy Phương trình động học ngược là phương trình thể hiện mối liên hệ giữa góc quay của khớp, tọa độ vị trí đỉnh đầu kẹp tay máy và góc xoay của vật Các bước thiết lập phương trình động học ngược, từ đó thành lập công thức tính giá trị độ rộng xung theo tọa độ vị trí đỉnh đầu kẹp tay máy và góc xoay của vật thể cần gắp được trình bày sau đây

4.2.2.1 Tính giá trị độ rộng xung để điều khiển một khớp quay một góc

Luận văn thực hiện đo góc quay tối đa thực tế của mỗi khớp quay, từ đó kết hợp với khoảng giá trị độ rộng xung tối đa (tính theo đơn vị ms) để tìm ra độ rộng xung tương ứng điều khiển một khớp quay một góc 1 (rad) Gọi khớp 0 (khớp quay để mở khép đầu kẹp) ứng với độ rộng xung x0, khớp 1 (khớp quay của đầu kẹp) ứng với độ rộng xung x1, khớp 2 ứng với độ rộng xung x2, khớp 3 ứng với độ rộng xung x3, khớp 4 ứng với độ rộng xung x4, khớp 5 ứng với độ rộng xung x5, kết quả như sau (các giá trị độ rộng xung trong luận văn được tính theo đơn vị ms):

Khớp 0: đối với khớp này, không cần xác định độ rộng xung để quay góc 1 (rad), mà gán cố định giá trị độ rộng xung là 850 để mở đầu kẹp, 1300 để khép lại gắp vật

Khớp 1: góc quay tối đa là π

(rad), khoảng độ rộng xung x1 tối đa là [500; 2260], vậy độ rộng xung để khớp quay một góc 1 (rad) là X1 = π 43π

Khớp 2: góc quay tối đa là π

(rad), khoảng độ rộng xung x2 tối đa là [750; 2300], vậy độ rộng xung để khớp quay một góc 1 (rad) là X2 17π

Khớp 3: góc quay tối đa là π

(rad), khoảng độ rộng xung x3 tối đa là [500; 2500], vậy độ rộng xung để khớp quay một góc 1 (rad) là X3 11π

Khớp 4: góc quay tối đa là π

(rad), khoảng độ rộng xung x4 tối đa là [950; 2160], vậy độ rộng xung để khớp quay một góc 1 (rad) là X4 31π Khớp 5: góc quay tối đa là π (rad), khoảng độ rộng xung x5 tối đa là [500; 2100], vậy độ rộng xung để khớp quay một góc 1 (rad) là X5 π Từ kết quả trên, để điều khiển khớp i quay một góc α (rad) phải cần độ rộng xung là αX i (i = 1, 2, 3, 4, 5)

4.2.2.2 Thiết lập phương trình động học ngược tính giá trị góc quay từng khớp theo tọa độ đỉnh đầu kẹp của tay máy và góc xoay của vật thể cần gắp

Để giải quyết bài toán điều khiển tay máy gắp vật thể, luận văn chỉ thực hiện điều khiển tay máy gắp vật thể đặt trên mặt phẳng Oxy Tay máy được lệnh sao cho tọa độ đỉnh đầu kẹp trùng với tọa độ (x; y) của vật thể Tọa độ z của đỉnh đầu kẹp sẽ được chọn dựa theo chiều cao của vật thể để tay máy có thể gắp được Tuy nhiên, đỉnh đầu kẹp tay máy chỉ được điều khiển đến những vị trí có tọa độ x, y, z đều dương Do vậy, vật thể phải được đặt trong phạm vi tọa độ thỏa mãn điều kiện này để tay máy có thể gắp được Tuy nhiên, giới hạn về độ lớn của các giá trị tọa độ x, y, z vẫn phải được đảm bảo, giới hạn này sẽ được trình bày cụ thể ở chương 6.

Các khớp quay có trục song song với trục Oz z x y

Vị trí vuông góc của tay máy Đỉnh đầu kẹp của tay máy có tọa độ (x; y; z)

Các khớp quay có trục song song với mặt phẳng Oxy

Hình 4.4: Sơ đồ hình học của tay máy

Hình 4.5: Sơ đồ hình học rút gọn của tay máy

Sơ đồ hình 4.5 sẽ được sử dụng để tính góc quay của các khớp theo tọa độ (x'; y'; z'), trong khi kết quả góc quay cuối cùng được tính theo tọa độ (x; y; z) của đỉnh đầu kẹp tay máy Do đó, cần tìm mối liên hệ giữa tọa độ (x; y; z) trong sơ đồ hình 4.4 và (x'; y'; z') trong sơ đồ hình 4.5 Việc này được thực hiện dựa vào mô hình trong hình 4.6, trong đó θ5 là góc quay của khớp 5

Hình 4.6: Mô hình xác định mối quan hệ giữa tọa độ (x; y; z) và (x'; y'; z') khi rút gọn phần sơ đồ thể hiện cơ cấu vuông góc của tay máy (là các đoạn b, c)

Từ mô hình 4.6, thiết lập được các phương trình sau: x + y = a + b + c − 2a b + c cos α

 a = √b + c cos α + (b + c )cos α − b − c + x + y hoặc a = √b + c cos α − (b + c )cos α − b − c + x + y vì a phải có giá trị dương nên kết quả cuối cùng: a = √b + c cos α + (b + c )cos α − b − c + x + y (4.1) φ = tan y x φ = cos a + x + y − (b + c )

2a x + y (4.2) Tọa độ (x'; y') và (x; y) liên hệ nhau theo 2 phương trình sau: x′ = acos θ = a cos tan y x + cos a + x + y − (b + c )

2a x + y (4.4) α = π − φ = π − tan b c Cơ cấu vuông góc của tay máy có kích thước như sau: b = 20 (mm), c = 30 (mm), do đó: α = π − tan 2

3 Thế giá trị α, b, c vào phương trình (4.1): a = √1300 cos π − tan 2

Ứng dụng điều khiển tay máy gắp sản phẩm trên băng chuyền bỏ vào nơi

Hình 5.1: Lưu đồ giải thuật điều khiển Robot tay máy gắp sản phẩm trên băng chuyền bỏ vào nơi qui định a) Hình 5.2: Sơ đồ khối (a) và hình tổng thể toàn bộ hệ thống giả lập cho hệ thống

Robot tay máy gắp sản phẩm trên băng chuyền (b) b)

Hình 5.2: Sơ đồ khối (a) và hình tổng thể toàn bộ hệ thống giả lập cho hệ thống

Robot tay máy gắp sản phẩm trên băng chuyền (b) (tiếp theo) Đây là một ứng dụng xử lý ảnh nhận dạng vật thể theo màu sắc Các sản phẩm được mô hình hóa bằng các khối màu Ứng dụng thực hiện nhận dạng cho 5 màu Vàng, Lục, Lam, Tím, Đỏ Chức năng các khối trong sơ đồ như sau:

- Khối thu ảnh: webcam laptop (giả lập cho camera quan sát), thực hiện thu ảnh để xử lý nhận dạng

- Khối Robot tay máy: gồm cơ cấu cơ khí và mạch điều khiển các động cơ servo, thực hiện nhận tín hiệu từ khối xử lý nhận dạng để điều khiển các động cơ servo quay các khớp cơ khí để di chuyển tay máy

- Khối xử lý nhận dạng: laptop, thực hiện xử lý nhận dạng ảnh thu từ khối thu ảnh, dựa vào kết quả nhận dạng để phát tín hiệu điều khiển Robot tay máy, đồng thời cũng phát tín hiệu để điều khiển khối thu ảnh Robot tay máy được điều khiển gắp các khối màu trên băng chuyền và dựa vào kết quả nhận dạng màu để bỏ khối màu đúng khay chứa qui định Ảnh sẽ được thu liên tục từ webcam để xử lý Tay máy sẽ được điều khiển sao cho:

+ Nếu tại vị trí xử lý (vị trí quan sát của webcam trên băng chuyền - ứng với vị trí vùng ROI được tạo) có khối màu xuất hiện: tay máy sẽ di chuyển tới để gắp khối màu bỏ đúng khay chứa qui định

+ Nếu không có khối màu, tay máy sẽ chờ cho đến khi xuất hiện khối màu trong vùng xử lý rồi tiếp tục gắp và bỏ khối màu đúng khay qui định

Ngưỡng màu được sử dụng là ngưỡng mức xám của thành phần Hue xét trong OpenCV (lý do luận văn dùng OpenCV nhận dạng màu sẽ được trình bày ở phần 5.1.1.1) Trong đó, ngưỡng màu của băng chuyền là [79, 100], do đó để điều khiển tay máy theo yêu cầu đặt ra, ngưỡng màu được chọn cho các khối màu là: Vàng [21, 43], Lục [43, 78], Lam [91, 106], Tím [98, 134], Đỏ [0, 8] và [140, 179]

Nếu xuất hiện khối màu tại vị trí xử lý: kết quả số lượng pixel khi nhận dạng theo một trong 5 ngưỡng màu trên sẽ bằng mức 324 Ngược lại sẽ dưới mức này, vì lúc này phần ảnh xử lý sẽ là ảnh của băng chuyền có giá trị ngưỡng màu là [79, 100] Khi đó, tay máy sẽ chờ cho đến khi xuất hiện khối màu trong vùng xử lý, lúc này kết quả nhận dạng sẽ bằng ngưỡng 324 và tay máy sẽ tiếp tục gắp và bỏ khối màu đúng khay tương ứng

5.1.1 Phân tích giải thuật 5.1.1.1 Nhận dạng màu

Xét trên giải thuật nhận dạng vật thể theo màu đã trình bày trong chương 1 và 3 (1.1 và 3.1.1, 3.2.1) và theo kết quả thực nghiệm so sánh giữa HALCON và OpenCV đã trình bày trong chương 3, cả HALCON và OpenCV đều có sai số nhận dạng màu như nhau (3.3.1.1), nhưng OpenCV có thời gian nhận dạng ngắn hơn rất nhiều so với HALCON (3.3.2.1) Do đó, phần nhận dạng màu trong giải thuật của ứng dụng này được luận văn thực hiện bằng OpenCV

5.1.1.2 Điều khiển tay máy gắp và đặt vật

Tay máy được điều khiển theo phương pháp cho học trước tọa độ đã trình bày trong chương 4 (4.2.1) Tọa độ vị trí xử lý để gắp khối vật trên băng chuyền và tọa độ các vị trí đặt khối vật sẽ được qui định trước và dựa vào đó để xác định các độ rộng xung điều khiển tay máy

5.1.2 Code chương trình điều khiển của ứng dụng

Code chương trình điều khiển gồm 3 phần:

- Code nhận dạng màu được viết bằng ngôn ngữ C/C++, tạo thành tập tin định dạng (.dll)

- Code điều khiển tay máy được viết bằng ngôn ngữ CSharp

- Code giao diện điều khiển chính của ứng dụng được viết bằng ngôn ngữ CSharp

Hình 5.3: Giao diện chương trình điều khiển

Khi chạy chương trình điều khiển, hình ảnh thu từ camera quan sát sẽ được thể hiện trong giao diện như hình trên Nhờ đó, người điều khiển có thể quan sát được quá trình làm việc của Robot tay máy thông qua giao diện.

Ứng dụng điều khiển tay máy gắp vật ở vị trí bất kì sắp xếp vào nơi qui định

Ứng dụng này được dùng để điều khiển tay máy gắp vật tại vị trí bất kì trên mặt phẳng nằm ngang, sau đó bỏ vật đúng nơi qui định dựa vào kết quả nhận dạng màu sắc và hình dạng của vật Ứng dụng thực hiện nhận dạng theo hình dạng cho 5 loại vật thể là trụ tam giác, chữ nhật, vuông, ngũ giác, tròn và nhận dạng theo màu cho 2 màu vàng và tím tương ứng cho mỗi loại vật thể

Sử dụng webcam rời để thu ảnh liên tục, xử lý nhận dạng hình dạng và màu sắc Nhận dạng tuần tự các đối tượng theo thứ tự: tam giác, chữ nhật, vuông, ngũ giác và tròn Tạo vùng ảnh phụ nằm trong vùng ảnh đối tượng để nhận dạng màu của đối tượng Tay máy gắp đối tượng dựa trên tọa độ tâm và góc xoay của đối tượng được xác định khi nhận dạng theo hình dạng.

Hình 5.4: Lưu đồ giải thuật của ứng dụng gắp vật ở vị trí bất kì sắp xếp vào nơi qui định

Thu ảnh Robot tay máy Xử lý nhận dạng a) b) Hình 5.5: Sơ đồ khối (a) và hình tổng thể toàn bộ hệ thống giả lập cho hệ thống

Robot tay máy gắp vật ở vị trí bất kì (b)

5.2.1 Phân tích giải thuật 5.2.1.1 Nhận dạng vật thể theo hình dạng

Xét trên các giải thuật nhận dạng vật thể theo hình dạng đã trình bày trong chương 1 và 3 (1.2 và 3.1.2, 3.2.2) và theo kết quả thực nghiệm so sánh giữa HALCON và OpenCV đã trình bày trong chương 3, HALCON có thời gian nhận dạng cao hơn nhiều so với OpenCV (3.3.1.2) nhưng kết quả nhận dạng lại có sai số thấp hơn OpenCV (3.3.2.2) Vì đây là ứng dụng gắp vật thể ở vị trí bất kì, nên để gắp được vật thể thì kết quả nhận dạng phải có sai số càng thấp càng tốt sao cho từ kết quả này có thể điều khiển tay máy gắp được vật Thế nên, vấn đề sai số được ưu tiên hơn thời gian nhận dạng Do đó, luận văn sẽ thực hiện nhận dạng theo hình dạng cho vật thể cần gắp bằng HALCON

5.2.1.2 Xác định tọa độ tâm và góc xoay của vật thể a Xác định tọa độ tâm

Tọa độ tâm của vật thể là tọa độ tâm thực trong hệ tọa độ 2 chiều có đơn vị tính theo đơn vị đo khoảng cách thực tế, trong luận văn sử dụng đơn vị đo là milimet

Luận văn xác định tọa độ tâm thực của vật theo phương pháp sử dụng một điểm chuẩn Điểm chuẩn có thể là một vật thể làm mốc hoặc đơn giản là một hình vẽ có hình dạng/màu sắc khác với các vật thể cần gắp Luận văn sử dụng điểm chuẩn là dạng hình vẽ trên nền giấy trắng đặt các vật thể Điểm chuẩn có tọa độ tâm thực được biết trước Ảnh cần nhận dạng chứa điểm chuẩn và vật Từ ảnh này, tọa độ tâm theo pixel của vật thể và điểm chuẩn sẽ được xác định (tọa độ tâm của vật thể theo pixel được xác định từ kết quả nhận dạng của hàm find_scaled_shape_model (3.1.2.3)) Tọa độ tâm thực của vật thể được xác định dựa trên các tọa độ này và tọa độ tâm thực của điểm chuẩn

Hình 5.6: Điểm chuẩn sử dụng trong luận văn

Hình 5.7: Ảnh chứa các vật thể và điểm chuẩn

 Xác định tọa độ tâm theo pixel của điểm chuẩn: Để xác định tọa độ tâm theo pixel của điểm chuẩn thì trước tiên phải tiến hành nhận dạng điểm chuẩn trong ảnh Luận văn thực hiện nhận dạng điểm chuẩn theo hình dạng Tọa độ tâm theo pixel của điểm chuẩn sẽ được xác định từ kết quả nhận dạng tương tự như đối với tọa độ tâm theo pixel của vật thể Luận văn thực hiện nhận dạng điểm chuẩn bằng 2 công cụ HALCON và OpenCV theo lý thuyết nhận dạng đã nghiên cứu (chương 1, 1.2), và so sánh kết quả nhận dạng theo sai số nhận dạng và thời gian nhận dạng để chọn ra công cụ nhận dạng tối ưu cho ứng dụng

Nhận dạng điểm chuẩn trong HALCON:

Trong HALCON, điểm chuẩn được nhận dạng theo phương pháp tương tự như đối với nhận dạng vật thể đã trình bày trong chương 3 (3.1.2) Tọa độ tâm theo pixel của điểm chuẩn sẽ được rút ra từ kết quả nhận dạng tương tự như trong nhận dạng vật thể

Các hàm HALCON chính được sử dụng để tạo mẫu và nhận dạng điểm chuẩn : - Luận văn sử dụng các hàm chính sau để tạo mẫu: draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) reduce_domain (Image, Rectangle, ImageReduced) decompose3 (ImageReduced, Red, Green, Blue) trans_from_rgb(Red, Green, Blue, Hue, Saturation, Value, 'hsv') threshold (Value, Regions, 0, 150) dilation_circle (Regions, RegionDilation, 2) reduce_domain (ImageReduced, RegionDilation, ImageReduced1) inspect_shape_model (ImageReduced1, ModelImages, ModelRegions, 4, 40) create_scaled_shape_model (ImageReduced1, 4, 0, rad(360), 'auto', 1, 2, 'auto', 'auto', 'ignore_color_polarity', 40, 'auto', ModelID) write_shape_model (ModelID, 'E: /thu_vien/diem_chuan.shm')

Trong đó, có một số khác biệt so với cách sử dụng đã trình bày trong chương 3:

+ Hàm threshold sử dụng mức ngưỡng xám là [0, 150] xử lý cho thành phần Value trong hệ màu HSV của ảnh cần nhận dạng (thành phần này lưu trong biến Value) thay vì là thành phần Saturation Vì trong trường hợp nhận dạng cho điểm chuẩn, thành phần Value thể hiện sự phân biệt giữa hình dạng điểm chuẩn và nền ảnh rõ rệt nhất

Hình 5.8: Ba thành phần trong hệ màu HSV của ảnh dùng để tạo mẫu điểm chuẩn

Hình 5.9: Hàm threshold chọn ra phần ảnh thích hợp (màu đỏ) để tạo mẫu

+ Hàm dilation_circle mở rộng phần ảnh được chọn thêm 2 pixel dọc theo đường biên thay vì 5 pixel như trong chương 3

+ Hàm inspect_shape_model chọn mức ngưỡng xám là 40 để tạo mẫu

Hình 5.10: Hình dạng mẫu được tạo

- Luận văn sử dụng các hàm chính sau để nhận dạng: read_shape_model ('E:/ thu_vien/diem_chuan.shm', ModelID) find_scaled_shape_model (Image, ModelID, rad(0), rad(360), 1, 2, 0.9, 0, 0, 'least_squares', 4, 0.9, Row, Column, Angle, Scale, Score)

Hình 5.11: Ảnh minh họa nhận dạng điểm chuẩn trong HALCON

Nhận dạng điểm chuẩn trong OpenCV:

Vì điểm chuẩn có hình dạng đặc biệt khác với 5 dạng hình học cơ bản mà luận văn đã thực hiện nhận dạng trong chương 3 (3.2.2) nên để nhận dạng điểm chuẩn trong OpenCV, luận văn thực hiện theo phương pháp sử dụng giải thuật SURF như đã trình bày trong chương 1 (1.2.1.2)

Hình 5.12: Ảnh minh họa nhận dạng điểm chuẩn trong OpenCV

Hình minh họa 5.12 thể hiện kết quả nhận dạng điểm chuẩn theo giải thuật SURF Các điểm đặc trưng sẽ được rút trích (Interest Point Detection), sau đó được mô tả (Interest Point Description), cuối cùng quá trình nhận dạng được tiến hành giữa ảnh mẫu nằm ở góc trên bên trái và ảnh cần nhận dạng (Matching), và cho kết quả như trong hình Các điểm tròn trong ảnh mẫu và ảnh cần nhận dạng là các điểm đặc trưng, 2 điểm đặc trưng khớp nhau sẽ được nối lại như trong hình Hình minh họa 5.12 cho thấy rằng có một số điểm đặc trưng được so khớp sai so với thực tế, ví dụ như điểm trên cùng bên phải của điểm chuẩn trong ảnh mẫu được nhận dạng khớp với điểm dưới cùng bên trái của điểm chuẩn trong ảnh cần nhận dạng, trong khi kết quả đúng phải là một điểm có vị trí tương đương như trong ảnh mẫu Các điểm đặc trưng rút trích được trong ảnh cần nhận dạng sẽ được sử dụng để vẽ một khung hình bao quanh điểm chuẩn với kích thước tương đương kích thước khung ảnh mẫu Khung hình này chính là hình tứ giác màu xanh lá (kết quả nhận dạng chính xác nhất sẽ cho ra khung hình dạng hình vuông với kích thước tương đương khung ảnh mẫu) Tọa độ tâm theo pixel của điểm chuẩn sẽ được xác định dựa vào 2 trong số 4 tọa độ của 4 góc hình tứ giác này Luận văn chọn 2 góc trên bên trái

(điểm 1) và góc dưới bên phải (điểm 2) để xác định tọa độ tâm điểm chuẩn, công thức như sau: x đ ể ẩ (pixel) = x đ ể +x đ ể − x đ ể

2 (5.2) Luận văn sử dụng các hàm OpenCV chính sau đây để nhận dạng điểm chuẩn:

- Rút trích điểm đặc trưng:

SurfFeatureDetector detector(50) detector.detect(img_object, keypoints_object) detector.detect(img_scene, keypoints_scene)

Trong đó: 50 là tỉ lệ để rút trích đủ số điểm đặt trưng cần thiết để có thể tạo được hình tứ giác màu lục có hình dạng gần giống dạng hình vuông với kích thước tương đương khung ảnh mẫu Tỉ lệ này có được từ thực nghiệm của luận văn

- Mô tả điểm đặc trưng:

SurfDescriptorExtractor extractor extractor.compute(img_object, keypoints_object, descriptors_object) extractor.compute(img_scene, keypoints_scene, descriptors_scene)

FlannBasedMatcher matcher matcher.match( descriptors_object, descriptors_scene, matches )

So sánh kết quả nhận dạng điểm chuẩn trong HALCON và OpenCV theo thời gian nhận dạng và sai số nhận dạng:

Luận văn sử dụng quy trình thực nghiệm tương tự như đối với nhận dạng vật thể (đã trình bày trong chương 3, mục 3.3.2) để xác định thời gian nhận dạng và sai số nhận dạng Kết quả thời gian nhận dạng được thể hiện trong bảng 5.1.

Bảng 5.1: Kết quả thực nghiệm xác định thời gian của quá trình nhận điểm chuẩn trong HALCON và OpenCV (đơn vị tính là giây) Lần thực nghiệm

Thời gian nhận dạng (s) HALCON OpenCV

- Thời gian nhận dạng trung bình trong HALCON: 0.3992347 (s) - Thời gian nhận dạng trung bình trong OpenCV: 1.2882167 (s) Vì vị trí đặt của điểm chuẩn là duy nhất nên chỉ xét trong 1 trường hợp sai số nhận dạng (khác với vật thể xét trong 2 trường hợp đặt thẳng góc và đặt lệch với hướng nhìn của camera) Tọa độ tâm theo pixel thực tế của điểm chuẩn là (591;

272) Kết quả nhận dạng trong HALCON là (591; 273), trong OpenCV là (590;

Kết luận

Luận văn đã thực hiện xử lý ảnh nhận dạng vật thể theo màu sắc (cụ thể nhận dạng cho 5 màu Vàng, Lục, Lam, Tím, Đỏ) và theo hình dạng (cụ thể nhận dạng cho 5 loại hình dạng là tam giác, chữ nhật, vuông, ngũ giác, tròn) Quá trình nhận dạng dựa trên các giải thuật nhận dạng màu và hình dạng đã nghiên cứu và thực hiện bằng hai công cụ là phần mềm HALCON và thư viện OpenCV Kết quả nhận dạng được so sánh với nhau để thấy được ưu khuyết điểm giữa hai công cụ này về thời gian và sai số nhận dạng Từ đó, chọn ra công cụ phù hợp cho hai ứng dụng trong luận văn

Trong khi HALCON là phần mềm xử lý ảnh chuyên dụng, thì OpenCV là thư viện xử lý ảnh được xử dụng phổ biến Việc luận văn so sánh kết quả của hai công cụ này và thực hiện các ứng dụng đã thể hiện được cách kết hợp hai công cụ này Điều này có thể được áp dụng cho những ứng dụng xử lý ảnh có tính chất tương tự như hai ứng dụng trong luận văn để đạt được khả năng xử lý đáp ứng được yêu cầu về thời gian và sai số nhận dạng

Luận văn thực hiện hai ứng dụng xử lý ảnh nhận dạng vật thể theo màu sắc và hình dạng cho Robot tay máy là “Ứng dụng điều khiển Robot tay máy gắp sản phẩm trên băng chuyền bỏ vào nơi qui định” và “Ứng dụng điều khiển Robot tay máy gắp vật ở vị trí bất kì sắp xếp vào nơi qui định” Cả hai ứng dụng đều được kiểm chứng kết quả bằng mô hình thực nghiệm và được thiết kế giao diện để người dùng có thể điều khiển trực quan trên máy tính Trong đó, luận văn đã nêu ra được phương pháp chuyển đổi từ tọa độ trong ảnh (theo đơn vị pixel) sang tọa độ trên hệ trục của tay máy (theo đơn vị độ dài thực tế (mm)) bằng cách sử dụng một điểm chuẩn, và xây dựng được phương pháp để điều khiển tay máy gắp vật ở vị trí bất kì Đây là hai yếu tố quan trọng để có thể thực hiện được các ứng dụng xử lý ảnh điều khiển Robot tay máy trong thực tế Đề tài tiến hành xử lý ảnh nhận dạng vật thể theo một số màu và hình dạng cơ bản Các ứng dụng xây dựng được chỉ mang tính chất học thuật Nhưng đây là nền tảng cho các ứng dụng xử lý ảnh điều khiển Robot tay máy trong thực tế Ví dụ như các ứng dụng tay máy gắp phân loại bút theo màu trong dây chuyền sản xuất bút màu, xác định vị trí vùng sơn bị lỗi trên sản phẩm (tấm tôn,…) để sữa chữa, nhận dạng dựa vào mã vạch hoặc các mã hình học và màu để điều khiển Robot di chuyển và phân loại sắp xếp đồ vật (sắp xếp băng từ trong phòng lưu trữ dữ liệu ở đài truyền hình…).

Hướng phát triển

Toàn bộ các quá trình xử lý ảnh nhận trong luận văn đều được thực hiện trong cùng một điều kiện ánh sáng phòng Tuy nhiên, khi điều kiện ánh sáng phòng thay đổi, các thông số nhận dạng đã chọn cho các hàm xử lý ảnh trong luận văn phải thay đổi để có thể nhận dạng được chính xác vật thể.

- Đối với nhận dạng màu: có thể tiến hành nhận dạng dựa trên 3 thành phần Hue, Saturation và Value thay vì chỉ một thành phần Hue

- Đối với nhận dạng theo hình dạng: trong OpenCV, bước tạo ảnh trắng đen có thể dựa trên cả 2 thành phần Saturation và Value thay vì chỉ 1 trong 2 thành phần

Luận văn chỉ thực hiện điều khiển Robot tay máy theo động học vị trí nghĩa là chỉ quan tâm làm sao cho tay máy đến được vị trí mong muốn, vấn đề về tốc độ di chuyển và lực tác động của tay máy khi di chuyển không được tính đến Trong khi đó, tay máy sử dụng trong luận văn là dạng mô hình cơ bản không phải loại tay máy chuyên dụng nên có độ rung lắc lớn khi tốc độ di chuyển thay đổi đột ngột do ảnh hưởng của lực quán tính Do đó, khi gắp vật, tay máy cần được điều khiển di chuyển chậm để có thể có thể dừng chính xác và ổn định ở vị trí cần thiết để gắp vật, không bị va đập vào mặt phẳng đặt vật Để khắc phục vấn đề này, cần phải nghiên cứu về động lực học tay máy Điều này là cần thiết đối với các ứng dụng ngoài thực tế (ngay cả khi điều khiển cho các tay máy chuyên dụng vì các tay máy này vẫn bị ảnh hưởng bởi lực quán tính khi di chuyển ở tốc độ cao) vì ngoài yếu tố vị trí, nhiều ứng dụng còn đòi hỏi yếu tố tốc độ và đôi khi cả lực tác động của tay máy khi di chuyển.

Ngày đăng: 24/09/2024, 03:57

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Phạm Đăng Phước, “Robot công nghiệp”, Giáo trình Sách, tạp chí
Tiêu đề: Robot công nghiệp”
[2] Jae S. Lim, Two-Dimensional Signal and Image Processing. Translated by Nguyen Van Ngo, Ha Noi, 2001 Sách, tạp chí
Tiêu đề: Two-Dimensional Signal and Image Processing
[3] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, Prentice Hall, 2007 (Third Edition) Sách, tạp chí
Tiêu đề: Digital Image Processing
[4] H. Bay, From Wide-baseline Point and Line Correspondences to 3D, PhD thesis, ETH Zurich, 2006 Sách, tạp chí
Tiêu đề: From Wide-baseline Point and Line Correspondences to 3D
[5] John J. Craig, Introduction to Robotics: Mechanics and Control, Addison Wesley, 1986 (Second Edition) Sách, tạp chí
Tiêu đề: Introduction to Robotics: Mechanics and Control
[6] Herbert Bay, Andreas Ess, Tinne Tuytelaars and Luc Van Gool, “Speeded-Up Robust Features (SURF)”, Computer Vision and Image Understanding, vol Sách, tạp chí
Tiêu đề: Speeded-Up Robust Features (SURF)”, "Computer Vision and Image Understanding
[7] L. W. Teck, M. Sulaiman, H. N. M. Shah and R. Omar, “Implementation of Shape – Based Matching Vision System in Flexible Manufacturing System”, Journal of Engineering Science and Technology Review, vol. 3, no. 1, pp. 128- 135, May 2010 Sách, tạp chí
Tiêu đề: Implementation of Shape – Based Matching Vision System in Flexible Manufacturing System”, "Journal of Engineering Science and Technology Review
[8] Reference Manual: HALCON/HDevelop, Vers. 9.0.2, MVTec Software GmbH, 2010 Sách, tạp chí
Tiêu đề: Reference Manual: HALCON/HDevelop
[9] Basics: HALCON/HDevelop, Vers. 9.0.2, MVTec Software GmbH, 2010 Sách, tạp chí
Tiêu đề: Basics: HALCON/HDevelop
[10] Programmer' s Guide: HALCON/HDevelop, Vers. 9.0.2, MVTec Software GmbH, 2010 Sách, tạp chí
Tiêu đề: Programmer' s Guide: HALCON/HDevelop
[11] HALCON 9.0.2. Sofware for Mechine Vision. MVTec Sofware GmbH, Munich, Germany, 2010 Sách, tạp chí
Tiêu đề: HALCON 9.0.2
[12] Gary Bradski, Adrian Kaehler, Learning OpenCV: Computer Vision with the OpenCV Library, O’Reilly Media, 2008 (First Edition).[13] “OpenCV User Guide”,http://docs.opencv.org/doc/user_guide/user_guide.html, 2014 Sách, tạp chí
Tiêu đề: Learning OpenCV: Computer Vision with the OpenCV Library", O’Reilly Media, 2008 (First Edition). [13] “OpenCV User Guide”, "http://docs.opencv.org/doc/user_guide/user_guide.html
[14] “OpenCV API Reference”, http://docs.opencv.org/modules/refman.html, 2014 Sách, tạp chí
Tiêu đề: OpenCV API Reference”, "http://docs.opencv.org/modules/refman.html
4. create_scaled_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID) Sách, tạp chí
Tiêu đề: Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID
w