tri tue nhan tao

Thị giác máy tính liên quan đến việc mô hình hóa và tái tạo tầm nhìn của con người bằng phần mềm và phần cứng máy tính. Trong chương này, bạn sẽ tìm hiểu chi tiết về điều này.

Tm nhìn máy tính

Thị giác máy tính là một môn học nghiên cứu cách tái tạo, làm gián đoạn và hiểu cảnh 3d từ hình ảnh 2d của nó, về các thuộc tính của cấu trúc có trong cảnh.

H thng phân cp th giác máy tính

Thị giác máy tính được chia thành ba loại cơ bản như sau –

  • Tầm nhìn cấp thấp – Nó bao gồm hình ảnh quy trình để trích xuất tính năng.
  • Tầm nhìn cấp độ trung cấp – Nó bao gồm nhận dạng đối tượng và diễn giải cảnh 3D
  • Tầm nhìn cấp cao – Nó bao gồm mô tả khái niệm về một cảnh như hoạt động, ý định và hành vi.

Th giác máy tính Vs X lý hình nh

Xử lý ảnh nghiên cứu chuyển đổi ảnh thành ảnh. Đầu vào và đầu ra của xử lý ảnh đều là ảnh.

Thị giác máy tính là việc xây dựng các mô tả rõ ràng, có ý nghĩa về các đối tượng vật lý từ hình ảnh của chúng. Đầu ra của thị giác máy tính là một mô tả hoặc giải thích các cấu trúc trong cảnh 3D.

Các ng dng

Thị giác máy tính tìm các ứng dụng trong các trường sau –

người máy

  • Bản địa hóa-xác định vị trí robot tự động
  • dẫn đường
  • tránh chướng ngại vật
  • Lắp ráp (chốt lỗ, hàn, sơn)
  • Thao tác (ví dụ: bộ điều khiển robot PUMA)
  • Human Robot Interaction (HRI): Robot thông minh để tương tác và phục vụ con người

Thuốc

  • Phân loại và phát hiện (ví dụ: phân loại tổn thương hoặc tế bào và phát hiện khối u)
  • phân đoạn 2D/3D
  • Tái tạo nội tạng người 3D (MRI hoặc siêu âm)
  • Phẫu thuật robot điều khiển bằng thị giác

Bảo vệ

  • Sinh trắc học (mống mắt, vân tay, nhận dạng khuôn mặt)
  • Giám sát-phát hiện một số hoạt động hoặc hành vi đáng ngờ

Vận tải

  • xe tự hành
  • An toàn, ví dụ, giám sát cảnh giác lái xe

Ứng dụng tự động hóa công nghiệp

  • Giám định công nghiệp (phát hiện khuyết tật)
  • Cuộc họp
  • Đọc mã vạch và nhãn gói
  • sắp xếp đối tượng
  • Hiểu tài liệu (ví dụ: OCR)

Cài đặt các gói hu ích

Đối với Thị giác máy tính với Python, bạn có thể sử dụng thư viện phổ biến có tên OpenCV (Open Source Computer Vision). Nó là một thư viện các chức năng lập trình chủ yếu nhằm vào thị giác máy tính thời gian thực. Nó được viết bằng C++ và giao diện chính của nó là C++. Bạn có thể cài đặt gói này với sự trợ giúp của lệnh sau – pip install opencv_python-X.X-cp36-cp36m-winX.whl

Ở đây X đại diện cho phiên bản Python được cài đặt trên máy của bạn cũng như win32 hoặc 64 bit mà bạn đang có.

Nếu bạn đang sử dụng môi trường anaconda , hãy sử dụng lệnh sau để cài đặt OpenCV – conda install -c conda-forge opencv

Đọc, Viết và Hin th mt Hình nh

Hầu hết các ứng dụng CV đều cần lấy hình ảnh làm đầu vào và tạo ra hình ảnh làm đầu ra. Trong phần này, bạn sẽ học cách đọc và ghi tệp hình ảnh với sự trợ giúp của các chức năng do OpenCV cung cấp.

Các hàm OpenCV để đọc, hin th, ghi tp hình nh

OpenCV cung cấp các chức năng sau cho mục đích này –

  • Hàm imread() − Đây là hàm đọc ảnh. OpenCV imread() hỗ trợ nhiều định dạng hình ảnh khác nhau như PNG, JPEG, JPG, TIFF, v.v.
  • imshow() function − Đây là chức năng hiển thị hình ảnh trong cửa sổ. Cửa sổ tự động khớp với kích thước hình ảnh. OpenCV imshow() hỗ trợ nhiều định dạng hình ảnh khác nhau như PNG, JPEG, JPG, TIFF, v.v.
  • Hàm imwrite() − Đây là hàm để viết một hình ảnh. OpenCV imwrite() hỗ trợ nhiều định dạng hình ảnh khác nhau như PNG, JPEG, JPG, TIFF, v.v.

Ví d

Ví dụ này cho thấy mã Python để đọc một hình ảnh ở một định dạng – hiển thị nó trong một cửa sổ và viết cùng một hình ảnh ở định dạng khác. Xem xét các bước được hiển thị bên dưới –

Nhập gói OpenCV như được hiển thị – import cv2

Bây giờ, để đọc một hình ảnh cụ thể, hãy sử dụng hàm imread() –

image = cv2.imread(‘image_flower.jpg’)

