본문 바로가기
반응형

분류 전체보기98

[알고리즘c++] 삽입 정렬(Insertion Sort) 삽입 정렬 요약 카드를 정렬하는 방법과 유사하다 새로운 카드를 기존의 정렬된 카드 사이 올바른 자리를 찾아서 삽입하는 방식이다. 새로 삽입될 카드의 수 만큼 반복하여 정렬 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하며, 자신의 위치를 찾아서 삽입하여 정렬을 완성하는 알고리즘 매 순서 마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 넣는다. 삽입 정렬 알고리즘 두 번째 자료부터 시작하여 앞의 자료들과 비교하여 삽입할 위치를 지정한 후 삽입 즉, 두 번째 자료는 첫 번째 자료, 세 번째 자료는 두 번째와 첫 번째 자료, 네 번째 자료는 세 번째, 번째, 첫 번째 자료와 비교한 후 자료가 삽입될 위치를 찾는다. 자료가 삽입될 위치를 찾았다면 그 위치에 자료를 삽입하기.. 2022. 11. 21.
관심 영역(ROI) ROI란? 영상이나 동영상의 내가 관심 있는 부분을 뜻한다. 영상이나 동영상을 처리 할때 관심영역을 지정하는 것은 매우 중요하다. 관심 영역의 부분만 원하는 처리를 하기 위해서이다. 관심 영역(ROI)를 활용하여 국기 그리기 관심 영역을 설정하여 해당 ROI의 픽셀 값을 변경해 주면 국기를 그릴 수 있다. 간단한 예제를 통해서 국기를 그려보겠다. import numpy as np, cv2 img = np.zeros((500, 700, 3), np.uint8) cv2.imshow("img", img) cv2.waitKey() cv2.destroyAllWindows() 위 소스를 입력하면 zero 함수를 사용했기 때문에 가로 700 세로 500의 3채널 영상을 얻을 수 있다. 이 검은색 영상을 세로를 3등분.. 2022. 11. 16.
논리(비트) 연산 논리(비트) 연산 함수 함수 설명 cv2.bitwise_and(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 논리곱(AND) 연산을 수행한다. cv2.bitwise_or(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 논리합(OR) 연산을 수행한다. cv2.bitwise_xor(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 배타적 논리합(XOR) 연산을 수행한다. cv2.bitwise_not(src[ , dst [ , mask]]) >> dst 설명 :.. 2022. 11. 16.
OpenCV 채널 처리 함수 채널 처리 함수 함수 설명 cv2.merge(mv[ , dst]) >> dst 설명 : 여러 개의 단일채널 배열을 다채널 배열로 합성한다. 인수 설명 mv 합성될 입력 배열 혹은 벡터, 합성될 단일채널 배열들의 크기와 깊이(depth)가 동일해야 함. dst 입력 배열과 같은 크기와 같은 깊이의 출력 배열 cv2.split(m[ , mv] >> mv 설명 : 다채널 배열을 여러 개의 단일채널 배열로 분리한다. 인수 설명 m 입력되는 다채널 배열 mv 분리되어 반환되는 단일채널 배열들의 벡터 *merge와 split은 위에서 설명한 것과 같이 채널을 합치거나 나누어 주는 opencv함수이다. cv2.spilt()을 예를 들면 BGR채널을 B채널, G채널, R채널로 각각 나누어 반환한다. cv2.merge는.. 2022. 11. 3.
OpenCV Python 영상 파일 I/O 처리 이미지 파일 처리 함수 설명 cv2.imread(filename[, flags]) >> retval 지정한 영상 파일로 부터 영상을 적재한 후, 행렬로 반환한다. 인수 설명 filename 적재할 영상 파일 이름(디렉터리 구조(폴더 위치) 포함) flags 적재한 영상을 행렬로 반환될 때 컬러 타입을 결정하는 상수 cv2.imwrite(filename, img[, params]) >> retval 설명 : img 행렬을 지정한 영상파일로 저장한다. 인수 설명 filename 저장할 영상파일 이름(디렉터리 구조(폴더 위치) 포함), 확장자명에 따라 영상파일 형식 결정 img 저장하고자 하는 행렬(영상) params 압축 방식에 사용되는 인수 쌍(paramld, paramValue) 영상파일 읽기 소스 코드.. 2022. 10. 6.
c++ 백준 2747 피보나치 수 피보나치 수 알고리즘 분류 구현 문자열 https://www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8,.. 2022. 9. 25.
c++ 백준 9086 문자열 문자열 알고리즘 분류 구현 문자열 https://www.acmicpc.net/problem/9086 9086번: 문자열 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으 www.acmicpc.net 문제 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오. 입력 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으며 문자열의 길이는 1000보다 작다. 출력 각 테스트 케이스.. 2022. 9. 25.
c++ 백준 10178 할로윈의 사탕 할로윈의 사탕 알고리즘 분류 수학 사칙연산 https://www.acmicpc.net/problem/10178 10178번: 할로윈의 사탕 할로윈데이에 한신이네는 아부지가 사탕을 나눠주신다. 하지만 한신이의 형제들은 서로 사이가 좋지않아 서른이 넘어서도 사탕을 공정하게 나누어 주지 않으면 서로 싸움이 난다. 매년 할로윈 www.acmicpc.net 문제 할로윈데이에 한신이네는 아부지가 사탕을 나눠주신다. 하지만 한신이의 형제들은 서로 사이가 좋지않아 서른이 넘어서도 사탕을 공정하게 나누어 주지 않으면 서로 싸움이 난다. 매년 할로윈데이때마다 아부지는 사탕을 자식들에게 최대한 많은 사탕을 나누어 주시기 원하며 자신에게는 몇개가 남게되는지에 알고 싶어 하신다. 이런 아부지를 도와서 형제간의 싸움을 막아보자... 2022. 9. 24.
영상의 특징 검출 기법 엣지(Edge) 엣지(Edge, 경계선)는 영상의 두드러진 경계 영역으로 영상 내 물체에 대한 모양, 크기, 텍스쳐 등의 많은 정보를 알려준다. 일반적으로 엣지는 영상 내 물체와 배경 같의 밝기값 차이(gradient, 그래디언트)가 갑자기 변하는 지점으로, 이 지점을 검출하기 위해서는 수학적으로 미분 연산자를 이용하면 된다. 엣지 검출 방법 엣지 검출을 위한 연산 방법 로버트 크로스 엣지 검출기(Roberts Cross Edge Detector) 소벨 엣지 검출기(Sobel Edge Detector) 프르윗 엣지 검출기(Prewitt Edge Detector) 캐니 엣지 검출기(Canny Edge Detector) 라플라시안 엣지 검출기(Laplacian Edge Detector) 엣지 검출을 위한 연.. 2022. 8. 23.
영상의 공간적 필터링 기법 - 언샤프 필터링(Unsharp Filtering) 공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다. 컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다. 평균 필터링(Mean Filtering) 중간값 필터링(Median Filtering) 가우시안 필터링(Gaussian Filtering) 보존 스무딩(Conservative Smoothing) 언샤프 필터링(Unsharp Filtering) 언샤프 필터링이란? 언샤프 필터링은 영상의 에지와 같은 고주파 성분을 강조(enhancing)하는 필터링 방법으로 선명하지 않은(blurred) 영상의 .. 2022. 8. 12.
영상의 공간적 필터링 기법 - 보존 스무딩(Conservative Smoothing) 공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다. 컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다. 평균 필터링(Mean Filtering) 중간값 필터링(Median Filtering) 가우시안 필터링(Gaussian Filtering) 보존 스무딩(Conservative Smoothing) 언샤프 필터링(Unsharp Filtering) 보존 스무딩(Conservative Smoothing) 보존 스무딩은 입력 영상의 픽셀 값이 주변 픽셀과 비교했을 때 너무 높거나 너무 낮은 경우 잡음으.. 2022. 8. 11.
넘파이(Numpy) 구조, 차원을 변경, numpy.reshape 함수 편리하게 배열과 차원을 변형해주는 reshape resahpe 함수는 np.reshape(변경할 배열이름, 차원)또는 배열이름.reshape(차원)으로 사용할 수 있다. 현재의 배열의 차원을 변경하여 행렬을 반화하거나 하는 경우에 많이 이용 되는 함수이다. 예제 소스 코드 1차원 배열을 2차원 배열로 변환 1차원 배열을 3차원 배열로 변환 넘파이 배열의 reshape 함수는 np.reshape(변경할 배열이름, 차원)또는 배열이름.reshape(차원) 두 가지 방법이 있는데 np.reshape는 리스트에도 적용되지만 배열이름.reshape(차원)은 일반 리스트에는 적용 안되고 넘파이 배열의 차원을 바꿀때 사용할 수 있다. 인덱싱도 확인할 수 있는데 위처럼 b[0]을 확인한 결과 값을 알 수 있고, b[0.. 2022. 8. 10.
Numpy란 무엇인가?(넘파이의 이해) Numpy(넘파이) 소개 리스트는 많은 데이터를 관히 할 때 속도가 느리고 메모리를 많이 차지하는 단점이 있다. 배열(array)를 사용하면 적은 메모리로 많은 데이터를 빠르고 편리하게 처리 할 수 있다. 배열과 리스트는 비슷하지만 다음과 같은 점에서 다르다. 모든 원소가 같은 자료형이어야 한다. 원소의 갯수를 바꿀 수 없다. Numpy는 수치 해석용 Python 패키지이다. 다차원의 행렬 자료구조인 ndarray를 지원하여 벡터와 행렬을 사용하는 선형대수 계산에 주로 사용된다. C로 구현된 CPython에서만 사용할 수 있다. Numpy 배열 연산은 C로 구현된 내부 반복문을 사용하기 때문에 파이썬 반복문에 비해 속도가 빠르며 벡터화 연산(vectorized operation)을 이용하여 간단한 코드로.. 2022. 8. 9.
확률적 경사 하강법 확률적 경사 하강법 전체 샘플을 사용하지 않고 하나의 샘플을 훈련 세트에서 랜덤하게 골라 그 샘플에 대해서만 기울기를 계산하는 방법입니다. 샘플 데이터 셋에 대해서만 경사를 계산하므로, 매 반복에서 다뤄야 할 데이터 수가 매우 적어, 학습 속도가 매우 빠릅니다. 하나의 샘플만 대상으로 경사를 계산하므로, 메모리 소모량이 매우 낮으며, 매우 큰 훈련 데이터 셋이라 할지라도 학습 가능합니다다. 확흏적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정을 에포크(epoch)라고 부릅니다. 일반적으로 경사 하강법은 수십, 수백 번 이상 에포크를 수행합니다. 미니배치 경사 하강법 한 개씩 말고 무작위로 몇개의 샘플을 선택해서 경사를 따라 내려가는 방법입니다.\ 여러개의 샘플을 사용해 경사 하강법을 수행하는 방.. 2022. 8. 8.
영상의 공간적 필터링 기법 - 가우시안 필터링(Gaussian Filtering) 공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다. 컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다. 평균 필터링(Mean Filtering) 중간값 필터링(Median Filtering) 가우시안 필터링(Gaussian Filtering) 보존 스무딩(Conservative Smoothing) 언샤프 필터링(Unsharp Filtering) 가우시안 필터링(Gaussian Filtering) 가우시안 필터링은 가우시안 분포(Gaussian distribution)를 따르는 가우시안 커널을 이.. 2022. 8. 7.
영상의 공간적 필터링 기법 - 중간값 필터링(Median Filtering) 공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다. 컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다. 평균 필터링(Mean Filtering) 중간값 필터링(Median Filtering) 가우시안 필터링(Gaussian Filtering) 보존 스무딩(Conservative Smoothing) 언샤프 필터링(Unsharp Filtering) 중간값 필터링 중간값 필터링은 입력 영상의 현재 픽셀을 중심으로 커널을 씌우고, 커널 안에 포함된 주변 픽셀들을 밝기값 기준으로 정렬하여 중간에 위치한 .. 2022. 8. 6.
로지스틱 회귀 - 다중 분류 https://glorychoi.tistory.com/entry/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80Logistic-Regression 로지스틱 회귀(Logistic Regression) 로지스틱 회귀란? 로지스틱 회귀(logistic regression)는 이름은 회귀이지만 분류 모델입니다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습합니다. z = a * 무게 + b * 길이 + c * 대각선 + d * glorychoi.tistory.com 이진 분류와 다중 분류는 크게 다르지 않습니다. 여기에서도 LogisticRegression 클래스를 사용해 7개의 생선을 분류해 보면서 이진 분류와 차이점을 알아보겠습니다. 로지스틱 회귀.. 2022. 8. 5.
영상의 공간적 필터링 기법 - 평균 필터링(Mean Filtering) 공간적 필터링 기법은 각각의 목적에 따라 적절한 커널(kernel) 혹은 필터(filter)를 정의하고 원본 영상과 컨벌루션(convolution) 연산을 수행하는 것이 일반적이다. 컨벌루션 연산은 입력 영상의 픽셀 밝기 값을 커널의 동일한 위치에 해당하는 픽셀값과 곱하고 모든 값들을 더한값으로 대체하는 방법이다. 평균 필터링(Mean Filtering) 중간값 필터링(Median Filtering) 가우시안 필터링(Gaussian Filtering) 보존 스무딩(Conservative Smoothing) 언샤프 필터링(Unsharp Filtering) 평균 필터링 평균 필터링은 입력 영상의 픽셀 밝기 값을 주변 픽셀들의 밝기값의 평균으로 대체하여 영상을 수무딩(Smoothing) 시키면서 잡음을 줄이는.. 2022. 8. 5.
반응형