Tổng hợp ví dụ mẫu file cpp xử lý ảnh

Hình 5.1 : Các bước xử lý ảnh

Thu nhận ảnh: Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình XLA. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor, máy scanner,v.v… và sau đó các tín hiệu này sẽ được số hóa. Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các thông số quan trọng ở bước này là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của thiết bị

Tiền xử lý: Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử bóng, khử độ lệch,v.v… với mục đích làm cho chất lượng ảnh trở lên tốt hơn nữa, chuẩn bị cho các bước xử lý phức tạp hơn về sau trong quá trình XLA. Quá trình này thường được thực hiện bởi các bộ lọc.

biên hay các vùng liên thông. Tiêu chuẩn để xác định các vùng liên thông có thể là cùng màu, cùng mức xám v.v… Mục đích của phân đoạn ảnh là để có một miêu tả tổng hợp về nhiều phần tử khác nhau cấu tạo lên ảnh thô.

Tách các đặc tính: Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh thô, trong đó hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh thuộc về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyển đổi dữ liệu thô này thành một dạng thích hợp hơn cho việc xử lý trong máy tính là rất cần thiết. Để chuyển đổi chúng, câu hỏi đầu tiên cần phải trả lời là nên biểu diễn một vùng ảnh dƣới dạng biên hay dƣới dạng một vùng hoàn chỉnh gồm tất cả những điểm ảnh thuộc về nó. Biểu diễn dạng biên cho một vùng phù hợp với những ứng dụng chỉ quan tâm chủ yếu đến các đặc trong hình dạng bên ngoài của đối tượng. Chúng ta còn phải đưa ra một phương pháp mô tả dữ liệu đã được chuyển đổi đó sao cho những tính chất cần quan tâm đến sẽ được làm nổi bật lên, thuận tiện cho việc xử lý chúng.

Nhận dạng và giải thích: Đây là bước cuối cùng trong quá trình XLA. Nhận dạng ảnh có thể đƣợc nhìn nhận một cách đơn giản là việc gán nhãn cho các đối tƣợng trong ảnh. Ví dụ đối với nhận dạng chữ viết, các đối tƣợng trong ảnh cần nhận dạng là các mẫu chữ, ta cần tách riêng các mẫu chữ đó ra và tìm cách gán đúng các ký tự của bảng chữ cái tương ứng cho các mẫu chữ thu được trong ảnh. Giải thích là công đoạn gán nghĩa cho một tập các đối tượng đã được nhận biết.

Chúng ta cũng có thể thấy rằng, không phải bất kỳ một ứng dụng XLA nào cũng bắt buộc phải tuân theo tất cả các bước xử lý đã nêu ở trên, ví dụ như các ứng dụng chỉnh sửa ảnh nghệ thuật chỉ dừng lại ở bước tiền xử lý. Một cách tổng quát thì những chức năng xử lý bao gồm cả nhận dạng và giải thích thường chỉ có mặt trong hệ thống phân tích ảnh tự động hoặc bán tự động, được dùng để rút trích ra những thông tin quan trọng từ ảnh, ví dụ như các ứng dụng nhận dạng ký tự quang học, nhận dạng chữ viết tay v.v…

5.2.2 Những vấn đề cơ bản trong xử lý ảnh

a) Nắn chỉnh biến dạng

Ảnh thu nhận thường bị biến dạng do các thiết bị quang học và điện tử

Để khắc phục người ta sử dụng các phép chiếu, các phép chiếu thường b) Khử nhiễu

Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh

- Nhiễu hệ thống: là nhiễu có quy luật có thể khử bằng các phép biến đổi

- Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân, ta khắc phục bằng các phép lọc

c) Chỉnh mức xám

Nhằm khắc phục tính không đồng đều của hệ thống gây ra. Thông thường có 2 cách tiếp cận.

- Giảm số mức xám: Thực hiện bằng cách nhóm các mức xám gắn nhau thành 1 bó. Trường hợp chỉ có 2 mức xám thì chính là chuyển về ảnh đen trắng. Ứng dụng : In ảnh màu ra máy in đen trắng

- Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy. Kỹ thuật này nhằm tăng độ mịn cho ảnh d) Phân tích ảnh

Là khâu quan trọng trong quá trình xử lý ảnh để tiến tới hiểu ảnh. Trong phân tích ảnh việc trích chọn đặc điểm là một bước quan trọng. Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh. Có thể nêu ra một sô đặc điểm của ảnh sau đây:

- Đặc điếm không gian: Phân bô mức xám, phân bô xác suất, biên độ, điểm uốn V.V..

- Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc thực hiện lọc vùng (zonal filtering). Các bộ vùng được gọi là “mặt nạ 11 đặc điểm ” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn V.V..)

- Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng và do vậy rất hữu ích trong việc trích trọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng. Các đặc điểm này có thể được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) V.V..

e) Nhận dạng

Nhận dạng tự động (automatic recognition), mô tả đồi tượng, phân loại và phân nhóm các mẫu là những vấn đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau. Tuy nhiên, một câu hỏi đặt ra là: mẫu (pattern) là gì? Watanabe, một trong những người đi đắu trong lĩnh vực này đà định nghĩa: “Ngược lại với hỗn loạn (chaos), mẫu là một thực thể (entity),

gọi nào đó”. Ví dụ mẫu có thể là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc một ký đồ tín hiệu tiếng nói. Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể:

Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân biệt (discriminant analyis), trong đó mẫu đắu vào được định danh như một thành phần của một lớp đã xác định.

Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong đó các mâu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh.

Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:

- Thu nhận dữ liệu và tiền xử lý. - Biểu diễn dữ liệu.

- Nhận dạng, ra quyết định.

- Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là: - Đối sánh mẫu dựa trên các đặc trưng được trích chọn. - Phân loại thống kê.

- Đối sánh cấu trúc.

- Phân loại dựa trên mạng nơ-ron nhân tạo.

Trong các ứng dựng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ đế phân loại “tối ưu” do vậy cẩn sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau. Do vậy, các phương thức phân loại tổ hỢp hay được sử dụng khi nhận dạng và nay đã có những kết quả có triển vọng dựa trên thiết kê các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp.

5.3 Xử lý ảnh sử dụng thư viện EmguCV 5.3.1 Giới thiệu hệ thống phân loại sản phẩm 5.3.1 Giới thiệu hệ thống phân loại sản phẩm

Hình 5.3 : Các bước phân loại sản phẩm

Camera được sử dụng trong hệ thống nhằm mục đính chụp và gửi ảnh về cho máy tính xử lý ảnh. Sau khi xử lý ảnh , máy tính sẽ tính toán các dữ liệu cần thiết và gửi nó xuống cho bộ điều khiển trung tâm. Dựa trên các thông tin được gửi xuống, bộ điều khiển trung tâm sẽ ra lệnh cho cơ cấu chấp hành thực thi việc phân loại sản phẩm

Hình 5.4 : Các mẫu sản phẩm cần phân loại

Sản phẩm cần phân loại trong đồ án này là các mẩu gỗ hình chữ nhật có cùng màu sắc, cùng chiều rộng, chiều cao, có kích thước chiều dài khác nhau. Vì vậy phương pháp phân loại sản phẩm bọn em sử dụng ở đây là phân loại theo hình dáng và kích thước chiều dài vật.

5.3.2 Phân tích hệ thống

Vật cần phân loại được vận chuyển nhờ băng tải, khi qua cảm biến phát hiện có vật thì băng tải sẽ dừng và tay máy Kestrel sẽ di chuyển đến vị trí chụp ảnh để chụp và đưa ảnh về máy tính để xử lý. Khi máy tính nhận ảnh từ camera sẽ xử lý ảnh nhờ phần mềm viết trên máy tính để xác định được kích thước của vật là bao nhiêu, có thỏa mãn kích thước cần phân loại. Nếu kích thước của vật thảo mãn thì phần mềm sẽ xử lý tiếp và gửi tọa độ tâm và góc lệch của vật tới PLC để điều khiển tay máy Kestrel di chuyển đến vị trí gắp vật. Ngược lại nếu kích thước của vật không thảo mãn thì máy tính sẽ gửi tín hiệu cho băng tải chạy tiêp để bỏ qua vật chờ vật tiếp theo đến để xử lý. Xong qua trình xử lý thì tọa độ tâm, góc lệch cũng như ảnh đã qua xử lý sẽ được hiển thị lên giao diện windows form.

