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

Ứng dụng xử lý ảnh trong điều khiển robot tự động

64 0 0

Đ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 Trong Điều Khiển Robot Tự Động
Định dạng
Số trang 64
Dung lượng 1,18 MB

Cấu trúc

  • CHƯƠNG 1..........................................................................................................9 (9)
    • 1.1 Tổng quan về xử lý ảnh (9)
    • 1.2 Các vấn đề cơ bản trong xử lý ảnh (10)
      • 1.2.1 Một số khái niệm (10)
      • 1.2.2 Thu nhận ảnh (10)
      • 1.2.4 Các lĩnh vực xử lý ảnh (12)
        • 1.2.4.1 Nâng cao chất lượng ảnh (12)
        • 1.2.4.2 Khôi phục ảnh (12)
        • 1.2.4.3 Phân tích ảnh (13)
        • 1.2.4.4 Nén ảnh (13)
        • 1.2.4.5 Tổng hợp ảnh (13)
      • 1.2.5 Một số hệ thống xử lý ảnh cơ bản (13)
    • 1.3 Một số phương pháp xử lý ảnh (14)
      • 1.3.2 Tăng giảm độ tương phản (16)
      • 1.3.3 Tách ngưỡng (18)
      • 1.3.4 Phép giãn ảnh đa cấp xám (18)
        • 1.3.4.1 Định nghĩa (18)
        • 1.3.4.2 Thuật toán (18)
      • 1.3.5 Các tác động ảnh xám cục bộ (20)
        • 1.3.5.1 Tác động nhân chập ảnh (20)
        • 1.3.5.2 Các phương pháp lọc-làm nhẵn (21)
        • 1.3.5.3 Bộ lọc phi tuyến (21)
        • 1.3.5.4 Lọc phi tuyến (23)
      • 1.3.6 Phép co ảnh đa cấp xám (24)
        • 1.3.6.1 Định nghĩa (24)
        • 1.3.6.2 Thuật toán (24)
      • 1.3.7 Các phép biến đổi hình học (24)
        • 1.3.7.1 Phép dịch ảnh (24)
        • 1.3.7.2 Phép phóng to hoặc thu nhỏ ảnh (25)
        • 1.3.7.3 Phép quay ảnh (25)
        • 1.3.7.4 Kết hợp các phép biến đổi hợp nhất (26)
  • CHƯƠNG 2 TỔNG QUAN VỀ C SHARP (28)
    • 2.1 Tổng quan về ngôn ngữ C sharp (C #) (28)
      • 2.1.1 Giới thiệu chung về ngôn ngữ C sharp (C#) (28)
      • 2.1.2 Nền tảng ngôn ngữ C# (29)
        • 2.1.2.1 Kiểu dữ liệu (29)
        • 2.1.2.2 Biến, hằng và toán tử (31)
        • 2.1.2.3 Câu lệnh (32)
      • 2.1.3 Xây dựng lớp, đối tượng (36)
        • 2.1.3.1 Lớp (36)
        • 2.1.3.2 Thuộc tính truy cập (37)
        • 2.1.3.3 Tham số của phương thức (37)
        • 2.1.3.5 Khởi tạo biến thành viên (38)
      • 2.1.4 Kế thừa và đa hình (38)
        • 2.1.4.1 Kế thừa (38)
        • 2.1.4.2 Đa hình (39)
        • 2.1.4.3 Lớp trừu tượng (39)
      • 2.1.5 Nạp chồng toán tử (40)
      • 2.1.6 Các lớp cơ sở .NET (41)
        • 2.1.6.1 Lớp đối tượng trong .NET Framework (41)
        • 2.1.6.2 Lớp Timer (42)
        • 2.1.6.3 Lớp về thư mục & hệ thống (42)
        • 2.1.6.4 Lớp Math (42)
        • 2.1.6.5 Lớp thao tác tập tin (43)
        • 2.1.6.6 Làm việc với tập tin dữ liệu (44)
      • 2.1.7 Ứng dụng Window với Window Form (44)
      • 2.1.8 Truy cập dữ liệu với ADO.NET (45)
  • CHƯƠNG 3 ỨNG DỤNG XỬ LÝ ẢNH TRONG ĐIỀU KHIỂN (47)
    • 3.1 Hoạt động của robot (47)
      • 3.1.1 Nhiệm vụ (47)
      • 3.1.2 Hướng của giá đỡ hàng so với xe nâng tự động (49)
      • 3.1.3 Khoảng cách từ xe tự động đến giá đỡ hàng (50)
      • 3.1.4 Xác định khoảng cách (50)
      • 3.1.5 Kích thước ảnh thực của đối tượng (52)
    • 3.2 Ứng dụng xử lý ảnh để tính khoảng cách (53)
      • 3.2.1 Mô tả bài toán (53)
      • 3.2.2 Quá trình thu ảnh và các yêu cầu của hệ thống (54)
        • 3.2.2.1 Đọc ảnh (54)
        • 3.2.2.2 Lọc nhiễu (55)
        • 3.2.2.3 Phân ngưỡng (55)
    • 3.3 Tính toán khoảng cách dựa trên ảnh thu được (58)
    • 3.4 Xây dựng chương trình (59)
      • 3.4.1 Môi trường ứng dụng (59)
      • 3.4.2 Chương trình (60)
        • 3.4.2.1 Kết quả thực nghiệm (60)
  • KẾT LUẬN (62)
    • 2. Hướng phát triển (63)
  • TÀI LIỆU THAM KHẢO (63)

Nội dung

Tổng quan về xử lý ảnh

Xử lý ảnh là một lĩnh vực đang được quan tâm, xử lý ảnh có quan hệ mật thiết với nhận thức về ảnh của con người Tổng quát với hệ thống xử lý ảnh như sau:

Hình 1: Các bước cơ bản của hệ thống xử lý ảnh

Theo sơ đồ trên, ảnh cần được xử lý sẽ thu qua hệ thống thu nhận ảnh Hệ thống thu ảnh này bao gồm các thiết bị chụp ảnh như camera, máy quét, máy scanner, máy chụp hình, TiVi camera… Ảnh sau khi thu nhận qua hệ thống thu nhận ảnh sẽ tiền xử lý, trích chọn đặc trưng, hậu xử lý,sau đó ảnh đượclưu thành file để đưa vào máy tính xử lý, lưu trữ, hoạc được đem ra đối sánh để đưa ra kết luận Một số hệ thống có thể bao gồm các chức năng lấy mẫu và số hóa ảnh.

Có nhiều loại file ảnh khác nhau: file bitmap, file jpeg, file gif, Ảnh gốc sau khi đã số hóa được đưa vào máy tính để xử lý Và tùy theo từng ứng dụng cụ thể mà chọn ra các cách xử lý thích hợp.

Các vấn đề cơ bản trong xử lý ảnh

Pixel (Picture Element): Phần tử ảnh Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng. Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hóa ảnh Trong quá trình số hóa người ta biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng tử hóa thành phần giá trị (rời rạc hóa biên độ giá trị), về nguyên tắc bằng mắt thường không phâ biệt được hai mức kề nhau Do vậy người ta sử dụng khái niệm Pixel- phần tử ảnh Mỗi pixel gồm một cặp tọa độ x,y và màu Cặp tọa độ x,y tạo nên độ phân giải (resolution).

 Ảnh: Là một tập hợp các điểm ảnh Khi được số hóa, nó thường được biểu diễn bởi mảng hai chiều l (n,p): n là số dòng, p là số cột ta nói ảnh gồm n*p pixel Ta ký hiệu l (x,y) để chỉ một điểm ảnh.

 Mức xám (Gray level): Là kết quả của sự mã hóa tương ứng một cường độ sáng của mỗi điểm ảnh với một giá trị số - kết quả của quá trình lượng tử hóa.

Lược đồ mức xám (Histogram): Là mộ hàm cung cấp tần suất xuất hiện của mỗi mức xám Lược đồ mức xám được biểu diễn bởi hệ tọa độ vuông góc x,y Trong hệ tọa độ này, trục hoành biểu diễn số mức xám từ 0 đến N, N là số mức xám (Số điểm ảnh có cùng mức xám)

Muốn xử lý ảnh trên máy tính ta cần phải số hóa ảnh, tức là đưa ảnh từ thực tế vào máy tính Ta dùng các thiết bị thu nhận như: Camera cộng với bộ

1 2.3 Biểu diễn ảnh Ảnh có thể biểu diễn dưới dạng tương tự hoặc tín hiệu số Trong biểu diễn số của các ảnh đa mức xám, một ảnh được biểu diễn dưới dạng một ma trận hai chiều Mỗi phần tử của ma trận biểu diễn cho mức xám, hay cường độ sáng của ảnh tại vị trí đó Mỗi phần tử trong ma trận được gọi là phần tử ảnh, thông thường ký hiệu là PEL (Picture Element) hoặc là điểm ảnh (Pixel).

 Với ảnh đen trắng: Nếu dùng 8 bit (1 byte) để biểu diễn mức xám thì số các mức xám có thể biểu diễn được là 2 8 hay 256 Mỗi mức xám được biểu diễn dưới dạng là một số nguyên nằm trong khoảng từ 0 đến 255, với mức xám 0 biểu diễn cho mức cường độ sáng nhất và 255 biểu diễn cho mức cường độ đen nhất.

 Với ảnh màu: Cách biểu diễn cũng tương tự như đối với ảnh đen tráng, chỉ khác là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng rẽ gồm : Đỏ (red), lục (green), lam (blue) Để biểu diễn cho một điểm ảnh màu cần 24bit, 24 bit này được chia thành ba khoảng 8bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính Để hiểu được việc số hóa ảnh ta xem hình4. Trong đó độ sáng trung bình của mỗi hình chữ nhật bằng giá trị một điểm ảnh.

Hình 2: Biểu diễn của một mức xám của ảnh số

Sau quá trình số hóa ta sẽ thu được một ma trận tương ứng với ảnh cần xét, mỗi phần tử của ma trận tương úng với một điểm ảnh Các điểm này thường được đặc trưng bởi tọa độ màu RGB tương ứng với nó trong hệ tọa độ màu cơ bản sau:

Hình 3: Hệ tọa độ màu RGB

Về mặt toán học ta có thể xem ảnh như là một hàm hai biền(x,y), với x,y là các biến tọa độ Giá trị số tại điểm (x,y) tương ứng với giá trị xám hoặc độ sáng của ảnh.

1.2.4 Các lĩnh vực xử lý ảnh

1.2.4.1 Nâng cao chất lượng ảnh

Nâng cao chất lượng ảnh là quá trình xử lý ảnh để nâng cao chất lượng của ảnh Nó làm nổi bật một số đặc tính nào đó của ảnh nhằm phục vụ cho hiển thị hoặc các quá trình phân tích tiếp theo Tùy theo các ứng dụng khác nhau mà chúng ta có các kỹ thuật nâng cao chất lượng ảnh khác nhau Nâng cao chất lượng ảnh có quan hệ gần gũi với khôi phục ảnh Khi một ảnh bị nhiễu, thì khôi phục ảnh gốc thường đưa đến nâng cao chất lượng ảnh Có một số khác biệt giữa khôi phục và nâng cao chất lượng ảnh Trong khôi phục ảnh, một ảnh gốc bị nhiễu, và mục tiêu là làm cho ảnh sau khi xử lý càng giống ảnh gốc càng tốt Còn nâng cao chất lượng ảnh thì mục tiêu là làm cho ảnh sau khi xử lý được tốt hơn khi chưa xử lý Như vậy một ảnh không bị nhiễu thì không thể được xử lý bằng các kỹ thuật khôi phục ảnh nhưng ảnh đó có thể được xử lý bằng các kỹ thuật nâng cao chất lượng ảnh Nhưng một ảnh bị nhiễu thì nó có thể được xử lý vừa bằng các kỹ thuật khôi phục ảnh và nâng cao chất lượng ảnh.

Bất kỳ ảnh nào được thu bằng các thiệt bị điện, hay quang điện, hay quang học thường bị nhiễu bởi các môi trường cảm biến của các thiệt bị đó Các ngẫu nhiên do chuyển động giữa camera và các đối tượng được chụp, nhiễu do khí quyển.

Khôi phục ảnh dùng các bộ lọc để lọc các ảnh bị nhiễu để giảm tối thiểu sự ảnh hưởng của các loại nhiễu này cho ra ảnh kết quả càng gần giống với ảnh gốc càng tốt Hiệu quả của các bộ lọc khôi phục ảnh phụ thuộc vào sự nhận biết về quá trình nhiễu cùng với quá trình thu nhận ảnh Khôi phục ảnh thường được xử lý trên miền tần số là chủ yếu Bao gồm các kỹ thuật lọc ngược, lọc bình thường tối thiểu.

Là quá trình suy luận, tính toán dựa vào các đặc tính thể hiện trên hình ảnh để từ đó rút ra được các thông tin định lượng về ảnh Phân tích ảnh có thể tách biên các vật thể trên ảnh, đo lường, phân loại, mô tả, so sánh chúng Mặt khác, từ việc phân tích ảnh cũng có thể suy ra các số liệu thống kê về hình ảnh.

Phân đoạn ảnh(Segmentation) là một hướng riêng của phân tích ảnh Phân đoạn ảnh bao gồm các kỹ thuật phân tách các đối tượng của ảnh thành những đối tượng có những nét đặc trưng của nó oặc tách biệt hoàn toàn giữa đối tượng và nền Mục đích là để cho dễ quan sát và xử lý.

Một số phương pháp xử lý ảnh

1 3.1 Kỹ thuật tăng giảm độ sáng

Tăng cường độ sáng (Brightness) của một ảnh có thể được hiểu như sự phát sáng toàn bộ ảnh Hay nói một cách cụ thể đó là sự phát sáng toàn bộ của mọi Pixel trong ảnh đó Đây là một kỹ thuật khá đơn giản: để tăng thêm độ sáng, tất cả các Pixel của ảnh cần được cộng thêm giá trị điều chỉnh vào mọi kênh màu RGB Tuy kỹ thuật này đơn giản nhưng nó đem lại hiệu quả khá cao và rất hay được sử dụng trong lĩnh vực xử lý ảnh Nó giúp ích rất nhiều trong các ngành như y học, địa lý, quân sự, trong việc phân tích và nhận dạng. Ở đây điều chỉnh Brightness không chỉ được sử dụng để làm sáng lên những ảnh tối mà còn được sử dụng để làm tối đi các ảnh sáng Một ảnh sáng hoàn toàn đơn giản là tất cả các Pixel đều màu trắng trong khi một ảnh tối tất cả các Pixel đều màu tối Sự khác nhau duy nhất trong làm tối một ảnh là trừ đi giá trị điều chỉnh vào mỗi kênh màu R - G - B của ảnh. Đối với mỗi kênh màu, chúng chỉ nhận các giá trị [0 255] Chính vì thế khi tăng cường hay giảm độ sáng của một ảnh ta phải chú ý đến ngưỡng của các kênh Điều đó có nghĩa là với mỗi kênh màu của một Pixel nếu nhỏ hơn 0 thì ta phải gán bằng 0 và nếu lớn hơn 255 thì ta phải gán bằng 255.

Biểu thức cho kỹ thuật Brightness có dạng: g(x,y) = f(x,y) + b

Trong đó b là hằng số cộng thêm vào giá trị màu f(x,y) Độ sáng của ảnh tăng nếu b > 0, và giảm bớt nếu b < 0.

Thuật toán chung được miêu tả bằng :

If (Brightness = True) Then // Tăng độ sáng

Else NewValue = OldValue - Adjustment; // Giảm độ sáng

If (NewValue < ValueMin) Then NewValue = ValueMin;

If (NewValue > ValueMax) Then NewValue = ValueMax; Để cho thuật giả này nhanh hơn, chúng ta phân ra hai mức làm sáng (Lightening) và làm tối (Darkening) Việc phân ra làm hai mức là có hai lý do. Thứ nhất là khi làm sáng ảnh thì không phải kiểm tra nếu giá trị màu dưới 0 và khi làm tối ảnh cũng không phải kiểm tra nếu giá trị màu trên 255 Lý do thứ hai quan trọng hơn Đó là một Byte chỉ giữ những giá trị giữa 0 và 255 Mà phạm vi điều chỉnh màu lại nằm trong [-255 255] Điều đó có nghĩa là nếu chúng ta không phân ra làm hai mức thì giá trị điều chỉnh màu phải là Int và khi đó việc xử lý tốn thêm thời gian sau mỗi vòng lặp.

Thuật toán trên có thể được cải tiến như sau:

Với biến điều chỉnh màu Adjustment được khai báo kiểu Byte.

Hình 4: Ảnh gốc (a); ảnh đã giảm độ sáng (b); ảnh đã được tăng cường độ sáng

Sử dụng giải thuật này, ta có kết quả như trong hình 4 Ta nhận thấy rằng những điểm đã sáng trắng trong ảnh gốc không được làm sáng hơn và các điểm đã tối đen trong ảnh gốc cũng không được làm tối hơn.

1.3.2 Tăng giảm độ tương phản Độ tương phản (Contrast) thể hiện sự thay đổi cường độ sáng của đối tượng so với nền, hay nói cách khác, độ tương phản là độ nổi của điểm ảnh hay vùng ảnh so với nền. Ảnh số là tập hợp các điểm, mà mỗi điểm có giá trị độ sáng khác nhau Ở đây, độ sáng để mắt người dễ cảm nhận ảnh song không phải là quyết định Thực tế chỉ ra rằng hai đối tượng có cùng độ sáng nhưng đặt trên hai nền khác nhau sẽ cho cảm nhận khác nhau Vì vậy ta có thể thay đổi độ tương phản của ảnh sao cho phù hợp.

Việc làm tăng độ tương phản rất hữu ích khi tiến hành xử lý trước theo phương pháp phân ngưỡng Bằng việc làm tăng độ tương phản, sự khác nhau của giá trị nền và đối tượng, độ dốc của cạnh đối tượng được tăng lên Do đó sau khi làm tăng độ tương phản ta có thể tìm các giá trị màu thích hợp với một vùng sáng hơn

Trong một ảnh có độ tương phản cao, có thể xác định được các viền rõ ràng và chi tiết khác nhau của ảnh đó được nổi bật Còn trong một ảnh có độ tương phản thấp, tất cả các màu đều gần như nhau gây khó khăn cho việc xác định các chi tiết của ảnh.

Hình sau mô tả việc tăng và giảm độ tương phản đối với ảnh gốc

Hình 5: (a) Ảnh gốc; (b) Ảnh đã giảm độ tương phản; (c) Ảnh đã tăng độ tương phản.

Biểu thức cho kỹ thuật Contrast có dạng: g(x,y) = af(x,y) (3.3)

Trong đó a là hằng số nhân vào giá trị màu tại f(x,y) Độ sáng của ảnh tăng nếu a > 1, và giảm bớt nếu a < 1.

Thuật toán được miêu tả như sau :

NewValue=OldValue/255; // Biến đổi đến một phần trăm

NewValue=NewValue*ContrastValue; //ContrastValue thuộc [-1,1] NewValue=NewValue + 0.5;

Biểu thức Brightness và Contrast có thể được kết hợp lại để có được biểu thức sau: g(x,y) = af(x,y) + b (*)

Từ biểu thức (*) có thể điều chỉnh cả giá trị Brightness và Contrast.

Ta chọn hai mức Thấp - Min, Cao - Max và giá trị ngưỡng λ, khi đó giá trị các pixel được định nghĩa lại như sau:

Ví dụ ảnh phân ngưỡng theo 2 mức giá trị màu 0 và 255:

Hình 6: (a):ảnh xám (b):ảnh đen trắng

1.3.4 Phép giãn ảnh đa cấp xám

Với ảnh đa cấp xám IMxN, THxK là mẫu Gọi R là ảnh kết quả của của phép giãn ảnh I bởi mẫu T Khi đó R có kích thước (M+H-1, N+K-1) và được xác định như sau:

VD: Cho ảnh I và mẫu T như sau:

B1: Thêm các Pixel có mức xám = 0 vào xung quanh biên I sao cho kích thước của ảnh là (M+2*H-2)x(N+2*K-2).

B3: Dịch chuyển mẫu T’ trên ảnh I theo trật tự từ trên xuống dưới, từ trái sang phải sao cho pham vi mẫu của T’ nằm trong ảnh I Ở mỗi lần dịch chuyển, pixel ảnh kết quả tương ứng có mức xám bằng giá trị lớn nhất của tổng các cặp pixel của mẫu T’ và ảnh I tương ứng Kết quả thu được có thể giảm đi cùng một giá trị xám thích hợp

1.3.5 Các tác động ảnh xám cục bộ

1.3.5.1 Tác động nhân chập ảnh

Phép nhân chập được định nghĩa như sau:

Trong đó: c1 là hằng số để chia thang, c0 là hằng số cộng thêm vào; c0, c1 [0, 255]

: C là ma trận mặt nạ để thực hiện phép nhân chập C thường có kích thước (2k+1)x(2k+1).

Phép nhân chập có các tác dụng sau:

+ Loại bỏ điểm mép, ở bộ lọc (2k+1)x(2k+1) xuất hiện một mép với độ rộng là k.

+ Sao chép mép ảnh cũ sang ảnh mới.

+ Kế tiếp các ảnh một cách tuần hoàn và tạo ra một tín hiệu tuần hoàn.

+ Giảm các tín hiệu nhiễu.

1.3.5.2 Các phương pháp lọc-làm nhẵn

Trong nhiều lĩnh vực kỹ thuật, nhiễu đóng vai trò chủ yếu gây nên những khó khăn khi ta cần phân tích một tín hiệu nào đó, cũng không loại trừ tín hiệu ảnh Giữa một ảnh thực và ảnh số hoá thu nhận được khác nhau khá nhiều vì có nhiều quá trình can thiệp vào Nguyên nhân là do nhiễu điện tử của máy thu hay chất lượng kém của bộ số hoá Ta xem xét biến nhiễu thể hiện trên ảnh thế nào. Giả sử ảnh là một miền có mức xám đồng nhất, như vậy các phần tử của ma trận biểu diễn ảnh sau quá trình số hoá phải có cùng giá trị Nhưng thực tế quan sát ta thấy: gần giá trị trung bình của mức xám có những phần tử trội lên khá nhiều Đó chính là hiện tượng nhiễu Như vậy nhiễu trong ảnh số được xem như sự dịch chuyển nhanh của tín hiệu thu nhận (tín hiệu ảnh I[m,n]) trên một khoảng cách ngắn) Xem xét một cách tương đương trong không gian tần số, nhiễu ứng với các thành phần tần số cao trong ảnh Do vậy, người ta nghĩ đến việc biến đổi có tính đến ảnh hưởng của các phần tử lân cận bằng cách lấy “tổ hợp” các điểm lân cận này (trong không gian thực) hay lọc các thành phần tần số cao (trong không gian tần số) Đây chính là kỹ thuật lọc (filtering) Cơ sở lý thuyết của kỹ thuật lọc số là dựa trên tính dư thừa thông tin không gian: các pixel lân cận có thể có cùng hoặc gần cùng một số đặc tính Hơn nữa, nhiễu có thể coi như sự đột biến của một điểm ảnh so với các điểm lân cận.

Trong kỹ thuật này, người ta sử dụng một mặt nạ và di chuyển khắp ảnh gốc Tuỳ theo cách tổ hợp điểm đang xét với các điểm lân cận mà ta có kỹ thuật lọc tuyến tính hay phi tuyến Điểm ảnh chịu tác động của biến đổi là điểm ở tâm mặt nạ.

Trong kỹ thuật lọc tuyến tính, ảnh thu được sẽ là tổng trọng số hay là trung bình trọng số các điểm lân cận với nhân cuộn hay mặt nạ Vì có nhiều loại nhiễu can thiệp vào quá trình xử lý ảnh nên cần có nhiều bộ lọc thích hợp Để làm trơn nhiễu ta sử dụng các mặt nạ thông thấp VD:

B vùng lân cận 9 điểm không cân bằng

C vùng lân cận 9 điểm cân bằng

D Bộ lọc Gauss cho 9 điểm

Lọc tuyến tính ngoài làm trơn nhiễu còn có thể trích chọn biên (nổi biên) Dễ dàng nhận thấy rằng biên là điểm có độ biến thiên nhanh về giá trị mức xám. Theo quan điểm về tần số tín hiệu, các điểm biên ứng với các thành phần tần số cao Do vậy, ta có thể dùng bộ lọc thông cao để cải thiện: lọc các thành phần tần số thấp và chỉ giữ lại thành phần tần số cao Vì thế, lọc thông cao thường được dùng làm trơn biên trước khi tiến hành các thao tác với biên ảnh Dưới đây là một số mặt nạ dùng trong lọc thông cao:

Các nhân chập thông cao thông thường có đặc tính chung là tổng các hệ số của bộ lọc bằng 1 Nguyên nhân chính là ngăn cản sự tăng quá giới hạn của các

0 -1 0 giá trị mức xám (các giá trị điểm ảnh vẫn giữ được giá trị của nó một cách gần đúng không thay đổi quá nhiều với giá trị thực).

Khác với lọc tuyến tính, kỹ thuật lọc phi tuyến coi một điểm ảnh kết quả không phải là tổ hợp tuyến tính của các điểm lân cận Người ta thường sử dụng 3 bộ lọc đó là: trung vị, giả trung vị và lọc ngoài a) Lọc trung vị Điểm ảnh đầu vào sẽ được thay thế bằng trung vị các điểm ảnh Kỹ thuật này đòi hỏi giá trị các điểm ảnh phải được sắp theo thứ tự tăng hay giảm dần Kích thước của sổ cũng được chọn (2k+1)x(2k+1) Lọc trung vị có tác dụng sau:

