분류 전체보기 428

[37] 4) 허프 변환: 직선 검출

허프 변환(Hough transform) 직선 검출이란? 2차원 영상 좌표에서의 직선의 방정식을 파라미터(parameter)공간으로 변환하여 직선을 찾는 알고리즘 축적 배열(accumulation array) 직선 성분과 관련된 원소 값을 1씩 증가시키는 배열 직선의 방정식 y=ax+b를 사용할 때의 문제점 y축과 평행한 수직선을 표현하지 못함 -> 극좌표계 직선의 방정식을 사용 허브 변환에 읜한 선분 검출 cv2.HoughLines(image,rho,theta,threshold,line=None,srn=None,stn=None,min_theta=None,max_theta=None) -> lines • image: 입력 에지 영상 • rho: 축적배열에서rho 값의간격. (e.g.) 1.0 -> 1픽셀간..

[36] 3) 캐니 에지 검출

좋은 에지 검출기의 조건 정확한 검출 : 에지가 아닌 점을 에지로 찾거나 또는 에지인데 에지로 찾지 못하는 확률을 최소화 정확한 위치: 실제 에지의 중심을 검출 단일 에지: 하나의 에지는 하나의 점으로 표현 케니 에지 검출 함수 cv2.Canny(image,threshold1,threshold2,edges=None,apertureSize=None,L2gradient=None) -> edges • image: 입력영상 • threshold1:하단임계값 (threshold1 : threshold2 = 1:2 또는 1:3) • threshold2: 상단임계값 • edges: 에지영상 • apertureSize: 소벨연산을위한커널크기. 기본값은3. • L2gradient: True이면L2 norm 사용, Fal..

[35] 2) 그래디언트와 에지 검출

영상의 그래디언트 (gradient) 함수 f(x,y)를 x축과 y축으로 각각 편미분하여 벡터 형태로 표현한 것 실제 영상에서 구한 그래디언트 크기와 방향 그래디언트 크기: 픽셀 값의 차이 정도, 변화량 그래디언트 방향: 픽셀 값이 가장 급격하게 증가하는 방향 2D 벡터의 크기 계산 함수 cv2.magnitude(x,y,magnitude=None) -> magnitude • x: 2D 벡터의x 좌표행렬. 실수형. • y: 2D 벡터의y 좌표행렬. x와같은크기.실수형. • magnitude: 2D 벡터의크기행렬. x와같은크기, 같은타입. 2D 벡터의 방향 계산 함수 cv2.phase(x,y,angle=None,angleInDegrees=None) -> angle • x: 2D 벡터의x 좌표행렬. 실수형. ..

[34] 6. 영상의 특징 추출 1) 영상의 미분과 소벨 펠터

에지 (edge) 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분 일반적으로 배경과 객체, 또는 객체와 객체의 경계 기본적인 에지 검출 방법 영상을 (x,y)변수의 함수로 간주했을 때, 이 함수의 1차 미분 값이 크게 나타나는 부분을 검출 1차 미분의 근사화 (approximation) 다양한 미분 마스크 소벨 필터를 이용한 미분 함수 cv2.Sobel(src,ddepth,dx,dy,dst=None,ksize=None,scale=None,delta=None,borderType=None) -> dst • src: 입력영상 • ddepth: 출력영상데이터타입. -1이면 입력 영상과 같은 데이터 타입을 사용. • dx: x 방향 미분 차수. • dy: y 방향 미분 차수. • dst: 출력 영상(행렬) • k..

[33] 7) 문서 스캐너 구현

문서스캐너 카메라로 촬영한 문서 영상을 똑바로 펴서 저장해주는 프로그램 구현할 기능 마우스로 문서 모서리 선택 & 이동하기 키보드 ENTER키 인식 왜곡된 문서 영상을 직사각형 형태로 똑바로 펴기 (투시 변환) 마우스로 문서 모서리 선택 & 이동하기 마우스 왼쪽 버튼이 눌린 좌표가 네 개의 모서리와 근접해 있는지를 검사 특정 모서리를 선택했다면 마우스 드래그를 검사 마우스 드래그 좌표 이동 & 화면 표시 마우스 왼쪽 버튼이 떼어졌을 때의 좌표를 기록 왜곡된 문서 영상을 직사각형 형태로 똑바로 펴기 (투시 변환) 네 개의 모서리 좌표를 순서대로 srcQuad 배열에 추가 dstQuad 배열에는 미리 정의한 A4용지 크기의 네 모서리 좌표를 저장 (A4 용지 크기: 210x297cm) srcQuad 점들로부..

