opencv를 이용한 특징량의 검출(코너 검출)

소개



opencv를 사용하여 이미지의 특징 량을 감지하는 방법. 이번에는 코너(곡선 등)의 검출을 해 나간다.
2 패턴의 검출 방법을 실시한다.
기초적인 것에 대해서는, 이하의 페이지 참조
파이썬을 이용한 이진화 영상 처리의 기초h tps:// 퀵했다. 작은 m/진 237/있어 MS/04 또는 3D0b56 그림 10065C4 그림 4

해보자



opencv를 사용하지만 코너 감지에는 두 가지 방법이 있습니다.

"cv2.cornerHarris"에 의한 코너 검출



가장자리가 모든 방향으로 높은 휘도 변화를 가진 영역으로 가정.
#サンプル画像からコーナーの検出
import matplotlib.pyplot as plt
%matplotlib inline
import cv2


#画像読み込みと二値化
img = cv2.imread("sample.png",0)
#コーナーの検出
corners = cv2.cornerHarris(img, 3,1,0.04)
plt.imshow(corners, cmap='gray')
plt.savefig('gray_pltsample')


img = cv2.imread("sample.png", 0)

따라서, "0"은 화상의 판독과 동시에 2 치화 화상으로서의 판독을 가능하게한다.
본래라면 "cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)"처럼 쓸 수도 있지만 이번에는 처리를 보기 쉽게 하기 위해 이 방법을 사용했다.
matplotlib에 의해, 표시와 보존을 실시하고 있다.
또한,
corners = cv2.cornerHarris(img, 3,1,0.04)

에 대해서는
3 = 이웃 픽셀 범위(blocksize)
1 = 커널 크기(ksize)
0.04 = Harris 검출기 프리 파라미터 (k)

blockSize - 코너 검출시 고려할 인접 영역의 크기.
ksize - Sobel의 기울기 연산자의 커널 크기.
k - 표현식의 자유 매개 변수.

이론에 대해서는 Harris 코너 감지 를 참조.

"cv2.goodFeaturesToTrack"에 의한 코너 검출


import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('sample.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

corners = cv2.goodFeaturesToTrack(gray,100000000,0.01,10)
corners = np.int0(corners)

for i in corners:
    x,y = i.ravel()
    cv2.circle(img,(x,y),3,255,-1)

plt.imshow(img),plt.show()



특징점에 대하여 점을 칠 수 있다. 이번에는 많이 설정해 보았지만, 그다지 결과에 대한 변화는 없다. 이 적점을 궁리해 보면 좀 더 알기 쉬워지거나 할지도 모른다.

사이고에게



코너의 검출을 행했다. 쉽게 할 수 있는 것이므로 꼭 이론도 포함해 이해해 보면 좋다. 상기의 소개한 것 이외에도 있기 때문에, 다른 기사로 써 보려고 한다.

좋은 웹페이지 즐겨찾기