+ Hữu ích cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ phân giải.

+ Hiệu quả giảm các điểm nhiễu trong cửa sổ lớn hơn hoặc bằng một nửa số điểm trong cửa sổ. b) Lọc giả trung vị

Lọc giả trung vị tương tự như lọc trung vị nhưng giá trị được thay thế sẽ là trung bình cộng của hai giá trị lớn nhất và nhỏ nhất trong mặt nạ

Value = [ValueMin + ValueMax]/2. c) Lọc ngoài

TỔNG QUAN VỀ C SHARP

Tổng quan về ngôn ngữ C sharp (C #)

2.1.1 Giới thiệu chung về ngôn ngữ C sharp (C#)

Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữ liệu được xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại Và ngôn ngữ C# hội đủ những điều kiện như vậy, hơn nữa nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java

C# là một trình biên dịch hướng NET, tất cả các mã của C# luôn luôn chạy trên trên môi trường NET Framework C# được thiết kế dùng riêng cho Microsoft’s NET Framework (một nền khá mạnh cho sự phát triển, triển khai, thực hiện và phân phối các ứng dụng) Nó có thể sinh ra mã đích trong môi trường NET Nó cũng là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế dựa trên kinh nghiệm của các ngôn ngữ khác.

Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những từ khóa dành cho việc khai báo lớp, phương thức, thuộc tính mới C# hỗ trợ đầy đủ khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình.

C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một lớp cho những dịch vụ mà giao diện quy định Trong ngôn ngữ C#, một lớp chỉ có thể kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện Khi một lớp thực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giao diện.

Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm về ngữ nghĩa của nó thay đổi khác với C++ Trong C#, một cấu trúc được giới hạn, là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điều hành và bộ nhớ so với một lớp Một cấu trúc thì không thể kế thừa từ một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi một giao diện.

Ngôn ngữ C# cung cấp những đặc tính hướng thành phần (component- oriented), như là những thuộc tính, những sự kiện Lập trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp. Metadata mô tả cho một lớp, bao gồm những phương thức và những thuộc tính của nó, cũng như những sự bảo mật cần thiết và những thuộc tính khác Mã nguồn chứa đựng những logic cần thiết để thực hiện những chức năng của nó

Do vậy, một lớp được biên dịch như là một khối self-contained, nên môi trường hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết mà không cần những thông tin khác để sử dụng nó.

C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểu con trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử Các mã nguồn này là không an toàn (unsafe) Và bộ giải phóng bộ nhớ tự động của CLR sẽ không thực hiện việc giải phóng những đối tượng được tham chiếu bằng sử dụng con trỏ cho đến khi chúng được giải phóng.

2.1.2.1 Kiểu dữ liệu Điều cốt lõi của lập trình hướng đối tượng là tạo ra các kiểu mới Kiểu là một thứ được xem như trừu tượng Nó có thể là một bảng dữ liệu, một tiểu trình, hay một nút lệnh trong một cửa sổ Tóm lại kiểu được định nghĩa như một dạng vừa có thuộc tính chung (properties) và các hành vi ứng xử (behavior) của nó

C# là ngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh về kiểu dữ liệu là phải khai báo kiểu của mỗi đối tượng khi tạo (kiểu số nguyên, số thực, kiểu chuỗi, kiểu điều khiển ) và trình biên dịch sẽ giúp cho người lập trình không bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể được gán cho các kiểu dữ liệu khác Kiểu dữ liệu của một đối tượng là một tín hiệu để trình biên dịch nhận biết kích thước của một đối tượng (kiểu int có kích thước là 4 byte) và khả năng của nó (như một đối tượng button có thể vẽ, phản ứng khi nhấn, ).

Tương tự như C++ hay Java, C# chia thành hai tập hợp kiểu dữ liệu chính: Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình và kiểu được người dùng định nghĩa (user-defined) do người lập trình tạo ra.

C# phân tập hợp kiểu dữ liệu này thành hai loại: Kiểu dữ liệu giá trị (value) và kiểu dữ liệu tham chiếu (reference) Việc phân chi này do sự khác nhau khi lưu kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu trong bộ nhớ Đối với một kiểu dữ liệu giá trị thì sẽ được lưu giữ kích thước thật trong bộ nhớ đã cấp phát là stack Trong khi đó thì địa chỉ của kiểu dữ liệu tham chiếu thì được lưu trong stack nhưng đối tượng thật sự thì lưu trong bộ nhớ heap.

Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các đối tượng và chuỗi Và tất cả các kiểu do người dùng định nghĩa ngoại trừ kiểu cấu trúc đều là kiểu dữ liệu tham chiếu.

Ngôn ngữ C# đưa ra các kiểu dữ liệu xây dựng sẵn rất hữu dụng, phù hợp với một ngôn ngữ lập trình hiện đại, mỗi kiểu dữ liệu được ánh xạ đến một kiểu dữ liệu được hỗ trợ bởi hệ thống xác nhận ngôn ngữ chung (Common LanguageSpecification: CLS) trong MS.NET.

Kiểu C# Số byte Kiểu NE

Byte 1 Byte Số nguyên dương không dấu từ 0-255

Char 2 Char Ký tự Unicode

Bool 1 Boolean Giá trị logic true/ false

Sbyte 1 Sbyte Số nguyên có dấu ( từ -128 đến 127)

Short 2 Int16 Số nguyên có dấu giá trị từ -32768 đến

Ushort 2 Uint16 Số nguyên không dấu 0 – 65.535

Int 4 Int32 Số nguyên có dấu –2.147.483.647 và

2.147.483.647 Uint 4 Uint32 Số nguyên không dấu 0 – 4.294.967.295

Float 4 Single Kiểu dấu chấm động, giá trị xấp xỉ từ 3,4E-

38 đến 3,4E+38, với 7 chữ số có nghĩa Double 8 Double Kiểu dấu chấm động có độ chính xác gấp đôi, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308, với 15,16 chữ số có nghĩa. decimal 8 Decime Có độ chính xác đến 28 con số và giá trị thập phân, được dùng trong tính toán tài chính, kiểu này đòi hỏi phải có hậu tố “m” hay “M” theo sau giá trị.

Long 8 Int64 Kiểu số nguyên có dấu có giá trị trong khoảng : -9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807

Ulong 8 Uint64 Số nguyên không dấu từ 0 đến 0xffffffffffffffff

Bảng 3:Kiểu dữ liệu xây dựng sẵn

2.1.2.2 Biến, hằng và toán tử a Biến: Là một vùng lưu trữ ứng với một kiểu dữ liệu.

Biến có thể được gán giá trị và cũng có thể thay đổi giá trị trong khi thực hiện các lệnh của chương trình.

ỨNG DỤNG XỬ LÝ ẢNH TRONG ĐIỀU KHIỂN

Hoạt động của robot

3.1.1 Nhiệm vụ Ý tưởng tự động hoá việc xếp rỡ hàng hoá tại các nhà kho, cảng đã được các nhà nghiên cứu trong lĩnh vực tự động hoá đề ra từ những năm cuối của thế kỷ 20 Ngoài các nhiệm vụ định vị các sản phẩm, xây dựng các hệ nâng chuyển trong kho cảng một nhiệm vụ rất thiết thực và không kém phần lý thú là nghiên cứu các xe nâng hàng tự động, không có người lái đã được nhiều nhóm nghiên cứu tự động hoá và điều khiển thực hiện Một số tác giả đã sử dụng các cách khác nhau như: tìm vị trí 3D của các giá đỡ hàng dựa trên các đặc điểm màu sắc và hình học của chúng, sử dụng hai camera quang học hoặc hai laser scanner để thực hiện tính toán khoảng cách đến đối tượng, hoặc sử dụng 1 camera để xác định hướng và khoảng cách Đã có một số sản phẩm xe nâng hàng có gắn camera được điều khiển từ xa đã được đưa vào sử dụng Người điều khiển xe thông qua một màn hình điều khiển từ xa lái xe nâng hạ đến các vị trí cần thiết, thực hiện các thao tác cần thiết Tuy nhiên, cho đến nay các xe nâng hạ tự động hoàn toàn không người lái thì mới đang ở dạng nghiên cứu và thực sự chưa có mẫu thương phẩm nào trong thực tế.

Hình 8: Xe nâng hàng có người lái

Một xe nâng hàng từ động (thực chất là một robot) có nhiệm vụ tiếp cận một giá đỡ hàng để nâng giá đỡ (có hàng hoặc không có hàng) di chuyển đến một vị trí khác và hạ nó xuống Để xe tiếp cận được giá đỡ một số thông số cơ bản cần được cung cấp cho bộ xử lý trên xe

Hình 9:Giá đỡ hàng tiêu chuẩn và các kích thước (dài x rộng x cao) mm Từ trên xuống dưới, từ trái qua phải: 2a): châu Âu (1200 x 800 x 144) 2b): Mỹ 2c): Hàn

