목록K 개발자 (145)
K 개발자
어핀 변환 어핀 변환(affine transform)은 사실 이동, 확대/축소, 회전을 포함하는 변환으로 직선, 길이의 비율, 평행성을 보존하는 변환을 말한다. (어핀 변환 링크) 어핀 변환의 이런 성질 때문에 변환 전과 후의 3개의 점을 짝 지어 매핑할 수 있다면 변환행렬을 거꾸로 계산할 수 있는데, OpenCV는 cv2.getAffineTransform() 함수로 이 기능을 제공한다. matrix = cv2.getAffineTransform(pts1, pts2) pts1 : 변환 전 영상의 좌표 3개, 3 × 2 NumPy 배열(float32) pts2 : 변환 후 영상의 좌표 3개, pts1과 동일 matrix : 변환행렬 반환, 2 × 3 행렬 원근 변환 OpenCV는 변환 전과 후를 짝짓는 4개..
논문 : 'Rich feature hierarchies for accurate object detection and semantic segmentation'-Tech report (v5) R-CNN을 통한 객체 감지 R-CNN의 물체 감지 시스템은 세 개의 모듈로 구성되어 있다. 첫 번째는 범주 독립적인 지역 제안을 생성한다. 이러한 제안은 검출기에서 사용할 수 있는 후보 탐지 세트를 정의한다. 두 번째 모듈은 각 영역에서 고정 길이 특징 벡터를 추출하는 대형 컨볼루션 신경망이다. 세 번째 모듈은 클래스별 선형 SVM 세트이다. R-CNN의 개요 그림은 R-CNN의 방법에 대한 개요를 제시하고 결과 중 일부를 강조한다. 입력 이미지를 취한다. 약 2,000개의 상향식 지역 제안을 추출한다. 대규모 컨볼루..
'Object Detection in 20 Years: A Survey' 논문으로 20년 동안의 객체 탐지 모델의 동향을 살펴본다. 이 논문은 20년 역사에서 객체 탐지 모델의 일부 이정표, 핵심 기술, 속도 향상 방법, 탐지 응용 프로그램, 데이터 셋, 측정 기준을 광범위하게 검토할 뿐만 아니라 커뮤니티가 현재 직면하고 있는 과제와 이러한 탐지기를 추가로 확장하고 개선할 수 있는 방법에 대해 설명한다. 컴퓨터 비전에 관심이 있는 사람은 이 논문을 직접 읽어보길 추천한다. 20년 동안의 객체 탐지 지난 20년 동안 객체 탐지의 진전은 일반적으로 두 가지 역사적 기간을 거쳤다는 것이 널리 받아들여지고 있다. 그림과 같이 2014년 이전의 전통적인 객체 감지 기간과 2014년 이후 딥러닝 기반 감지 기간의 ..
이동 dst = cv2.warpAffine(src, mtrx, dsize [, dst, flags, borderMode, borderValue]) src : 원본 영상, NumPy 배열 mtrx : 2×3 변환행렬, NumPy 배열, dtype = float32 dsize : 결과 이미지 크기, tuple(width, height) flags : 보간법 알고리즘 선택 플래그 cv2.INTER_LINEAR : 기본 값, 인접한 4개 픽셀 값에 거리 가중치 사용 cv2.INTER_NEAREST : 가장 가까운 픽셀 값 사용 cv2.INTER_AREA : 픽셀 영역 관계를 이용한 재샘플링 cv2.INTER_CUBIC : 인접한 16개 픽셀 값에 거리 가중치 사용 cv2.INTER_LANCZOS4 : 인접한 8..
히스토그램 계산과 표시 영상 분야에서의 히스토그램은 전체 영상에서 픽셀 값이 1인 픽셀이 몇 개이고 2인 픽셀이 몇 개이고 하는 식으로 픽셀 값이 255인 픽셀이 몇 개인지까지 세는 것을 말한다. 그렇게 하는 이유는 전체 영상에서 픽셀들의 색상이나 명암의 분포를 파악하기 위해서이다. cv2.calcHist(img, channel, mask, histSize, ranges) img : 입력 영상, [img]처럼 리스트로 감싸서 표현 channel : 처리할 채널, 리스트로 감싸서 표현 1채널 : [0], 2채널 : [0, 1], 3채널 : [0, 1, 2] mask : 마스크에 지정한 픽셀만 히스토그램 계산 histSize : 계급(bin)의 개수, 채널 개수에 맞게 리스트로 표현 1채널 : [256], ..
영상과 영상의 연산 dest = cv2.add(src1, src2 [, dest, mask, dtype]) : src1과 src2 더하기 src1 : 입력 영상 1 또는 수 src2 : 입력 영상 2 또는 수 dest : 출력 영상 mask : 0이 아닌 픽셀만 연산 dtype : 출력 dtype dest = cv2.substract(src1, src2 [, dest, mask, dtype]) : src1에서 src2를 빼기 모든 인자는 cv2.add() 함수와 동일 dest = cv2.multiply(src1, src2 [, dest, scale, dtype]) : src1과 src2를 곱하기 scale : 연산 결과에 추가 연산할 값 dest = cv2.divide(src1, src2 [, dest,..
스레시홀딩 스레시홀딩(thresholding)이란 여러 점수를 커트라인을 기준으로 합격과 불합격으로 나누는 것처럼 여러 값을 경계점을 기준으로 두 가지 분류로 나누는 것으로, 바이너리 이미지를 만드는 가장 대표적인 방법이다. 전역 스레시홀딩 ret, out = cv2.threshold(img, threshold, value, type_flag) img : NumPy 배열, 변환할 이미지 threshold : 경계 값 value : 경계 값 기준에 만족하는 픽셀에 적용할 값 type_flag : 스레시 홀드 적용 방법 지정 cv2.THRESH_BINARY : px > threshold ? value : 0, 픽셀 값이 경계 값을 넘으면 value를 지정하고, 넘지 못하면 0을 지정 cv2.THRESH_BI..
컬러 스페이스 변환 out = cv2.cvtColor(img, flag) img : NumPy 배열, 변환할 이미지 flag : 변환할 컬러 스페이스, cv2.COLOR_로 시작하는 이름(274개) cv2.COLOR_BGR2GRAY : BGR 컬러 이미지를 그레이 스케일로 변환 cv2.COLOR_GRAY2BGR : 그레이 스케일 이미지를 BGR 컬러 이미지로 변환 cv2.COLOR_BGR2RGB : BGR 컬러 이미지를 RGB 컬러 이미지로 변환 cv2.COLOR_BGR2HSV : BGR 컬러 이미지를 HSV 컬러 이미지로 변환 cv2.COLOR_HSV2BGR : HSV 컬러 이미지를 BGR 컬러 이미지로 변환 cv2.COLOR_BGR2YUV : BGR 컬러 이미지를 YUV 컬러 이미지로 변환 cv2.C..