Thị giác máy tính với OpenCV-Python Bài 4, Phần 14: Biến đổi Hough với đường tròn
15:24 - 07/01/2022
Trong phần này chúng ta sẽ học cách sử dụng Hough Transform để tìm các vòng tròn trong một hình ảnh thông qua hàm cv2.HoughCircles().
Thị giác máy tính với OpenCV-Python Bài 7 Phần 2: Phát hiện người đi bộ trong video
Thị giác máy tính với OpenCV-Python Bài 7 Phần 1: Phát hiện người đi bộ trong hình ảnh
Thị giác máy tính với OpenCV-Python Bài 6 Phần 2: Phép trừ nền
Thị giác máy tính với OpenCV-Python Bài 6 Phần 1: Bắt bám đối tượng với Meanshift và Camshift
Một đường tròn được biểu diễn về mặt toán học là (x – x0)2 + (y – y0)2 = r2, trong đó (x0, y0) là tọa độ tâm đường tròn, r là bán kính đường tròn. Từ phương trình, chúng ta có thể thấy có 3 tham số, trong trường hợp này OpenCV sử dụng phương pháp phức tạp hơn so với tìm các đường kẻ, đó là sử dụng thông tin gradient của các cạnh.
Hàm chúng ta sử dụng ở đây là cv2.HoughCircles(). Đoạn code dưới đây minh họa các sử dụng của nó:
- import cv2
- import numpy as np
- img = cv2.imread('opencv_logo.jpg', 0)
- img = cv2.medianBlur(img, 5)
- cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
- circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 100, param1 = 50, param2 = 30, minRadius = 10, maxRadius=200)
- circles = np.uint16(np.around(circles))
- for i in circles[0,:]:
- # draw the outer circle
- cv2.circle(cimg, (i[0], i[1]), i[2], (0,255,0), 2)
- # draw the center of the circle
- cv2.circle(cimg, (i[0], i[1]), 2, (0,0,255), 3)
- cv2.imshow('Detected circles', cimg)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
Chúng ta cần chú ý các đối số sau trong hàm cv2.HoughCircles: đối số thứ tư (100) là khoảng cách tối thiểu giữa tâm của các đường tròn phát hiện được, nếu để số này nhỏ hơn, sẽ có rất nhiều đường tròn phát hiện được; minRadius và maxRadius là bán kính tối thiểu và tối đa tính bằng pixel.
Kết quả được hiển thị bên dưới:
Ở phần tiếp theo chúng ta sẽ cùng tìm hiểu về thuật toán Harris để phát hiện góc trong hình ảnh.
(Sưu tầm)
VIỆN IMC
Tòa nhà IMC Tower, Số 176 Trường Chinh, Phường Khương
Thượng, Quận Đống Đa, Thành phố Hà Nội, Việt Nam
Tel/Fax : (+84) 24 3566 6232 / 24 3566 6234
Email: contact@imc.org.vn Website: https://imc.org.vn