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 q 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ư khuôn 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 toá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 được xem như là một tọa độ (x,y) nào đó. Một bức ảnh kỹ thuật số, có thể được tạo ra bằng cách chụp hoặc bằng một phương pháp đồ họa nào khác, được tạo nên từ hàng ngàn hoặc hàng triệu pixel riêng lẻ. Bức ảnh càng chứa nhiều pixel thì càng chi tiết. Một triệu pixel thì tương đương với 1 megapixel.
2.4.2.2 Biến đổi ảnh
Nói một cách đơn giản thì biến đổi ảnh thành dạng ảnh khác: ảnh màu sang ảnh xám, ảnh xám sang nhị phân, RGB -> HSV,…
2.4.2.3 Lọc màu ảnh
Có 2 cách để lọc màu ảnh theo dãy màu HSV và dãy màu BGR.
- Dãy màu HSV :
Thông thường ảnh được biểu diễn trong không gian màu BGR, nhưng không gian màu HSV lại dễ dàng xử lý hơn. Dãy màu của kênh Hue là “bảy sắc cầu vồng” từ đỏ đến tím rồi lại về đỏ, nên có thể xác định được ngay nó là màu gì. Do đó trong hầu hết bài tốn đều phải tiến hành chuyển ảnh ban đầu sang không gian màu HSV trước khi xử lý những bước tiếp theo.
Hình 2. 2: Dãy màu HSV
- Dãy màu RGB :
RGB là không gian màu phổ biến dùng trong máy tính, máy ảnh, điện thoại và nhiều thiết bị kĩ thuật số khác nhau. Không gian màu này khá gần với cách mắt người tổng hợp màu sắc. Nguyên lý cơ bản là sử dụng 3 màu sắc cơ bản R (red - đỏ), G (green - xanh lục) và B (blue - xanh lam) để biểu diễn tất cả các màu sắc.
Thông thường, trong mơ hình 24 bit mỗi kênh màu sẽ sử dụng 8bit để biểu diễn, tức là giá trị R, G, B nằm trong khoảng 0 - 255. Bộ 3 số này biểu diễn cho từng điểm ảnh, mỗi số biểu diễn cho cường độ của một màu. Với mơ hình màu 24bit thì số màu tối đa có thể tạo ra là 255 x 255 x 255 = 16581375 màu.
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
16 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
Bên cạnh hệ màu RGB thì ta sẽ nghe đến RGBA, thực ra đây là một hệ màu được lấy căn bản từ hệ màu RGB tuy nhiên có thêm một kênh alpha (α). Kênh α được sử dụng như là kênh mờ, nếu một pixel có giá trị 0% trong kênh α của nó thì nó hồn tồn trong suốt, trong khi giá trị 100% sẽ khiến cho điểm đó bị mờ đục. Điều này được ứng dung rất nhiều trong việc ghép các ảnh lại và mang một độ chân thực nhất định.
Hình 2. 3: Dãy màu RGB
2.4.2.4 Lọc nhiễu
Ảnh thu nhận được thường sẽ bị nhiễu nên cần phải loại bỏ nhiễu. Các tốn tử khơng gian dùng trong kỹ thuật tăng cường ảnh được phân nhóm theo cơng dụng: làm trơn nhiễu, nổi biên. Để làm trơn nhiễu hay tách nhiễu, người ta sử dụng các bộ lọc tuyến tính (lọc trung bình, thơng thấp) hoặc lọc phi tuyến (trung vị, giả trung vị, lọc đồng hình). Từ bản chất của nhiễu (thường tương ứng với tần số cao) và từ cơ sở lý thuyết lọc là: bộ lọc chỉ cho tín hiệu có tần số nào đó thông qua, để lọc nhiễu người ta thường dùng lọc thông thấp (theo quan điểm tần số không gian) hay lấy tổ hợp tuyến tính để san bằng (lọc trung bình). Để làm nổi cạnh (ứng với tần số cao), người ta dùng các bộ lọc thông cao, lọc Laplace. Phương pháp lọc nhiễu. Chia làm 2 loại: lọc tuyến tính, lọc phi tuyến.
Làm trơn nhiễu bằng lọc tuyến tính: Khi chụp ảnh có thể xuất hiện nhiều loại nhiễu vào qúa trình xử lý ảnh, nên ta cần phải lọc nhiễu. Gồm các phương pháp cơ bản lọc trung bình, lọc thơng thấp,… Ví dụ lọc trung bình: Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận.
Làm trơn nhiễu bằng lọc phi tuyến: Các bộ lọc phi tuyến cũng hay được dùng
trong kỹ thuật tăng cường ảnh. Một số phương pháp lọc cơ bản bộ lọc trung vị, lọc ngoài,… Với lọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểm ảnh còn lọc giả trung vị sẽ dùng trung bình cộng của hai giá trị “trung vị” (trung bình cộng của max và min).
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
17 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ọc trung vị: Kỹ thuật này đòi hỏi giá trị các điểm ảnh trong cửa sổ phải xếp theo thứ tự tăng hay giảm dần so với giá trị trung vị. Kích thước cửa số thường được chọn sao cho số điểm ảnh trong cửa sổ là lẻ.
Lọc ngồi: Giả thiết có ngưỡng nào đó cho các mức nhiễu (có thể dựa vào lược đồ xám). Tiến hành so sánh giá trị độ xám của một điểm ảnh với trung bình số học 8 lân cận của nó. Nếu sai lệch lớn hơn ngưỡng, điểm ảnh này được coi như nhiễu. Trong trường hợp đó, thay thế giá trị của điểm ảnh bằng giá trị trung bình 8 lân cận vừa tính được.