분류 전체보기 108

[OpenCV] 어파인 변환(Affine Transformation)

어파인 변환의 개념 어파인 변환(affine transformation)이란 영상의 평행 이동, 확대 및 축소, 회전 등의 조합으로 만들 수 있는 기하학적 변환을 나타낸다. 영상을 확대 또는 축소하는 크기 변환과 임의의 각도만큼 회전하는 작업은 다양한 컴퓨터 비전 시스템에서 전처리 과정으로 널리 사용된다. ​ 어파인 변환은 영상을 평행 시키거나 회전, 크기 변환 등을 통해 만들 수 있는 변환을 통칭한다. 영상을 한쪽 방향으로 밀어서 만든 것 같은 전단 변환도 어파인 변환에 포함된다. 영상에 어파인 변환을 적용할 경우 직선은 그대로 직선으로 나타나고, 직선 간의 길이 비율과 평행 관계가 그대로 유지된다. 직사각형 형태의 영상은 어파인 변환에 의해 평행사변형에 해당하는 모습으로 변경된다. ​ 영상의 기하학적..

[OpenCV] 잡음 제거 필터링

영상 처리 관점에서 잡음(noise)란 원본 신호에 추가된 원치 않은 신호를 뜻한다. 영상에서 잡음은 주로 영상을 획득하는 과정에서 발생하며, 디지털 카메라에서 사진을 촬영하는 경우 광학적 신호를 전기적 신호로 변환하는 센서에서 주로 잡음이 추가된다. ​ 카메라에서 획득되는 영산신호는 보통 위와 같은 식으로 표현한다. ​ f(x, y) : 실제로 카메라에서 획득되는 영상 신호 s(x, y) : 디지털 카메라에서 카메라 렌즈가 바라보는 원본 신호 n(x, y) : 영상에 추가되는 잡음 ​ 잡음이 생성되는 방식을 잡음 모델(noise model) 이라고 하며, 다양한 잡음 모델 중 가장 대표적인 잡음 모델은 가우시안 잡음 모델이다. 가우시안 잡음 모델은 보통 평균이 0인 가우시안 분포를 따르는 잡음을 의미한..

[OpenCV] 샤프닝(Sharpening)

샤프닝(sharpening)이란 샤프닝이란 블러링과 반대되는 개념으로, 초점이 잘 맞은 사진처럼 사물의 윤곽이 뚜렷하고 선명한 느낌이 나도록 영상을 변경하는 필터링 기법이다. ​ 이미 촬영된 사진을 초점이 잘 맞은 사진처럼 보이게끔 변경하려면 영상 에지 근방에서 픽셀 값의 명암비가 커지도록 해야한다. 샤프닝을 구현하기 위해서는 블러링된 영상을 사용해야 한다. ​ 부드러워진 영상을 날카로운 영상으로 생성하는 것인데, 여기서 블러링이 적용된 영상을 날카롭지 않아 언샤프(unsharp)라고 하며, 언샤프한 영상을 이용하여 역으로 날카로운 영상을 생성하는 필터를 언샤프 마스크 필터라고 한다. ​ 언샤프 마스크의 과정으로, x축은 픽셀 좌표의 이동, y축은 픽셀 값을 나타낸다. 영상의 에지 부근에서 픽셀 값이 증..

[Algorithm] C++ - 소수 구하기 (제곱근, 에라토스테네스의 체)