5.3.3 OpenCV và EmguCV

a) OpenCV

OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (Computer Vision), xử lý ảnh (Image Processing) và máy học (Machine Learnning). Nó chứa hàng ngàn thuật toán tối ưu hoá , trong đó cung cấp một bộ công cụ phổ biến cho các ứng dụng về thị giác máy tính. OpenCV đang được sử dụng trong rất nhiều ứng dụng , từ khâu hình ảnh Street View của Google tới việc chạy các chương trình nghệ thuật tương tác , nhận diện khuôn mặt , hay Robot , xe hơi tự lái …….

Hình 5.5 : Thư viện OpenCV với ứng dụng nhận dạng khuôn mặt

OpenCV là một API được viết bằng C++ bao gồm các module chứa hàng loạt các chức năng , từ chuyển đổi màu sắc hình ảnh ở mức độ thấp tới các công cụ máy học cấp cao

b) EmguCV

EmguCV là một cross flatform .NET, một thư viện xử lý hình ảnh mạnh dành riêng cho ngôn ngữ C#. Cho phép gọi được chức năng của OpenCV là từ .NET. Tương thích ngôn ngữ như: C#, VB, VC ++, Iron Python... Wrapper có thể được biên dịch bởi Visual Studio, Xamarin Studio và Unity. Nó có thể chạy trên Windows, Linux, Mac OS X, iOS, Android và Windows Phone

Hình 5.6 : EmguCV : 1 wrapper của OpenCV

Trong đồ án này, EmguCV được nhóm chúng em viết dưới dạng file dll, sau đó đóng gói và sử dụng trong phần mềm giám sát giao diện

5.3.4 Xác định khoảng cách trong không gian 3D

Để xác định được khoảng các thức tế trong không gian 3D thông qua xử lý ảnh, người ta thường sử dụng phương pháp camera calibration. Các phương pháp calibration kinh điển dựa trên mô hình calibration đặc biệt, tức là ta biết được kích thước và vị trí đối tượng trong một hệ tọa độ nhất định. Các đặc trưng khác (chẳng hạn như góc, đường...) được tách từ ảnh của mô hình hiệu chỉnh camera.

Tuy nhiên các phương pháp này phức tạp và thường dùng cho trường hợp camera phải di chuyển nhiều vị trí để chụp và xử lý ảnh. Còn ở đồ án này camera chỉ cố định tại 1 điểm duy nhất chụp ảnh, và hơn nữa mắt của camera được đặt song song so với mặt phẳng chứa vật cho nên chúng em chỉ dùng các phương pháp hình học đơn giản để lấy được tỷ lệ của kích thước thật của vật so với kích thước trên ảnh. Nhóm đã đưa vào 1 mặt phẳng có dạng hệ tọa độ xy như hình vẽ. Mặt phẳng này được được đặt ngay trên băng tải để tiện cho việc tính toán.

Hình 5.7 : Mặt phẳng tọa độ dùng xác định tỷ lệ thực vả ảnh

Trong mặt phẳng này, kích thước của mỗi ô vuông có đơn vị là 2cm. Thông qua camera chúng em căn chỉnh sao tọa độ gốc của ảnh trùng với tọa độ gốc của hệ tọa độ Oxy mà nhóm đánh dấu trên mặt phẳng này. Dựa trên ảnh chụp lại mặt phẳng này, ta đo được 1 ô vuông này có kích thước khoảng 294 pixels. Để tăng tính chính xác của phép đo này ta đo làm nhiều lần để tính ra kích thước trung bình và sai số tuyệt đối của nó

Bảng 5.1 : Liệt kê kết quả đo kích thước ô vuông đơn vị

Lần đo Kích thước Sai số tuyệt đối mỗi lần đo

2 293 0.6

3 291 1.4

4 292 0.4

5 292 0.4

