[OpenCV] 기하학(Geometry) -Rotation, Scaling, Translation, interpolation
기하학(Geometry) 처리 기하학은 점, 선, 면, 도형 등의 기하학적인 대상을 다루는 학문이다. 즉, 대상의 길이, 넓이 각도 등을 측정하거나 공간상의 특성을 연구하는 수학의 한 분야이다 기하학의 영어 단어 'Geometry' 는 토지를 뜻하는 geo와 측량을 뜻하는 metry라는 단어가 합해져서 만들어진 용어이다 영상처리에서 기하학 처리는 영상 내에 있는 기하학적인 대상의 공간적 배치를 변경하는 과정을 말한다. 이것을 화소의 입장에서 보면, 영상을 구성하는 화소들의 공간적 위치를 재배치하는 과정이라고 할 수 있다. 이러한 변화에는 크게 외정, 크기 변경, 평행이동등이 있다. 보통 영상처리 관련 논문에서는 이 세가지 변환을 일커러 RST 변환이라고 말한다. R은 Rotation, S는 Scaling..
2022. 11. 27.
[OpenCV] 필터링 (Filtering)
최댓값/최솟값 필터링 입력 영상의 줌심 화소에서 마스크로 씌워진 영역의 입력 화소들을 가져와 계수를 구성하고 그중에서 최댓값과 최솟값을 출력 화소로 결정하는 방법이다. 측, 최댓값 필터링은 게수중에서 최대값을 통과시켜 출력 화소가 되고, 최솟값 필터링은 최솟값을 통과시켜 출력 화소가 된다. import numpy as np, cv2 def minmax_filter(image, ksize, mode): rows, cols = image.shape[:2] dst = np.zeros((rows, cols), np.uint8) center = ksize // 2 # 마스크 절반 크기 for i in range(center, rows - center): # 입력 영상 순회 for j in range(center,..
2022. 11. 25.
[OpenCV] 에지 검출
로버트(Roberts) 마스크 로버트 마스크는 대각선 반향으로 1과 -1을 배치하여 구성되며, 나머지 원소의 값이 모두 0이어서 다른 1차 미분 마스크에 비해서 계산이 단순하다. 그리고 한 번만 차분을 게산하기 때문에 차분의 크기가 작고, 이로 인해서 경계가 확실한 에지만 추출하며, 잡음에 매우 민감하다 import numpy as np, cv2 # 회선 수행 함수 - 행렬 처리 방식 def filter(image, mask): rows, cols = image.shape[:2] dst = np.zeros((rows, cols), np.float32) # 회선 결과 저장 행렬 xcenter, ycenter = mask.shape[1]//2, mask.shape[0]//2 # 마스크 중심 좌표 for i ..
2022. 11. 25.
[OpenCV] 03. 화소처리 (컬러 공간 변환)
컬러 공간 변환 (BGR -> CMY) import numpy as np, cv2 BGR_img = cv2.imread("img/color_model.jpg", cv2.IMREAD_COLOR) # 컬러 영상 읽기 if BGR_img is None: raise Exception("영상 파일 읽기 오류") white = np.array([255, 255, 255], np.uint8) CMY_img = white - BGR_img Cyan, Magenta, Yellow = cv2.split(CMY_img) # 채널 분리 titles = ['BGR_img','CMY_img','Cyan','Magenta','Yellow'] [cv2.imshow(t, eval(t)) for t in titles] cv2.waitK..
2022. 11. 23.
[OpenCV] 산출 연산 함수
산출 연산 함수 cv2.add(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 합을 계산 src1 : 첫 번째 입력 배열 혹은 스칼라 src2 : 두 번째 입력 배열 혹은 스칼라 dst : 계산된 결과의 출력 배열 mask : 연산 마스크 : 0이 아닌 마스크 원소의 위치만 연산 수행(8비트 단일 채널) dtype : 출력 배열의 깊이 cv2.subtract(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 차분을 계산한다. add() 함수와 인수 동일 cv2.multiply(src1, src2[, dst[, scale[, dtype]]]) : 두 배열의 각 원소 간 곱을..
2022. 11. 21.