Hough Circle Transform

จาก Morange Wiki
รุ่นแก้ไขเมื่อ 11:47, 8 สิงหาคม 2559 โดย Patcharapun (คุย | มีส่วนร่วม) (success)
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)

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