Xe tự động dùng 2 càng gắn ở đầu xe để móc vào 2 lỗ ở giá đỡ hàng. Khoảng cách giữa hai càng đã được điều chỉnh cho đúng với khoảng cách giữa hai lỗ trên giá đỡ Với các pallet có chiều dài và chiều rộng khác nhau (kiểu EU và kiểu Mỹ) trên mỗi mặt đều có 2 lỗ để móc vào nhưng kích thước và khoảng cách giữa các lỗ không như nhau nên chương trình xử lý cần phân biệt được các nhóm lỗ này Với các pallet mà kích thước dài = kích thước rộng (pallet hình vuông) như của Hàn Quốc và Trung Quốc (lục địa) thì không cần phân biệt sườn dài hay sườn ngắn của pallet.

3.1.2 Hướng của giá đỡ hàng so với xe nâng tự động

Hệ toạ độ của chúng ta được ký hiệu với các trục Ox, Oy, Oz Trong đó O là gốc toạ độ.

OxyzW là hệ toạ độ của không gian thực với các trục Owxw, Oyxy, Ozxz

Oxyzcamera là hệ toạ độ của camera với các trục Ocxc, Ocxc, Ocxc

Oxyzfork là hệ toạ độ của càng xe nâng với các trục Ofxf, Ofxf, Ofxf

