일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래머스
- 스프링
- 해시
- nestjs typeorm
- C언어
- Nodejs
- nestjs auth
- thymeleaf
- 시스템호출
- AWS
- OpenCV
- 알고리즘
- 가상면접사례로배우는대규모시스템설계기초
- 코테
- 구조체배열
- 카카오
- 컴포넌트스캔
- spring boot
- @Autowired
- git
- 카카오 코테
- TypeORM
- C++
- nestJS
- python
- 코딩테스트
- Spring
- 카카오 알고리즘
- 파이썬
- @Component
- Today
- Total
목록C++ (18)
공부 기록장 💻
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH 12. 레이블링과 외곽선 검출 정리 레이블링 이진화를 수행하면 주요 객체와 배경 영역을 구분할 수 있다. 객체와 배경을 구분하였다면, 이제 다시 각각의 객체를 구분하고 분석하는 작업이 필요하다. 이 때 사용하는 기법이 레이블링(labeling) 기법으로, 이진 영상에서 흰색으로 구분된 각 객체 픽셀 집합에 고유의 번호를 매기는 작업으로 연결된 구성 요소 레이블링(connected componetns labeling) 이라고도 한다. 레이블링 기법을 이용해 각 객체의 위치와 크기, 모양 등 정보를 추출하고 특징을 분석하는 작업은 객체 인식을 위한 전처리 과정으로 자주 사용된다. 영상의 레이블링은 일반적으로 이진화된 영상에서 수행되며, 이때 검은색 픽셀..
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH 11.이진화와 모폴로지 정리 모폴로지 연산 (Morphology) 모폴로지 연산은 영상 내부 객체의 형태와 구조를 분석하고 처리하는 기법이다. 이는 그레이스케일 영상과 이진 영상에 모두 적용 가능하지만, 주로 이진화된 영상에서 객체의 모양을 변형하는 용도로 사용된다. 이진 영상에서 사용되는 기본적인 모폴로지 연산 동작에 대해 이해해보고, 모폴로지 함수 사용 방법에 대해 알아보자. 이진 영상의 침식과 팽창 모폴로지(Morphology)는 형태 또는 모양에 관한 학문을 의미한다. 영상 처리 분야에서 모폴로지는 영상에서 객체의 형태 및 구조에 대해 분석하고 처리하는 기법을 의미하며, 수학적 모폴로지(mathematical morphology)라고도 한다...
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH 11.이진화와 모폴로지 정리 영상의 이진화 (Binarization) 영상의 이진화 (binarization) 은 영상의 각 픽셀을 두 개의 부류로 나누는 작업이다. 이는 그레이스케일 영상의 픽셀 값을 0 또는 255로 변환하는 기법인데, 이는 영상에서 관심있는 객체 영역 (ROI, Region of Interest) 과 배경 영역을 구분하거나 관심 영역과 비관심 영역으로 구분하는 용도로 널리 사용된다. 이진화가 적용된 이진 영상은 보통 흰색과 검은색 픽셀로만 구성된다. 아래가 다양한 영상에 대해 이진화를 수행한 결과이다. 윗줄은 그레이스케일 영상이고, 아래 줄은 적절한 방법으로 이진화가 수행된 결과 영상이다. (a)의 경우 왼쪽에 위치한 흑백 사각..
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH9. 에지 검출과 응용 정리 이번엔 영상에서 추출한 에지 정보를 이용해 영상에서 직선 또는 원을 검출해보자. 컴퓨터 비전에서 직선 검출은 주로 허프변환 기법을 사용한다. 기본적인 허프 변환 이론과 직선 검출에 적용되는 방법, 그리고 원을 검출하기 위해 사용되는 허프 그래디언트 방법까지 이해해보자. 허프 변환 직선 검출 직선은 영상에서 찾을 수 있는 많은 특징 중 하나이며 영상 분석에 있어 중요한 정보를 제공한다. 자율 주행 자동차에서 차선을 검출하거나, 수평이 맞지 않는 영상에서 수평선이나 수직선 성분을 찾아내어 자동 영상 회전을 하는 등 다양한 분얃에서 활용된다. 영상에서 직선 정보를 찾기 위해서는 1. 우선 에지를 찾아내야 하고 2. 에지 픽셀들이..
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH9. 에지 검출과 응용 정리 캐니 에지 검출기 소벨 마스크를 이용한 에지 검출 방법은구현이 간단하고 빠르게 동작하여 현재 컴퓨터 비전 시스템에서 사용되고 있지만, 그래디언트 크기만을 기준으로 에지 픽셀을 검출하기 때문에 임계값에 민감하고 에지 픽셀이 두껍게 표현되는 문제점이 있다. 1986년 캐니(J. Canny)는 에지 검출을 최적화 문제 관점으로 접근함으로써 소벨 에지 검출 방법의 단점을 해결할 수 있는 방법을 제시하였다. 캐니는 다음 세가지 항목을 좋은 에지 검출기의 조건으로 제시하였다. 1. 정확한 검출 (Good Detection) : 에지를 검출하지 못하거나, 또는 에지가 아닌데 에지로 검출하는 확률 최소화 필요 2. 정확한 위치 (Good..
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH9. 에지 검출과 응용 정리 마스크 기반 에지 검출 영상을 x, y축 방향으로 편미분 하는 1x3, 3x1 크기의 마스크를 통해 에지를 검출할 수 있는 것 같지만, 사실 대부분의 영상에는 잡음이 포함되어 있어 단순히 1x3, 3x1 마스크를 이용해서 미분을 구할 경우 다소 부정확한 결과가 생성될 수 있다. 따라서 실제 영상에서 미분을 구할 때는 좀 더 큰 크기의 마스크를 사용한다 가장 널리 사용되고 있는 미분 근사 마스크는 소벨 필터(Sobel Filter) 마스크 이다. 아래 그림 (a)는 x축으로 방향으로의 편미분을 구하는 소벨 마스크를, (b)는 y축 방향으로 편미분을 구하는 소벨 마스크이다. (a)에 나타난 미분 마스크는 현재 행에 대해 중앙 ..
OpenCV 4로 배우는 영상 처리와 컴퓨터 비전 CH9. 에지 검출 정리 영상의 에지 검출 영상에서 에지(edge)란 한쪽 방향으로 픽셀 값이 급격하게 바뀌는 부분으로, 픽셀 값의 변화율을 이용해 이를 찾을 수 있다. 2차원 디지털 영상에서 픽셀 값의 변화율을 근사화하여 구하는 방법과 다양한 응용에서 영상의 미분을 구하는 용도로 사용되고 있는 소벨 필터에 대해 알아보자. 미분과 그래디언트 에지란, 픽셀 값이 급격하게 바뀌는 부분으로 어두운 영역에서 갑자기 밝아지거나 반대로 밝은 영역에서 급격히 어두워지는 부분을 말한다. 일반적으로 객체와 배경의 경계, 또는 객체와 다른 객체의 경계에서 에지가 발생한다. 따라서 에지 검출은 컴퓨터 비전 시스템에서 객체의 윤곽을 알아내고, 객체를 판별하기 위한 전처리로 많..
OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 CH8. 영상의 기하학적 변환 정리 영상의 투시 변환 영상의 기하학적 변환 중, 어파인 변환보다 자유도가 높은 투시 변환이 있다. 투시 변환 (Perspective Transform) 은 직사각형 형태의 영상을 임의의 블록 사각형 형태로 변경할 수 있는 변환이다. 원본 영상에 있던 직선은 투시 변환에 의해 결과 영상에서 그대로 직진성이 유지되지만, 두 직선의 평행 관계는 깨어질 수 있다. 투시 변환은 보통 3x3 크기의 실수 행렬로 표현하며, 8개의 파라미터로 표현할 수 있지만, 좌표 계산의 편의상 9개의 원소를 갖는 3x3 행렬을 사용한다. 투시 변환을 표현하는 행렬을 Mp라고 하면, 입력 영상의 픽셀 좌표 (x,y)가 행렬 Mp에 의해 이동하는 결과 ..
OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 CH8. 영상의 기하학적 변환 정리 영상의 기하학적 변환 영상의 기하학적 변환 (Geometric Transform) 은 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업이다. 앞서 배운 영상의 밝기와 명암비 조절, 필터링 등은 픽셀 위치가 고정된 상태에서 값이 변경되었던 반면, 기하학적 변환은 픽셀 값은 그대로 유지하면서 위치를 변경하는 작업이다. 입력 영상에서 (x,y) 좌표의 픽셀을 결과 영상의 (x', y') 좌표로 변환하는 방법은 다음과 같이 고유의 함수 형태로 나타낼 수 있다. 1. 어파인 변환 영상의 기하학적 변환 중에서 어파인 변환 (Affine Transform) 이란 영상을 평행 이동시키거나 회전, 크기 변..
OpenCV 4로 배우는 컴퓨터비전과 머신 러닝 CH7 필터링 정리 영상 필터링 시리즈 영상의 필터링 1 - 필터 마스크 연산과 엠보싱 필터링 (Embossing) https://dream-and-develop.tistory.com/307 영상의 필터링 2 - 블러링과 가우시안 필터링 https://dream-and-develop.tistory.com/308 영상의 필터링 3 - 샤프닝과 잡음 제거 필터링 https://dream-and-develop.tistory.com/309 샤프닝: 영상 날카롭게 하기 블러링과 반대되는 개념인 샤프닝 (Sharpening) 기법은, 사물의 윤곽이 뚜렷하고 선명한 느낌이 나도록 영상을 변경하는 필터링 기법이다. 언샤프 마스크 필터 샤프닝 기법을 구현하기 위해서는 블러..
OpenCV 4로 배우는 컴퓨터비전과 머신 러닝 CH7 필터링 정리 영상 필터링 시리즈 영상의 필터링 1 - 필터 마스크 연산과 엠보싱 필터링 (Embossing) https://dream-and-develop.tistory.com/307 영상의 필터링 2 - 블러링과 가우시안 필터링 (https://dream-and-develop.tistory.com/308 영상의 필터링 3 - 샤프닝과 잡음 제거 필터링 (https://dream-and-develop.tistory.com/309) 블러링: 영상 부드럽게 하기 블러링(Blurring) 이란, 초점이 맞지 않은 사진처럼 영상을 부드럽게 만드는 필터링 기법으로, 스무딩(smoothing)이라고도 한다. 영상에서 인접한 픽셀 간의 픽셀 값 변화가 크지 않은..
OpenCV 4로 배우는 컴퓨터비전과 머신 러닝 CH7 필터링 정리 영상 필터링 시리즈 영상의 필터링 1 - 필터 마스크 연산과 엠보싱 필터링 (Embossing) https://dream-and-develop.tistory.com/307 영상의 필터링 2 - 블러링과 가우시안 필터링 https://dream-and-develop.tistory.com/308 영상의 필터링 3 - 샤프닝과 잡음 제거 필터링 https://dream-and-develop.tistory.com/309 영상의 필터링 영상 처리에서 필터링(filtering) 이란, 영상에서 원하는 정보만 통과시키고 원치 않는 정보는 걸러 내는 작업이다. 영상의 필터링은 보통 마스크(mask) 라 부르는 작은 크기의 행렬을 이용한다. 마스크는 필..
Opencv 4로 배우는 컴퓨터 비전과 머신러닝 CH6 영상의 산술 및 논리 연산 정리 영상의 산술 연산 영상은 일종의 2차원 행렬이므로, 행렬의 산술 연산(arithmetic operation)을 그대로 적용할 수 있다. 즉 두 개의 영상을 서로 더하거나 빼는 연산을 수행함으로써 새로운 결과 영상을 생성할 수 있다. 영상의 덧셈 연산을 수식으로 표현하면 다음과 같다. 두 입력 영상(src1, src2) 에서 같은 위치 픽셀 값을 서로 더하여 결과 영상 픽셀값(dst(x,y)) 으로 설정하는 연산이라 할 수 있다. 덧셈 연산 수행 시, 그레이스케일 최댓값인 255보다 결과값이 커지는 경우가 발생하는데 이러한 경우 결과 영상 픽셀값을 255로 설정하는 포화 연산도 함께 수행해야 한다. 이를 수식으로 좀 더..
Open CV 4로 배우는 컴퓨터 비전과 머신러닝 CH5 영상의 밝기와 명암비 조절 정리 히스토그램 스트레칭 히스토그램 스트래칭(Histogram Stretching) 이란, 영상의 히스토그램이 그레이스케일 전 구간에 걸쳐서 나타나도록 변경하는 선형 변환 기법이다. 보통 명암비가 낮은 영상은 히스토그램이 특정 구간에 집중되어 나타나는데, 이러한 히스토그램을 마치 고무줄을 잡아 늘이듯 펼쳐서 히스토그램 그래프가 그레이스케일 전 구간에서 나타나도록 변환하는 기법이다. 히스토그램 스트레칭을 수행한 영상은 명암비가 높아져서 대체로 선명하고 보기 좋은 사진으로 바뀐다. 히스토그램 스트레칭의 수식은 다음과 같이 표현할 수 있다. Gmax가 입력 영상의 픽셀 값중 가장 큰 그레이스케일 값, Gmin이 가장 작은 그레..
(명품 C++ 프로그래밍 7장) 프렌드 함수 (Friend Function) friend 키워드 : 클래스 외부에 작성된 함수를 클래스 내에 선언하여, 클래스의 멤버함수와 동일한 접근 자격을 부여할 수 있도록 하는 키워드 friend 함수 : 클래스 내에 friend 키워드로 선언된 외부의 함수 - 멤버 함수는 아니므로, 상속되지는 않음 - 클래스의 멤버인 것처럼 클래스의 모든 변수나 함수에 접근 가능 - 프렌드 함수 개수에는 제한이 없음 프렌드 함수가 왜 사용될까? - 클래스의 멤버 함수로는 적합하지 안지만, 클래스의 private, protected 멤버를 접근해야 하는 특별한 경우 - 연산자 함수에서 대표적으로 사용됨 프렌드 함수를 선언하는 경우 3가지 1. 클래스 외부에 작성된 함수를 프렌드로 선..
( 명품 C++ 프로그래밍 Ch 4.1 - 4.5) 객체 포인터 객체에 대한 포인터 변수를 통해 멤버 변수를 읽고 값을 쓰고, 멤버 함수를 호출할 수 있다. 1. 객체에 대한 포인터 변수 선언 2. 객체 주소 지정과 객체 멤버 접근 주소 & 연산자를 이용해 포인터 변수에 객체의 주소를 저장한다. 객체 이름으로 멤버를 접근할 때에는 . 연산자를 사용하지만, 객체 포인터로 멤버를 접근할 때 -> 연산자를 사용한다. class Circle { int radius; public: Circle() :Circle(1){} // 기본 생성자 Circle(int r) { this->radius = r; } // 정수 매개변수를 갖고 있는 생성자 void setRadius(int r) {this->radius = r;}..
(명품 C++ 프로그래밍 ch 4.6) string 클래스 - C++ 표준 라이브러리에서 제공하는 클래스로서, 문자열을 객체로 다룬다. - 문자열을 저장하는버퍼와 함께, 문자열을 다루는 함수, 연산자를 멤버로 가지고 있다. - 문자열의 크기에 맞추어 스스로 메모리크기를 조절한다. string 클래스를 사용하기 위해선 다음 코드가 필요하다. #include using namesapce std; string 객체 생성과 문자열 입력/출력 string 객체 생성 및 출력 스트링 객체를 생성하는 몇 가지 방법이 있다. 1. 빈 문자열 2. 문자열 리터럴로 초기화 3. 다른 스트링 객체를 복사하여 생성 4. C-스트링의 char[] 배열로부터 생성 생성자 설명 예시 1. string() 빈 문자열 string s..
(명품 C++ 프로그래밍 Ch3) - 클래스를 설계하다. - 객체를 생성하고, 객체를 활용한다. - 클래스를 상속 받거나, C++ 라이브러리에서 제공하는 객체를 사용한다. 객체의 캡슐화(encapsulation) - 객체의 구성 요소들을 보호 - 일부 요소의 공개 노출: 정보를 교환하고 통신하기 위함 클래스와 객체 - 클래스(class): 객체를 정의하는 틀 멤버 변수(상태 - state) 멤버 함수(행동 - behavior) - 객체(object): 클래스라는 틀에서 프로그램실행 도중 실존하는 실체(인스턴스-instance) 클래스 생성 - class 키워드 사용하여 클래스 선언 1. 클래스 선언부(class declaration) : 클래스의 모양 정의 class 키워드와 클래스 이름으로 선언 멤버 ..