본문 바로가기
  • AI 개발자가 될래요

컴퓨터비전15

[C++/OpenCV] 주파수 영역 필터링 / 저주파 및 고주파 통과 필터링 영상을 주파수 영역으로 변환하면 화소의 밝기가 서서히 변화하는 저주파 영역과 급격하게 변화하는 고주파 영역을 공간 영역에 비하여 쉽게 분리할 수 있다. 이렇게 분리된 주파수 영역에 대해서 각 주파수 영역을 강화하거나 약화하거나 혹은 제거하는 등의 처리를 할 수 있다. 주파수 영역 필터링 주파수 영역에서 필터링 과정은 푸리에 변환 계수에 필터 행렬을 원소 간(element-wise) 곱하여 수행된다. 여기서 푸리에 변환 계수는 복소수이기 때문에 필터의 곱셈도 실수부와 허수부의 두 채널에 수행해야 한다. 필터를 어떻게 구성하느냐에 따라 저주파 통과 필터링, 고주파 통과 필터링 등을 구현할 수 있다. 푸리에 변환에 대한 자세한 이야기는 아래 링크에서 다루었으니 참고 바란다. https://hsyaloe.tis.. 2022. 7. 20.
[C++/OpenCV] 공간 주파수, 이산 푸리에 변환, DFT 영상을 데이터로 표현하는 데에는 크게 두 가지 영역으로 나누어 설명한다. 화소값이 직접 표현된 공간 영역과 우주 공간과 같은 변환 영역이다. 변환 영역은 직교 변환에 의해 얻어진 영상 데이터의 다른 표현이다. 여기서는 화소값이 직접 표현되는 것이 아니고 변환 계수(coefficient)로 표현된다. 대표적인 변환은 DCT(Discrete Cosine Transform)와 DFT(Discrete Fourier Transform)이 있다. 공간 주파수란? 영상 신호에서의 주파수는 공간상에서 화소 밝기의 변화율이라 할 수 있다. 이런 의미에서 공간 주파수라는 표현을 사용한다. 공간 주파수는 밝기가 얼마나 빨리 변화하는가에 다라 고주파 영역과 저주파 영역으로 분류한다. - 고주파 영역: 화소 밝기가 급변하는 영.. 2022. 7. 19.
[OpenCV] PCA, Eigenface 이번에는 PCA를 이용한 Eigenface에 대한 소개를 하겠다. PCA에 대한 자세한 내용은 아래 링크에 설명해 놓았으니 참고하길 바란다. https://hsyaloe.tistory.com/29 [OpenCV]PCA PCA 아래에 있는 얼굴 영상을 위한 적절한 기술자는 무엇일까? 영상의 화소값 자체를 특징으로 삼으면 영상을 잘 설명할 수 있을까? 위 영상은 화소가 150X150개 이므로 22,500 차원의 특징 벡터가 생 hsyaloe.tistory.com Eigenface 데이터셋 내의 얼굴 영상들의 고유 얼굴(Eigenface)를 찾는 알고리즘을 Eigenface라 한다. 이 알고리즘을 얼굴 인식 영역까지 확장할 수 있는데, 컴퓨터 비전에서 PCA를 가장 혁신적으로 활용한 사례라고 볼 수 있다. 그.. 2022. 7. 19.
[OpenCV] PCA (Principal Component Analysis), 주성분 분석이란 무엇일까? [OpenCV] PCA (Principal Component Analysis), 주성분 분석이란 무엇일까? 아래에 있는 얼굴 영상을 위한 적절한 기술자는 무엇일까? 영상의 화소값 자체를 특징으로 삼으면 영상을 잘 설명할 수 있을까? 위 영상은 화소가 150X150개 이므로 22,500 차원의 특징 벡터가 생성된다. 이를 특징으로 사용하여 영상을 설명하기엔 너무 거대하다. 이런 상황에서 효과적으로 사용할 수 있는 기법이 주성분 분석(PCA: Principal Component Analysis) 이다. 이 기법은 $D$차원의 특징 벡터를 정보 손실을 최소로 유지하며 $d$ 차원으로 줄이는 것이다. $(D > d)$ 1. 원리 그림 1. 은 주성분 분석의 처리 과정을 보여준다. 먼저 학습 집합을 이용하여 특징.. 2022. 7. 18.
[Python/OpenCV] 디렉터리에서 이미지 데이터셋 가져와 .npy 로 저장하기 이번 시간에는 파일 시스템 디렉터리에서 이미지 데이터셋을 가져오는 방법에 대해 알아본다. 아래는 dir_path에 있는 모든 이미지 파일들을 읽어와서 input_data.npy파일에 저장하는 코드이다. 라인 별 설명은 주석을 참고하길 바란다. import os import numpy as np from PIL import Image # 데이터셋 경로 dir_path = "./dataset/with_mask/" # 디렉토리 내 모든 파일 가져오기 img_list = os.listdir(dir_path) # .png 파일만 가져와서 리스트로 저장 img_list_jpg = [img for img in img_list if img.endswith(".png")] img_list_np = [] for i in .. 2022. 5. 10.
[Python/OpenCV] Perspective Transform(투시 변환) Perspective Transform - 직사각형 형태의 영상을 임의의 볼록 사각형 형태로 변경할 수 있는 변환 - 원본 영상에 있던 직선은 결과 영상에서 그대로 유지되지만, 두 직선의 평행 관계는 깨질 수 있음 - 어파인 변환보다 자유도가 높음 위 그림은 점 네 개의 이동 관계에 의해 결정되는 투시 변환을 나타낸다. 투시 변환은 직선의 평행 관계가 유지되지 않기 때문에 결과 영상의 형태가 임의의 사각형으로 나타난다. 점 하나의 이동 관계로부터 x 좌표에 대한 방정식 하나와 y 좌표에 대한 방정식 하나를 얻을 수 있으므로, 점 네 개의 이동 관계로부터 여덟 개의 방정식을 얻을 수 있다. 이 여덟 개의 방정식으로부터 투시 변환을 표현하는 파라미터 정보를 계산할 수 있다. 그러나, 투시 변환은 좌표 계산의.. 2022. 5. 6.