Oxyzbody là hệ toạ độ của xe nâng với các trục Obxb, Obxb, Obxb.

Hình 10: Các hệ tọa độ

Nếu chúng ta chiếu song song xe nâng và giá đỡ lên mặt phẳng Owxwyw thì góc giữa hình chiếu của trục đối xứng s-s của giá đỡ với trục Obyb của xe nâng được gọi là hướng của xe nâng với giá đỡ (hoặc ngược lại).

3.1.3 Khoảng cách từ xe tự động đến giá đỡ hàng Đây là khoảng cách từ một điểm trên xe nâng đến một điểm trên giá đỡ. Chúng ta có thể định nghĩa đó là khoảng cách giữa tâm hình học theo ba chiều của xe nâng đến tâm hình học theo ba chiều của giá đỡ Nó là khoảng cách từ tâm điểm tiêu cự của camera gắn trên xe nâng đến điểm tâm hình học của mặt trước của giá đỡ

Mô hình xác định khoảng cách sử dụng camera như sau:

Hình 11: Mô hình xác định khoảng cách sử dụng camera với hai mặt phẳng ảnh và mặt phẳng đối tượng song song với nhau.

Giả sử mặt phẳng ảnh và mặt đối tượng song song với nhau Các tia chiếu và truc Ox cùng trong một mặt phẳng Quan hệ giữa khoảng cách thực từ tiêu điểm ống kính đến mặt phẳng đối tượng D và ảnh của đối tượng h, kích thước thực của đối tượng H và tiêu cự f của ống kính Các kích thước tính bằng milimet.