TB 292.4 0.64

Để tìm ra tọa độ của tay máy trên tọa độ ảnh, ta tiến hành đo tọa độ của tâm tay máy so với gốc tọa tọa độ trên mặt phẳng thực thì ta có bảng sau

Bảng 5.2 : Liệt kê kết quả đo tọa độ tay máy

Lần đo Theo phương

X(cm)

Sai số tuyệt đối mỗi lần đo 1 17.9 0.02 2 18 0.08 3 17.8 0.12 4 17.9 0.02 5 18 0.08 TB 17.92 0.064

Lần đo Theo phương

Y(cm)

Sai số tuyệt đối mỗi lần đo 1 8.2 0.02 2 8.1 0.08 3 8.3 0.12 4 8.1 0.08 5 8.2 0.02 TB 8.18 0.064 Hình 5.8 : Vị trí giữa camera và vật

Tuy nhiên khi chụp ảnh thì điểm xác định tâm vật cao so với mặt phẳng tọa độ thực tế 1 đoạn h= 5cm. Nếu chỉ dựa trên tọa độ này sẽ dẫn đến tọa độ bị sai, làm cho tay máy đi đến điểm X để gắp vật thay vì đến điểm V. Vì vậy ta cần chia tọa độ xy cho tỷ lệ (H-h)/H để tay máy có thể đến đúng điểm V. Với h =5cm là chiều cao của vật và H = 50 cm là khoảng cách từ mắt camera đến mặt phẳng. Như vậy ta cần chia cho tỉ lệ 9/10

Như vậy ta có công thức để suy ra tọa độ tâm của vật sau khi xử lý ảnh như sau:

Tọa độ trục X : 17.92+(x*292.4/2)*10/9 (cm) Tọa độ trục Y : 8.18+(y*292.4/2)*10/9 (cm)

Về phần xác định chiều dài của vật qua xử lý ảnh, ta cũng tiến hành đo chiều dài thực tế và chiều dài trên ảnh của vật và tính được tỉ lệ. Đối với mỗi phép đo ta lấy giá trị trung bình cộng 5 lần và sau đó chia 2 giá trị trung bình cho nhau để lấy tỉ lệ giữa kích thước ảnh và kích thước thực tế.

5.3.5 Thuật toán xử lý ảnh

Hình 5.9 : Lưu đồ xử lý ảnh của hệ thống

- Cắt bỏ phần thừa,lọc và nhị phân ảnh : Phần mềm xử lý ảnh trên máy tính sẽ cắt bỏ phần thừa nằm ngoài băng tải đồng thời lọc các thành phần nhiễu của ảnh, sau đó đưa ảnh về mức xám và nhị phân thành ảnh đen trắng

- Tìm các đường bao trong ảnh nhị phân : Dựa trên danh giới giữa 2 màu đen và trắng, sẽ xác định được các đường viền trong ảnh bao gồm cả vật, ta giữ lại các đường bao khép kín. Sau đó dùng hàm có sẵn để xác định

diện tích bên trong các đường bao đó. Cuối cùng ta lấy đường bao có diện tích gần với diện tích thật của vật

- Tính chiều dài của hình chữ nhật : Dựa trên đường bao đó ta lại dùng hàm xác định được 4 đỉnh của vật rồi dựa vào 4 đỉnh đó để tính chiều dài hoặc chiều rộng của vật.

- Chiều dài thỏa mãn điều kiện phân loại: Kiểm tra xem vật có thỏa mãn kích thước cần tìm không

- Tìm tọa độ tâm và góc lệch của hình chữ nhật : dựa trên 4 đỉnh của hình chữ nhật ta tìm được tọa độ cũng như góc lệch của nó.

- Trả về thông tin phân loại: trả về thông tin của vật theo tọa độ tâm và góc lệch hoặc thông tin báo không vật cho các hàm khác để tiếp tục tính toán hoặc ra lệnh.

Sau khi xử lý ảnh, nếu không phát hiện thấy vật hệ thống sẽ ra lệnh cho băng tải tiếp tục chạy. Trong trường hợp phát hiện vật, trả về thông tin của vật