소수(Prime Number)란 소수란 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수를 말한다. 아래 표는 100 이하의 소수를 나타내는 표로, 1과 자기 자신 말고 약수가 존재하지 않는다. 총 3가지의 방법으로, 일반 반복문, 제곱근, 에라토스테네스의 체를 이용한 방법을 설명한다. 1. 모든 경우의 수를 전부 나누는 방법 O(n) 이 경우는 판단하는 수를 2부터 그 수까지 모두 나누는 방법이다. 모든 값을 하나하나 약수가 있는지 판단하는 알고리즘으로 구현은 쉽지만 시간 복잡도가 O(n)으로 가장 비효율적이다. bool PrimeNumber(int number) { for(int i = 2; i < number; i++) { // 1개라도 나누어 떨어지면 약수가 존재하므로 false if(n..

Algorithm/이론 2022.11.20

[Algorithm] C - Boyer-Moore 문자열 검색 알고리즘

요약 시간 복잡도 평균 : O(n / m) / 최악 : O(n) 검색하고자 하는 패턴의 마지막 문자부터 앞쪽으로 검사를 진행 일치하지 않는 문자가 있을 경우 Skip 표에 따라 패턴을 옮겨 가면서 검사 각각의 문자를 만났을 때 패턴을 옮길 크기를 저장할 표를 만들어야 함 문자열의 커서는 앞에서 뒤로, 패턴의 커서는 뒤에서 앞으로 역방향으로 검사 Boyer-Moore 알고리즘이란 Boyer-Moore 알고리즘이란 검색하고자 하는 패턴의 마지막 문자부터 앞쪽으로 검사를 진행하면서 일치하지 않는 문자가 있으면 미리 준비한 표에 따라 패턴을 옮길 크기를 정하는 고리즘이다. Booyer-Moore 법은 Brute-Froce나 KMP 보다 효율이 더 우수하기 때문에 널리 사용되는 문자열 검색 알고리즘이다. R.S ..

Algorithm/이론 2022.11.19

[Algorithm] C - KMP(Knuth-Morris-Pratt Algorithm) 알고리즘

요약 시간 복잡도 : 최상 O(mn) 문자열에서 특정 패턴을 미리 찾아내 검색하는 문자열 검색 알고리즘 문자열 검색 시 검사했던 위치 결과를 버러지 않아 효율적으로 검색할 수 있음 문자열 검색 시 불필요한 문자간 비교를 없애기 위해 실패 함수를 사용함 Boyer-Moore 법과 성능이 같거나 좋지 않아 실제로 많이 사용되지 않는 알고리즘 KMP(Knuth-Morris-Pratt Algorithm) 알고리즘이란 KMP 알고리즘이란 문자열 중에서 특정 패턴을 찾아내는 문자열 검색 알고리즘 중 하나이다. 문자열 검색 시 검사했던 위치 결과를 버리지 않고 효율적으로 검색할 수 있는 특징이 있다. 문자열 검색 시 불필요한 문자간 비교를 없애기 위해서 실패 함수를 사용한다. 문자열 검색 방법 아래 예제는 "ZABC..

Algorithm/이론 2022.11.19

[OpenCV] 블러링 기법과 가우시안 필터

블러링 기법 블러링(bluring)이란 마치 초점이 맞지 않은 사진처럼 영상을 부드럽게 만드는 필터링 기법이다. 스무딩(smoothing)이라고도 한다. 영상에서 인접한 픽셀 간의 픽셀 값 변화가 크지 않은 경우 부드러운 느낌을 받을 수 있다. 블러링은 거친 느낌의 입력 영상을 부드럽게 만드는 용도로 사용되거나 영상에 존재하는 잡음의 영향을 제거하는 전처리 과정으로 사용한다. ​ ​ 평균값 필터 블러링 필터 중 단순하고 구현하기 쉬운 평균값 필터(mean filter)가 있다. 평균값 필터란 입력 영상에서 특정 픽셀과 주변 픽셀들의 산술 평균을 결과 영상 픽셀 값에 설정하는 필터이다. 평균값 필터에 의해 생성되는 결과 영상은 픽셀 값의 변화가 줄어들고, 날카로운 에지가 무뎌지며 노이즈의 영향이 크게 사라..

[OpenCV] 필터링 개념과 filter2D함수

영상 처리에서 필터링(filtering)이란 원하는 정보만 통과시키고 원하지 않는 정보는 걸러 내는 작업을 뜻한다. 필터링에는 영상의 노이즈 성분을 걸러 영상을 깔끔하게 만드는 필터가 있고, 부드러운 느낌의 성분을 제거해 영상을 날카로운 느낌이 들도록 하는 필터가 있다. ​ 영상의 필터링은 보통 마스크(mask)라고 부르는 작은 크기의 행렬을 이용한다. 마스크는 필터링의 성격을 정의하는 행렬이며, 커널(kernel), 윈도우(window) 라고도 부른다. 마스크 자체를 필터라고 부르기도 한다. ​ 마스크는 다양한 크기와 모양으로 정의할 수 있으며, 마스크 행렬의 원소는 보통 실수로 구성된다. 1 x 3, 3 x 1 형태의 직사각형 행렬, 5 x 5, 3 x 3 등 형태의 정사각형 행렬, 십자가 모양 등 ..

[OpenCV] 영상의 논리 연산 방법

OpenCV에서 영상의 논리 연산(logical operation)이란 픽셀 값을 2진수로 표현하여 각 비트 단위 논리 연산을 수행하는 것을 의미한다. OpenCV에서는 논리합(OR), 논리곱(AND), 부정(NOT), 배타적 논리합(XOR) 연산을 지원한다. ​ 논리합(OR) : 2개의 입력 비트 중 1개라도 1이면 결과가 1이 되는 연산 논리곱(AND) : 2개의 입력 비트 중 모두 1인 경우만 결과가 1이 되는 연산 부정(NOT) : 입력 비트가 0이면 결과가 1, 1이면 결과가 0이 되는 연산 배타적 논리합(XOR) : 2개의 입력 비트 중 1개만 1인 경우 결과가 1이 되는 연산 ​ 입력 비트 논리 연산 결과 a b OR AND NOT a XOR 0 0 0 0 1 0 0 1 1 0 1 1 1 0..