Từ đó suy ra : D=f H h =f n∗k H n: số pixel của ảnh biểu diễn kích thước theo hướng h k: hệ số thể hiện số milimét/pixel. k=W

W: Kích thước tấm sensor cảm biến ảnh

N: độ phân giải của cảm biến ảnh

Trong thực tế chúng ta thường sử dụng chương trình xử lý ảnh bằng máy tính (PC hoặc một hệ thống tính toán khác) khi đó chúng ta ánh xạ tấm sensor cảm biến lên một màn hình máy tính Lúc này:

W là kích thước của màn hình theo phương tính toán tính bằng milimét

N: Tổng số pixel của màn hình theo phương tính toán.

Trong trường hợp mặt phẳng ảnh của camera và mặt phẳng đối tượng không song song với nhau chúng ta có mô hình Trong mô hình này θ là góc nghiêng của camera với mặt phẳng ngang theo phương đứng (góc til), Φ là góc lệch của camera với trục đối xứng của đối tượng theo phương ngang (góc pan).

Hình 12: Mô hình camera pinhole khi mặt phẳng ảnh không song song mặt phẳng đối tượng

3.1.5 Kích thước ảnh thực của đối tượng

Do tính đồng dạng của ảnh trên mặt phẳng ảnh và đối tượng trên mặt phẳng đối tượng ta có thể xem xét quan hệ giữa kích thước thực X, Y và ảnh của nó trên hai hướng tại mặt phẳng song song với mặt phẳng ảnh Như vậy nếu ký hiệu:

