Data Science

Data Science/Computer Vision

[OpenCV] [Python] 리매핑(Remapping)을 이용한 이미지 반전(Flip), 왜곡(Distortion) 수행

리매핑(Remapping) 리매핑(Remapping)을 이용해 이미지를 직선이 아닌 곡선으로 표현할 수 있는데, 입력 이미지에 기하학적(Geometric) 변환을 적용하는 방법이라고 볼 수 있다. 이를 통해 좀 더 자유도 있는 변환을 수행할 수 있다. 리매핑은 이미지에 변환 행렬 연산을 적용하는 것이 아닌, 비선형 변환을 적용할 수 있다. 즉, 리매핑이란 규칙성 없이 마음대로 이미지의 모양을 변환하는 것을 말한다. 어파인 변환, 투시 변환을 포함한 다양한 변환을 리매핑으로 표현할 수 있다. 오른쪽 수식은 대칭 변환을 리매핑으로 표현한 것이고, 대칭 변환은 x좌표를 (가로크기 -1 -x)로 매핑하였고 y좌표는 그대로 가져온다. x가 0이면 w-1이 되어 가로 끝 좌표를 참조합니다. 따라서 좌우 대칭이 된다..

Data Science/Computer Vision

[OpenCV] [Python] Perspective Transform(원근 or 투시 변환)

투시변환(Perspective Transform)영상의 기하학적 변환 중 어파인 변환(Affine Transform)보다 자유도가 높은 투시변환(Perspective Transform)이 있다. 따라서 투시변환은 직사각형 뿐만 아니라 사다리꼴 혹은 다른 형태의 임의의 사각형으로 표현이 가능하다. 어파인 변환은 우선 원본 이미지에 3개의 점을 정하고, 이 3개 점을 기준으로 얼마나 뒤틀리게 할것인지 정한다.  반면 투시 변환은 이미지의 끝 점 4개의 이전위치와 변환 후의 위치를 알면 이동 관계를 알 수 있는데 이는 평행 사변형이 아닌 좀 더 자유로운 사각형이기 때문이다.   투시 변환은 보통 3×3 크기의 실수 행렬로 표현한다. 투시 변환은 여덟 개의 파라미터로 표현할 수 있지만, 좌표 계산의 편의상 아홉..

Data Science/Computer Vision

[OpenCV] [Python] ROI(Region Of Interest, 관심 영역) 설정 함수

이미지에서 전처리를 해주거나 딥러닝 모델에 학습시키기 위해 ROI(Region Of Interest)라는 관심영역 설정이 필요하다. 이는 이미지에서 좌표로 직접 지정해주거나 selectROI 또는 selectROIs라는 OpenCV의 함수를 사용하여 쉽게 추출할 수 있다. 좌표 지정 좌표 지정은 roi = image[y:y+h, x:x+w]와 같이 작성해주면 된다. import cv2 img = cv2.imread('brokenEgg.jpeg') x = 232 w = 231 y = 310 h = 182 roi = img[y:y+h, x:x+w] color = (0, 255, 0) thickness = 5 cv2.rectangle(img=roi, pt1=(0, 0), pt2=(w, h), color=col..

Data Science/Computer Vision

[OpenCV] [Python] 모아레(Moire)현상 제거

주요 개념 모아레(Moire) 퓨리에 변환(Fast Fourier Transform, FFT) LPF(Low Pass Filter) 모아레(Moire) 현상은 선이나 점이 반복되는 물체(보통 의류)를 촬영할 때 생기는 현상을 말한다. 모아레 현상은 ‘맥놀이 현상’에 빗대어 설명하기도 하는데 이는 빛 또한 소리와 같이 파동의 성질을 갖고 있기 때문이다. 맥놀이 현상이란 진동수가 비슷한 두 개의 파동이 서로 영향을 미쳐 진동수의 폭이 일정한 주기로 변하는 현상이다. 예를 들어 큰 종을 치면 처음에는 큰 소리가 나지만 시간이 지날수록 소리가 커지고 작아지기를 반복하는 현상이 있다. 범종은 두꺼워 종을 칠 때 2개 이상의 진동수를 가진 소리가 만들어지는데, 이 소리들은 서로 간섭한다. 위상이 같을 때는 소리가 ..

Data Science/Computer Vision

[OpenCV] [Python] Filter와 Convolution을 이용한 블러링(Blurring - Averaging, Gaussian, Median, Bilateral)

블러링(Blurring) 이미지 블러링(Blurring)이란 이미지의 고주파 부분을 조금 더 자연스럽게 바꾸어줄 수 있는 방법이다. 이를 이해하기 위해 주파수에 대한 설명이 필요하다. 영상에서 고주파는 이미지의 색의 차이가 큰 부분이고, 저주파는 색의 차이가 적은 부분을 의미한다. 또한 상대적 고주파만 통과시키기 위한 LPF(Low Pass Filter)와 상대적 저주파를 제거해주기 위한 HPF(High Pass Filter)가 있는데, 블러링은 LPF를 통해 고주파에 해당하는 부분을 매끈하게(smoothing) 하게 보이도록 만드는 효과를 낸다. 사실 이미지 상에서 픽셀의 값은 공간적으로 느리게 변한다. 따라서 픽셀 간의 상관관계(correlation)가 크다. 이를 Slow Spatial Variat..

Data Science/Computer Vision

[OpenCV] [Python] Salt-Pepper(소금-후추) Noise 추가

주요 개념 데이터 증대(Data Augmentation) Salt Pepper 노이즈 이미지 분류 수행을 위한 딥러닝 모델을 만들 때 항상 학습시킬 데이터가 부족하다. 라벨링도 굉장히 귀찮다. 따라서 데이터 증대(Data Augmentation) 작업을 통해 데이터 양을 늘려주는 것이 중요하다. 마구잡이로 오목렌즈, 볼록렌즈 효과 등을 사용해 데이터를 왜곡하기보단 지금 소개할 Salt Pepper 노이즈를 추가하거나 블러링(Blurring), 반전(Flip)과 화질 저하와 같은 여러 방법을 통해 데이터 증대를 수행할 수 있다. 물론 데이터 특성(feature)에 맞는 방식을 채택해야 한다. 만약 OCR을 수행해야하는데 5를 상하 반전하여 된 데이터셋을 사용하면 2와 혼동될 수 있어 원하지 않는 결과가 나..

loading