[32] 6) 리매핑

리매핑 (remapping) 영상의 특정 위치 픽셀을 다른 위치에 재배치하는 일반적은 프로세스 어파인 변환, 투시 변환을 포함한 다양한 변환을 리매핑으로 표현 가능 리매핑 함수 cv2.remap(src,map1,map2,interpolation,dst=None,borderMode=None,borderValue=None) -> dst • src : 입력 영상 • map1: 결과 영상의 (x, y) 좌표가 참조할 입력 영상의 x 좌표 입력 영상과 크기는 같고 타입은 np.float32 인 numpy.ndarray • map2: 결과 영상의 (x, y) 좌표가 참조할 입력 영상의 y 좌표 • interpolation: 보간법 • dst 출력 영상 • borderMode : 가장자리 픽셀 확장 방식 . 기본값은..

[31] 5) 어파인 변환과 투시 변환

어파인 변환 vs 투시 변환 어파인 변환 행렬 구하기 cv2.getAffineTransform(src,dst) -> retval • src : 3 개의 원본 좌표점 . numpy.ndarray . shape=(3,2) ex) np.array([[x1,y1],[x2,y2],[x3,y3]],np.float32) • dst 3: 개의 결과 좌표점 . numpy.ndarray . shape=(3,2) 투시 변환 행렬 구하기 cv2.getPerspectiveTransform(src,dst,solveMethod=None) -> retval • src : 4 개의 원본 좌표점 . numpy.ndarray . shape=(4,2) ex)np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]],np...

[30] 4) 영상의 회전

회전 변환 (rotation transformation) 영상을 특정 각도만큼 회전시키는 변환 (반시계 방향) 영상의 회전 예제 import sys import math import numpy as np import cv2 src = cv2.imread('tekapo.bmp') if src is None: print('Image load failed!') sys.exit() rad=20*math.pi/180 aff=np.array([[math.cos(rad),math.sin(rad),0],[-math.sin(rad),math.cos(rad),0]],dtype=np.float32) dst=cv2.warpAffine(src,aff,(0,0)) cv2.imshow('dst',dst) cv2.waitKey() ..

[29] 3) 이미지 피라미드

이미지 피라미드란? 하나의 영상에 대해 다양한 해상도의 영상 세트를 구성한 것 보통 가우시안 블러링 & 다운샘플링 형태로 축소하여 구성 영상 피라미드 다운샘플링 cv2.pyrDown(src,dst=None,dstsize=None,borderType=None) -> dst • src: 입력 영상 • dst: 출력 영상 • dstsize : 출력 영상 크기 . 따로 지정하지 않으면 입력 영상의 가로 , 세로 크기의 1/2 로 설정 • borderType: 가장자리 픽셀 확장 방식 • 참고 사항 ★ 먼저 5x5 크기의 가우시안 필터를 적용 ★이후 짝수 행과 열을 제거하여 작은 크기의 영상을 생성 영상 피라미드 업샘플링 cv2.pyrUp(src,dst=None,dstsize=None,borderType=None..

[28] 2) 영상의 확대와 축소

크기 변환 (Scale transformation) 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환 x축과 y축 방향으로의 스케일 비율(scale factor)을 지정 영상의 크기 변환 cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None) -> dst • src: 입력 영상 • dsize : 결과 영상 크기 . (w, h) 튜플 . (0,0) 이면 fx 와 fy 값을 이용하여 결정 • dst: 출력 영상 • fx , fy : x 와 y 방향 스케일 비율 (scale factor). dsize 값이 0 일 때 유효 • interpolation: 보간법 지정 . 기본값은 cv2.INTER_LINEAR 영상의 크기 변환 예제 import..