Ox là kích thước ảnh theo chiều ngang (tính bằng mm), x là kích thước ảnh ngang - horizontal image dimension (tính bằng pixels),

Sx là kích thước sensor theo chiều ngang - the horizontal sensor size (tính bằng mm),

Px kích thước sensor ngang - the horizontal sensor size tính bằng pixels.

Oy là kích thước ảnh đứng - vertical image dimension (tính bằng mm), y là kích thước ảnh đứng - vertical image dimension (tính bằng pixels),

Sy kích thước sensor đứng - the vertical sensor size (tính bằng mm) và

Py là kích thước sensor đứng - vertical sensor size tính bằng pixels.

Chúng ta có quan hệ:

Khi đã biết f, Px, Sx,x, Ox chúng ta có thể tính ra D

Khoảng cách từ tiêu điểm đến đường tâm của đối tượng theo phương X có thể được tính toán như sau:

Theo thông số kỹ thuật đã cho của ống kính và chiều cao hình học của vị trí đặt camera chúng ta có kích thước và khoảng cách từ camera đến đối tượng chiếu trên mặt phẳng xOy: Đây là khoảng cách mà bộ xử lý điều khiển xe nâng hạ tự động cần biết để điều khiển khi tiếp cận đến giá đỡ

Các góc θ, λ và Φ có thể được tính từ các giá trị đã biết

 Trong trường hợp đã biết góc θ

