Hough Circle Transform

จาก Morange Wiki

Hough Circle Transform

วัตถุประสงค์

  • ในบทนี้จะเรียนรู้เรื่อง
    • การหาวงกลมโดยใช้ Hough Transform ในรูปภาพ
    • โดยใช้ฟังก์ชั่น : cv2.HoughCircles()

หลักการคือ

  • ในการหาวงกลมโดยทางสูตรคณิตศาสตร์นั้นคือ (x−xcenter)2+(y−ycenter)2=r2 เมื่อ (xcenter,ycenter) โดยจะหาตรงกลางของวงกลมก่อน และ r นั้นคือ radius ของวงกลม จากนั้น เราจะมี 3 parameter จากนั้นจำเป็นที่ต้องมี คิวมูเลเตอร์ 3 มิติมาช่วย โดย OpenCV นั้นมีฟังก์ชั่นที่ช่วยในการหาและแก้สูตรนั้น และพลิกแพงการใช้งาน Hough Gradient Method โดยใช้การไล่ระดับสีของ Edges
  • โดยฟังก์ชั่นที่เราใช้คือฟังก์ชั่น cv2.HoughCircles().

Code Example

import cv2
import numpy as np
 
img = cv2.imread('opencv_logo.png',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
 
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
                            param1=50,param2=30,minRadius=0,maxRadius=0)
 
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()

Result

Find circle