Để hiển thị hình ảnh, hãy sử dụng hàm imshow() . Tên của cửa sổ mà bạn có thể nhìn thấy hình ảnh sẽ là image_flower .

cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
trí tuệ nhân tạo hình 3d

Bây giờ, chúng ta có thể ghi cùng một hình ảnh sang định dạng khác, chẳng hạn như .png bằng cách sử dụng hàm imwrite() −

cv2.imwrite(‘image_flower.png’,image)

Đầu ra True có nghĩa là hình ảnh đã được ghi thành công dưới dạng tệp .png trong cùng một thư mục. True

Lưu ý – Hàm destroyallWindows() chỉ đơn giản là hủy tất cả các cửa sổ mà chúng ta đã tạo.

Chuyn đổi không gian màu

Trong OpenCV, các hình ảnh không được lưu trữ bằng cách sử dụng màu RGB thông thường, thay vào đó chúng được lưu trữ theo thứ tự ngược lại tức là theo thứ tự BGR. Do đó, mã màu mặc định khi đọc hình ảnh là BGR. Hàm chuyển đổi màu cvtColor() dùng để chuyển đổi hình ảnh từ mã màu này sang mã màu khác.

Ví d

Xem xét ví dụ này để chuyển đổi hình ảnh từ BGR sang thang độ xám.

Nhập gói OpenCV như được hiển thị –

import cv2

Bây giờ, để đọc một hình ảnh cụ thể, hãy sử dụng hàm imread() –

image = cv2.imread(‘image_flower.jpg’)

Bây giờ, nếu chúng ta thấy hình ảnh này bằng hàm imshow() , thì chúng ta có thể thấy rằng hình ảnh này ở định dạng BGR. cv2.imshow(‘BGR_Penguins’,image)

trí tuệ nhân tạo

Bây giờ, hãy sử dụng hàm cvtColor() để chuyển đổi hình ảnh này thành thang độ xám

image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
trí tue nhan tao

Phát hin cnh

Con người sau khi nhìn thấy một bản phác thảo sơ bộ có thể dễ dàng nhận ra nhiều loại đối tượng và tư thế của chúng. Đó là lý do tại sao các cạnh đóng một vai trò quan trọng trong cuộc sống của con người cũng như trong các ứng dụng của thị giác máy tính. OpenCV cung cấp chức năng rất đơn giản và hữu ích được gọi là Canny() để phát hiện các cạnh.

Ví d

Ví dụ sau đây cho thấy việc xác định rõ ràng các cạnh.

Nhập gói OpenCV như được hiển thị –

import cv2import numpy as np

Bây giờ, để đọc một hình ảnh cụ thể, hãy sử dụng hàm imread() .

image = cv2.imread(‘Penguins.jpg’)

Bây giờ, hãy sử dụng hàm Canny() để phát hiện các cạnh của hình ảnh đã được đọc. cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))

Bây giờ, để hiển thị hình ảnh có cạnh, hãy sử dụng hàm imshow().

cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))

Chương trình Python này sẽ tạo một hình ảnh có tên là edge_penguins.jpg với tính năng phát hiện cạnh.

trí tuệ nhân tạo

Phát hin khuôn mt

Nhận diện khuôn mặt là một trong những ứng dụng hấp dẫn của thị giác máy tính giúp nó trở nên thực tế cũng như tương lai hơn. OpenCV có một tiện ích tích hợp sẵn để thực hiện nhận diện khuôn mặt. Chúng tôi sẽ sử dụng bộ phân loại tầng Haar để nhận diện khuôn mặt.

D liu Cascade ca cô y

Chúng tôi cần dữ liệu để sử dụng bộ phân loại tầng Haar. Bạn có thể tìm thấy dữ liệu này trong gói OpenCV của chúng tôi. Sau khi cài đặt OpenCv, bạn có thể thấy tên thư mục haarcascades . Sẽ có các tệp .xml cho các ứng dụng khác nhau. Bây giờ, sao chép tất cả chúng cho các mục đích sử dụng khác nhau và sau đó dán vào một thư mục mới trong dự án hiện tại.

Ví dụ Sau đây là mã Python sử dụng Haar Cascade để phát hiện khuôn mặt của Amitabh Bachan được hiển thị trong hình ảnh sau đây

Nhập gói OpenCV như được hiển thị –

import cv2import numpy as np

Bây giờ, hãy sử dụng HaarCascadeClassifier để phát hiện khuôn mặt –

eye_cascade = cv2.CascadeClassifier(‘D:/ProgramData/cascadeclassifier/haarcascade_eye.xml’)

Bây giờ, để đọc một hình ảnh cụ thể, hãy sử dụng hàm imread()

img = cv2.imread(‘AB_Eye.jpg’)

Bây giờ, hãy chuyển đổi nó thành thang độ xám vì nó sẽ chấp nhận hình ảnh màu xám –

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Bây giờ với sự trợ giúp của eye_cascade.detectMultiScale , hãy thực hiện nhận diện khuôn mặt thực tế eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)

Bây giờ, vẽ một hình chữ nhật xung quanh toàn bộ khuôn mặt –

for (ex,ey,ew,eh) in eyes:   img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)cv2.imwrite('Eye_AB.jpg',img) 

Chương trình Python này sẽ tạo một hình ảnh có tên Eye_AB.jpg với tính năng phát hiện mắt như hình dưới đây

trí tuệ nhân tạo

Xem thêm : AI với Python – Học sâu

Trả lời