Các khoảng cách đối tượng thực có thể được tính từ các các góc và các giá trị đã biết như sau:

Ứng dụng xử lý ảnh để tính khoảng cách

Mục đích của bài toán là sử dụng camera thu ảnh và dựa vào ảnh để đưa ra khoảng cách từ tâm điểm tiêu cự của camera gắn trên xe nâng đến điểm tâm hình học của mặt trước của đối tượng với hai mặt phẳng ảnh và mặt phẳng đối tượng song song với nhau và góc giữa camera gắn trên robot và đối tượng là vuông góc.

3.2.2 Quá trình thu ảnh và các yêu cầu của hệ thống

Quá trình đọc ảnh trong C# thường là ảnh 24 bit, tức là mỗi pixel 24 bits;ytes Mô tả như sau: Pixel đầu tiên của ảnh chiếm 3 byte đầu(0,1,2), pixel thứ 2 chiếm 3 byte tiếp(3,4,5), cứ như thế Để biết ảnh bm có kích thước bao nhiêu, C# cung cấp 2 thuộc tính: bm.Width: số pixel trên một hàng(độ rộng) và bm.Height: số hàng(độ cao) Như vậy, mỗi hàng của bức ảnh sẽ dùng hết bm.Width*3 bytes để lưu thông tin(do mỗi pixel 3 byte) Tuy nhiên khi lưu vào máy tính thì mỗi hàng của ảnh phải dùng nhiều hơn số byte đó để lưu, vì mục đích lưu cả thông tin của biên Để biết thức sự số byte này là bao nhiêu, đầu tiên phải chuyển bm sang một lớp đệm, lớp BitmapData Ta sử dụng kỹ thuật LockBits.

Rectangle rec= new Rectangle (0, 0, bm.Width, bm.Height);

