Ý tưởng cơ bản của thuật toán Ramer-Douglas-Peucker là xét xem khoảng cách lớn nhất từ đường cong tới đoạn thẳng nối hai điểm đầu và điểm cuối đường cong, có lớn hơn ngưỡng θ khơng. Đầu tiên ta có điểm đầu và điểm cuối (tạm gọi là A, E) của sẽ được giữ lại, sau đó tìm điểm có khoảng cách lớn nhất đến đường thẳng AB (tạm gọi là điểm C và độ dài tạm gọi là h). Nếu khoảng h < θ thì điểm C sẽ bị loại bỏ, ngược lại nếu h ≥ θ thì điểm C sẽ được giữ lại và sẽ được chia thành 2 đoạn thẳng là AC và CB. Với từng đoạn AC và CB, thuật toán sẽ được lặp lại tương tự như với AB ban đầu. Ở đây hình dạng sản phẩm là đa giác tức là đường viền couar nó chính là đường khép kín từ đó có thể thấy điểm đầu và điểm cuối trùng nhau.
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
8 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân Hình 1. 7: Đường xấp xỉ
Giả xử điểm đầu và điểm cuối là A, tiếp tục so sánh đoạn AC với θ nếu > θ thì C là đỉnh ngược lại thì khơng phải. Tương tự ta sử dụng thuật tốn đó để tìm ra đỉnh B và đỉnh D.
1.4.3.2 Phương pháp tìm độ dài cạnh
Hình 1. 8: Độ dài cạnh
Giả sử ta có tọa độ của 2 đỉnh tìm được ở bước tìm đỉnh là A(𝑥𝐴, 𝑦𝐴) và B(𝑥𝐵, 𝑦𝐵), ta tìm cạnh với cơng thức:
𝐴𝐵 = √(𝑥𝐵− 𝑥𝐴)2+ (𝑦𝐵− 𝑦𝐴)2 Với AB là độ dài cạnh. Tương tự cho các cạnh còn lại
1.4.3.3 Phương pháp tìm tâm và bán kính
Bán kính là khoảnh cách từ tâm tới các điểm trên đường trịn.
Hình 1. 9: Bán kính bằng nhau
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
9 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
Tìm tâm O theo phương pháp tìm tâm đường trịn ngoại tiếp tam giác, đường tròn đi qua 3 đỉnh của tam giác ABC được gọi là đường tròn ngoại tiếp tam giác ABC khi đó tam giác ABC nội tiếp đường trịn tâm O. Tâm đường tròn ngoại tiếp tam giác là giao điểm của 3 đường trung trực, tam giác ở đây ta chọn bất kì 3 điểm trên dườn trịn giả sử chọn 3 đỉnh A(𝑥𝐴, 𝑦𝐴), B(𝑥𝐵, 𝑦𝐵), C(𝑥𝐶, 𝑦𝐶). Gọi tâm O(x,y), tìm tâm theo cơng thức sau:
𝐴𝑂 = √(𝑥 − 𝑥𝐴)2+ (𝑦 − 𝑦𝐴)2 𝐵𝑂 = √(𝑥 − 𝑥𝐵)2+ (𝑦−𝑦𝐵)2 𝐶𝑂 = √(𝑥 − 𝑥𝐶)2+ (𝑦 − 𝑦𝐶)2 Với AO, BO, CO chính là bán kính đường trịn, từ đó ta có:
{𝐴𝑂 = 𝐵𝑂
𝐵𝑂 = 𝐶𝑂 tâm O(x,y)
1.5 Phương án thiết kế
1.5.1 Yêu cầu thiết kế
Với mục tiêu là mơ hình phục vụ cho đồ án tốt nghiệp nên không thể đáp ứng được đầy đủ các yêu cầu trong thực tế cũng như các điều kiện phân loại phức tạp. Tuy nhiên, mơ hình thiết kế phải đảm bảo một số yêu cầu kỹ thuật chung như sau:
- Mơ hình cơ bản phải phù hợp với ngun lý phân loại trong thực tế; - Lắp ráp, đấu nối và vận hành điều khiển dễ dàng;
- Sử dụng các vật tư, thiết bị, linh kiện thông dụng để dễ dàng thay thế sữa chữa; - Đảm bảo tính thẩm mỹ và gọn gàng. Các cơ cấu truyền động, kết nối phải đảm
bảo cứng vững và tuổi thọ cao
1.5.2 Lựa chọn phương án thiết kế
Với những yêu cầu kỹ thuật đã phân tích ở trên, kết hợp với một số tài liệu tham khảo, nhóm quyết định sẽ sử dụng cơng nghệ phân loại sản phẩm bằng phương pháp xử lý ảnh thông qua Raspberry kết hợp với PLC S7 – 1200 cho đề tài “Ứng dụng xử lý ảnh để phân loại sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC”.
Nhóm chọn phương án thiết kế này vì nó dễ lắp đặt và thi cơng mơ hình chi phí khơng cao, cịn những phương án thiết kế khác thì chi phí lắp đặt cao, nhiều thiết bị vật liệu khó tìm kiếm.
Mơ hình của nhóm mơ phỏng lại một hệ thống như trong thực tế. Phương án thiết kế mơ hình gồm các phần chính như sau:
Phần cơ khí:
Sử dụng băng tải để vận chuyển sản phẩm
Kích thước ước tính của mơ hình : D/R/C: 120/60/40 cm
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
10 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
Sử dụng xilanh để đẩy sản phẩm vào ô chứa
Sử dụng cảm biến để đếm sản phẩm Phần điện:
Sử dụng nguồn điện 220, nguồn tổ ong 24V
Sử dụng Raspberry để xử lý ảnh thông qua thư viện OpenCV
Sử dụng PLC S7 1200 CPU 1214C DC/DC/DC để lập trình điều khiển quá trình hoạt động của mơ hình
Mơ hình ở đề tài được hướng thiết kế theo mơ hình phân loại sản phẩm thực tế với các chức năng được mơ phỏng tương tự gồm có:
- Bảng điều khiển trên tủ điện
Nút nhấn Start
Nút nhấn Stop
Nút nhấn E – Stop
4 nút điều khiển bằng tay ( Băng tải, Xilanh 1, Xilanh 2, Xilanh 3)
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
11 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
CHƯƠNG 2: GIỚI THIỆU VỀ RASPPBERRY VÀ NGƠN NGỮ LẬP TRÌNH PYTHON
2.1 Tổng quan về Raspberry
Raspberry Pi là cái máy tính giá 35USD kích cỡ như iPhone và chạy HĐH Linux. Với mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em. Được phát triển bởi Raspberry Pi Foundation – là tổ chức phi lợi nhuận với tiêu chí xây dựng hệ thống mà nhiều người có thể sử dụng được trong những cơng việc tùy biến khác nhau.
Nhiệm vụ ban đầu của dự án Raspberry Pi là tạo ra máy tính rẻ tiền có khả năng lập trình cho những sinh viên , nhưng Pi đã được sự quan tầm từ nhiều đối tượng khác nhau. Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lí SoC Broadcom BCM2835 ( là chip xử lí mobile mạnh mẽ có kích thước nhỏ hay được dùng trong điện thoại di động ) bao gồm CPU , GPU , bộ xử lí âm thanh /video , và các tính năng khác … tất cả được tích hợp bên trong chip có điện năng thấp này .
Raspberry Pi khơng thay thế hồn tồn hệ thống để bàn hoặc máy xách tay . Bạn không thể chạy Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không hỗ trợ mã x86/x64 , nhưng vẫn có thể chạy bằng Linux với các tiện ích như lướt web , môi trường Desktop và các nhiệm vụ khác . Tuy nhiên Raspberry Pi là một thiết bị đa năng đáng ngạc nhiên với nhiều phần cứng có giá thành rẻ nhưng rất hoàn hảo cho những hệ thống điện tử , những dự án DIY , thiết lập hệ thống tính tốn rẻ tiền cho những bài học trải nghiệm lập trình …
Model B bao gồm những phần cứng và những cổng giao diện:
- SoC 700MHz với 512MB RAM.
- 1 cổng HDMI cho đầu ra âm thanh / video số.
- 1 cổng video RCA cho đầu ra video Analog.
- Jack Headphone Stereo 3.5mm cho đầu ra âm thanh Analog.
- 2 cổng USB.
- 1 đầu đọc thẻ nhớ SD để tải hệ điều hành.
- 1 cổng Ethernet LAN.
- 1 giao diện GPIO (General Purpose Input/Output) .
Về cơ bản Raspberry Pi có khá nhiều OS linux chạy được nhưng vẫn có sự thiếu vắng của Ubuntu (do CPU ARMv6).
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
12 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
Điểm danh một số Distributions Linux (nhúng) chạy trên Raspberry Pi như Raspbian, Pidora, openSUSE, OpenWRT, OpenELEC,….
Hình 2. 1: Raspberry Pi
2.2 Giới thiệu ngơn ngữ lập trình Python
2.2.1 Giới thiệu ngơn ngữ Python
Python là một ngơn ngữ lập trình được sử dụng phổ biến ngày nay từ trong môi trường học đường cho tới các dự án lớn. Ngôn ngữ phát triển nhiều loại ứng dụng, phần mềm khác nhau như các chương trình chạy trên desktop, server, lập trình các ứng dụng web... Ngồi ra Python cũng là ngơn ngữ ưa thích trong xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning. Ban đầu, Python được phát triển để chạy trên nền Unix, nhưng sau này, nó đã chạy trên mọi hệ điều hành từ MS- DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix.
Python do Guido van Rossum tạo ra năm 1990. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý. Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ơng giữ vai trị chủ chốt trong việc quyết định hướng phát triển của Python.
2.2.2 Đặc điểm nổi bật của Python
Python là ngơn ngữ có hình thức đơn giản, cú pháp ngắn gọn, sử dụng một số lượng ít các từ khố, do đó Python là một ngơn ngữ dễ học đối với người mới bắt đầu tìm hiểu. Python là ngơn ngữ có mã lệnh (source code hay đơn giản là code) không mấy phức tạp. Cả trường hợp bạn chưa biết gì về Python bạn cũng có thể suy đốn được ý nghĩa của từng dòng lệnh trong source code.
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
13 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
Python có nhiều ứng dụng trên nhiều nền tảng, chương trình phần mềm viết bằng ngơn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhau bao gồm Windows, Mac OSX và Linux.
2.3 Giới thiệu thư viện OpenCV
2.3.1 Giới thiệu OpenCV
OpenCV là tên viết tắt của open source computer vision library – có thể được hiểu là một thư viện nguồn mở cho máy tính. Cụ thể hơn OpenCV là kho lưu trữ các mã nguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gian thực.
OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động real time. Nó cịn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thị giác máy tính hay các learning machine khác.
Thư viện OpenCV được phát hành với giấy phép BDS. Do đó các dịch vụ nó cung cấp là hồn tồn miễn phí và được hạn chế tối đa các rào cản thông thường. Cụ thể, bạn được phép sử dụng phần mềm này cho cả hoạt động thương mại lẫn phi thương mại. OpenCV sở hữu giao diện thiên thiện với mọi loại ngơn ngữ lập trình, ví dụ như C++, C, Python hay Java… Ngồi ra, nó cũng dễ dàng tương thích với các hệ điều hành khác nhau, bao gồm từ Windows, Linux, Mac OS, iOS cho đến cả Android.
Kể từ lần đầu xuất hiện từ năm 1999, giờ đây OpenCV đã sở hữu đội ngũ người dùng hùng hậu, con số ước tính có thể lên tới 47.000 người. Tất cả là nhờ những ưu điểm vượt trội của OpenCV.
Thư viện Ooencv được ứng dụng vào rất nhiều trường hợp khác nhau. Như các phần mềm định vị, bản đồ nói chung, nhà cung cấp dữ liệu hình ảnh cho các app về Map, khởi tạo ra những hình ảnh 3 chiều phức tạp, tất cả những ứng dụng công nghệ như robot, xe tự lái, bảng cảm ứng thông minh…
Thư viện sử dụng nhiều ngơn ngữ lập trình phổ biến như: ngơn ngữ lập trình C++/C# ngơn ngữ lập trình Java và Python.
Và ở đây, ta sử dụng ngơn ngữ lập trình Python cho đề tài. Với phần mềm không quá phức tạp mà thiên hướng gọn nhẹ thì ngơn ngữ Python sẽ là sự lựa chọn chính xác nhất. Nhờ các câu lệnh ngắn gọn cùng thuộc tính đơn giản, Python giúp cho quá trình phát triển phần mềm OpenCV diễn ra dễ dàng hơn. Sử dụng ngôn ngữ Python sẽ là biện pháp tốt nhất cho những người khơng mạnh mảng lập trình. Điểm trừ của Python là vì có cấu tạo q đơn giản nên một số tính năng cần sự phức tạp sẽ bị hạn chế.
2.3.2 Đặc điểm OpenCV
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
14 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
OpenCV Là một thư viện mở nên sử dụng các thuật tốn một cách miễn phí, cùng với việc chúng ta cũng có thể đóng góp thêm các thuật tốn giúp Thư viện thêm ngày càng phát triển.
Các tính năng của thư viện OpenCV:
- Đối với hình ảnh, chúng ta có thể đọc và lưu hay ghi chúng. - Về Video cũng tương tự như hình ảnh cũng có đọc và ghi. - Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh. - Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh.
- Phát hiện các đối tượng xác định được xác định trước như khn mặt, mắt, xe trong video hoặc hình ảnh.
- Phân tích video,... ước lượng chuyển động của nó, trừ nền ra và theo dõi các đối tượng trong video.
2.4 Tổng quan về xử lý ảnh
2.4.1 Giới thiệu xử lí ảnh
Xử lý ảnh khơng cịn là đề tài q mới, nó được áp dụng từ trong các hoạt động thường ngày cho đến việc nâng cao sản xuất. Nó khơng những giúp ích cho cá nhân hay gia đình, mà cịn ứng dụng cả trong Chính trị, Y tế, Giáo dục,… Xử lý tín hiệu là một mơn học trong kỹ thuật điện tử, viễn thơng và trong tốn học. Liên quan đến nghiên cứu và xử lý tín hiệu kỹ thuật số và analog, giải quyết các vấn đề về lưu trữ, các thành phần bộ lọc, các hoạt động khác trên tín hiệu. Các tín hiệu này bao gồm truyền dẫn tín hiệu, âm thanh hoặc giọng nói, hình ảnh, và các tín hiệu khác,…
Trong số các phương pháp xử lý tín hiệu kể trên, lĩnh vực giải quyết với các loại tín hiệu mà đầu vào là một hình ảnh và đầu ra cũng là một hình ảnh, sản phẩm đầu ra được thực hiện trong một q trình xử lý, đó chính là q trình xử lý ảnh. Nó có thể được chia thành xử lý hình ảnh tương tự và xử lý hình ảnh kỹ thuật số. Để có 1 bức ảnh số ta có qúa trình thực hiện như sau: Chụp ảnh từ một máy ảnh là một quá trình vật lý. Ánh sáng mặt trời sử dụng như một nguồn năng lượng. Một dãy cảm biến được sử dụng cho việc thu lại của hình ảnh. Vì vậy, khi ánh sáng mặt trời rơi trên người đối tượng, sau đó số lượng ánh sáng phản xạ của đối tượng được cảm nhận từ các cảm biến, và một tín hiệu điện áp liên tục được tạo ra bởi số lượng dữ liệu cảm biến đó. Để tạo ra một hình ảnh kỹ thuật số, chúng ta cần phải chuyển đổi dữ liệu này thành một dạng kỹ thuật số. Điều này liên quan đến việc lấy mẫu và lượng tử hóa. Kết quả của việc lấy mẫu và lượng tử hóa sau một q trình xử lý là một hình ảnh kỹ thuật số.
2.4.2 Những vấn đề trong xử lý ảnh
Có những vấn đề cơ bản như sau :
2.4.2.1 Điểm ảnh
Tên đề tài: Ứng dụng xử lý ảnh để phân loai sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC
15 SVTH: Bùi Anh Dũng
Phạm Lê Bảo Hoàng
Người hướng dẫn: ThS. Phan Thị Thanh Vân
Là đơn vị cơ bản nhất để tạo nên một bước ảnh kỹ thuật số. Địa chỉ của điểm ảnh