OpenCV
[OpenCV with Python] 영상 기하학적 변환 : 영상의 확대와 축소 - 크기 변환 cv2.resize
크기 변환(Scale transformation) 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환 x축과 y축방향 으로의 스케일비율(scalefactor)를 지정 ✔︎ cv2.resize 함수 dst = cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) src: 입력 영상 dsize: 결과 영상 크기. (w, h) 튜플. (0, 0)이면 fx와 fy 값을 이용하여 결정. dst: 출력 영상 fx, fy: x와 y방향 스케일 비율(scale factor). (dsize 값이 0일 때 유효) interpolation: 보간법 지정. 기본값은 cv2.INTER_LINEAR resize 함수는 출력 영상 크기를 픽셀 단위로 설..
[OpenCV with Python] 영상 기하학적 변환 : 전단 변환 - cv2.warpAffine
영상의 전단 변환 - Shear transformation 영상의 전단 변환은 층 밀림 변환이라고도 한다. 이동을 하는데 모든 픽셀들이 동일하게 이동하는 것이 아니라 어떤 픽셀은 조금 이동하고 어떤 픽셀은 많이 이동하여 한쪽을 찌그러뜨리는 효과를 낸다. 전단 변환도 이동 변환과 마찬가지로 어파인 행렬을 만들어야 한다. 이동 변환에서는 단위 행렬을 어파인 행렬로 생성했지만, 전단 변환은 m 상수도 필요하다. 전단 변환을 한 만큼 영상이 밀려나가게 되어 영상이 짤리게 된다. 이를 해결하기 위해 밀린 만큼 출력 영상의 크기를 키워주면 된다. ✔︎ cv2.warpAffine 함수 dst = cv2.warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None,..
[OpenCV with Python] 영상 기하학적 변환 : 이동 변환 - cv2.warpAffine
영상의 기하학적 변환(geometric transformation)이란? 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업 Image registration, removal of geometric distortion, etc. ❓ 기하학적 변환이 필요한 이유 입력 영상 크기가 제한되어 있어 영상 크기를 축소해야 하는 경우 객체가 영상의 정중앙에 있어야 하는 경우 회전이 되어 있는 영상을 똑바로 보정 이 외에도 여러가지 상황에서 영상의 기하학적 변환이 필요하다. 1. 영상의 이동 변환 - Translation transformation 이동 변환은 shift라는 용어도 많이 쓴다. 가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환이다. x, y 방향으로 어느 정도..
[OpenCV with Python] Filtering : Noise 제거 - 양방향 필터 Bilateral Filter
가우시안 잡음 제거에는 가우시안 필터가 효과적이다 이처럼 잡음이 있는 지글지글한 부분을 가우시안 필터로 완만하게 수정할 수 있다. 하지만 가우시안 블러를 심하게 적용하면 영상에 있는 엣지 부분에 훼손이 생긴다. 이 단점을 보완한 것이 양방향 필터(Bilateral Filter)이다. 양방향 필터 Bilateral filter 가우시안 필터를 양쪽 방향으로 두번 한다고해서 양방향이라는이름이 붙여졌다. 평균 값 필터 또는 가우시안 필터는 엣지 부근에서도 픽셀 값을 평탄하게 만드는 단점이 있다. 양방향 필터는 기준 픽셀과 이웃 픽셀과의 거리, 그리고 픽셀 값의 차이를 함께 고려하여 블러링 정도를 조절한다. 수식을 보면 가우시안 필터 함수(G)가 2개 있는 것을 볼 수 있다. 양방향 필터의 작동 원리 양방향 필..