BitmapData bmData= bm.LockBit(rec, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

Phương thức LockBits sẽ chuyển từ 1 ảnh, sang 1 vùng nhớ (bmData) Trên ảnh bm, ta chỉ có thể xem nó, chứ không thể chỉnh sử pixel Muốn sửa, phải chuyển nó sang lớp BitmapData, trên đó có các thứ cần thiết để can thiệp vào từng điểm ảnh.

Trong máy tính ảnh được biểu diễn như một dãy các byte nhớ đặt liên tiếp nhau Ta phải đọc file ảnh này vào một ma trận 2 chiều sao cho số hàng bằng chiều cao của ảnh, số cột bằng chiều rộng của ảnh.

Tiến hành đọc các pixel của ảnh và tiến hành xử lý trên ma trận ảnh nhị phân đã chuyển đổi.

Là phần tiền xử lý nhằm loại bỏ các nhiễu cơ bản trong quá trình thu ảnh.

Có rất nhiều loại nhiễu như: nhiễu cộng (additive noise), độc lập (independent), nhiễu nhân, nhiễu đốm (speckle noise), nhiễu muối tiêu (salt-pepper noise). Đối với nhiễu cộng ta dùng mạch xử lý tuyến tính để lọc nhiễu, còn đối với nhiễu nhân thì ta dùng mạch xử lý phi tuyến để lọc nhiễu. Đối với nhiễu đốm, nhiễu muối tiêu ta sử dụng thuật toán lọc trung vị Ý tưởng chính của thuật toán như sau: ta sử dụng một cửa sổ lọc (thường là ma trận 3×3) quét qua lần lượt từng điểm ảnh của ảnh đầu vào input Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng kích thước của ảnh gốc “lấp” vào ma trận lọc Sau đó sắp xếp các điểm ảnh trong cửa sổ này thành 1 dãy x1 ;x2;

…;nn (tăng dần hoặc giảm dần tùy ý) Và tìm trung vị cho dãy nếu n lẻ thì x [ n 2 +1 ] nếu n chẵn thì x [ n 2 ] hoặc x n 1 + 1 Cuối cùng ta gán giá trị cho các điểm ảnh theo:

I(p)= { Med I ( ( p p ) ) | Med I ( p)−Med ( p) n ếu ng ư ợc lại ( p) | ≤ θ

3.2.2.3 Phân ngưỡng Đây là quá trình phân vùng ảnh dựa theo ngưỡng biên độ Đặc tính đơn giản nhất và có thể hữu ích nhất của ảnh đó là biên độ của các tính chất vật lý của ảnh như: độ phản xạ, độ truyền sang, màu sắc hoặc đáp ứng đa phổ Như vậy, có thể dung biên độ để phân vùng khi mà biên độ đủ lớn đặc trưng cho ảnh Thí dụ, biên độ trong bộ cảm biến ảnh hồng ngoại có thể phản ánh vùng nhiệt độ thấp hay vùng nhiệt độ cao hơn Kỹ thuật phân ngưỡng theo biên độ rất có ích đối với ảnh nhị phân như văn bản in, đồ họa, ảnh màu…

Trước hết cần đưa về ảnh nhị phân một cách đơn giản bằng một giá trị ngưỡng các điểm ảnh ở trên một ngưỡng T sẽ là đối tượng còn dưới ngưỡng T sẽ là những điểm nền ta có một hàm biến đổi tổng quát:

Hàm này được hiện thực hóa bằng một bảng dò tìm(LUT- Look Up Table) trên một ảnh xám B(x,y) được biến đổi thành một ảnh nhị phân Ar(x,y), hay còn gọi là một quá trình nhị phân hóa Với phương pháp ngưỡng trên đây phân loại điểm ảnh dựa trên đặc tính chất “giá trị xám” của các điểm đối tượng và các điểm nền. Đặc điểm của vùng lân cận điểm ảnh không được quan tâm đến Khi quyết định xem một điểm ảnh nào đấy có thuộc về đối tượng hay không phương pháp này chỉ hướng theo giá trị xám của một điểm ảnh Một kết quả như ý đòi hỏi có một ngưỡng tối ưu được xác định, ngưỡng này có thể dễ dàng tìm được ở nhiều ứng dụng. Để dễ dàng xử lý trên ảnh của giá đỡ hàng (hàng) ta tiến hành phân ngưỡng ảnh ban đầu thành gồm 2 màu đen và trắng với ngưỡng T = 128 Quá trình tạo ảnh đen trắng sẽ giảm bớt nhiễu trên ảnh Quá trình chuyển anh ban đầu về anh đen trắng (quá trình phân ngưỡng) được thực hiện như sau:

 Chuyển ảnh gốc về ảnh xám.

 Biến đổi ảnh xám về ảnh nhị phân for (y = 0; y < bm.Height - 1; y++)

{ c = bm.GetPixel(x, y); if (c.R < band) bitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)); else bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)); }

Qua các bước tiền xử lý (lọc nhiễu) và phân ngưỡng ta thu được ảnh gồm

2 màu đen và trắng Ta lấy giá trị 0 và 1 của ảnh đen trắng lưu vào ma trận 2 chiều với số hàng là chiều cao của ảnh số cột là chiều rộng của ảnh Ta tiến hành

Hình 13:Ảnh gốc và ảnh sau khi thực hiện phân ngưỡng

Giả thiết mô hìnhxử lý được cho như sau:

Hình 14: Mô hình chương trình xử lý

Mô hình bao gồm camera được gắn trên robot, giá đỡ hàng, hàng, hệ thống đèn chiếu sáng, máy tính điều khiển robot…Phải đảm bảo yêu cầu :

- Hệ thống đèn chiếu sáng phải đảm bảo độ sáng để không làm nhòe ảnh thu được.

2 Phân tích và biến đổi ảnh

4 Gửi thông tin đến PC điều khiển robot

- Camera đặt chính diện với giá đỡ hàng (hàng) đảm bảo khung nhìn của camera bao quát toàn bộ giá đỡ (hàng) trên nền trắng Và khi đó quá trình thu ảnh được thực hiện liên tục

Dựa vào ảnh ta đưa ra các thông số về khoảng cách Thông số về khoảng cách được đưa ra dựa vào ảnh nên chất lượng ảnh sẽ quyết định đến sai số về khoảng cách tính toán so với khoảng cách tính toán trong thực tế do đó ảnh thu nhận được phải đảm bảo nét và ít nhiễu hay không có nhiễu, trong khi đó hệ thống chiếu sáng không phải thiết kế phức tạp.

Tính toán khoảng cách dựa trên ảnh thu được

Chương trình xử lý ảnh đưa ra được chiều cao của ảnh để dựa vào đó ta có thể áp dụng để tính khoảng cách dựa trên mô hình camera pihole.

Chương trình đưa ra thông số về khoảng cách là tương đối do có sai số trong quá trình thu ảnh (nhiễu).

Quá trình xử lý ảnh:

-Tính chiều cao ảnh: Để tính chiều cao của ảnh ta thực hiện qua 2 bước:

Bước 1: Tính điểm đen có vị trí nhỏ nhất tính theo chiều rộng ảnh. for (int y = 0; y < bm.Height-1; y++)

Bước 2: Tính điểm đen có vị trí lớn nhất theo chiều rộng ảnh for (int y = bm.Height-1 ; y >0; y )

Xây dựng chương trình

- Sử dụng bộ công cụ phát triển Microsoft Visual Studio 2008 trên nền tảng NET Compact Frame Work 3.5 Chương trình được xây dựng trên ngôn ngữ lập trình C#.

- Yêu cầu: Camera thu ảnh màu 24bit định dạng bmp

Thực nghiệm nhận biết đối tượng Mô hình được thực hiện với đối tượng là thùng cattong với kích thước 265 ×140 ×170 (dài × rộng × cao) Sử dụng camera loại Vimicro USB PC Camera với tiêu cự ống kính 50mm đặt vuông góc với đối tượng Ánh sáng đèn tuýp ở độ cao 2000m, khoảng cách 2000 mm công suất 36w.

Giao diện chương trình thực nghiệm và kết quả chương trình thực nghiệm :

Hình 15: Giao diện chương trình

Hình 16: Giao diện thực hiện chính

Camera: Khởi động camera để tiến hành thu ảnh

Dừng: Tạm dừng việc thu ảnh

Tiếp tục: Tiếp tục thực hiện quá trình thu ảnh Ảnh: Lấy ảnh mẫu

Nhị phân: Thực hiện lấy ảnh và biến đổi ảnh màu sang ảnh nhị phân và tính toán khoảng cách từ camera và kết quả tính toán được thu lại trong bảng sau:

So sánh kết quả tính toán và kích thước thực

Thứ tự Khoảng cách (mm)

Thực tế Tính toán Sai số(%)

Ngày đăng: 23/06/2023, 22:30

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w