일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MySQL
- NumPy
- 알고리즘스터디
- 자료구조
- Stack
- dataframe
- programmers
- 선그래프
- 정보처리기사 c언어
- 백준
- 프로그래머스
- python
- 파이썬
- Algorithm
- 데이터시각화
- 알고리즘 스터디
- Join
- queue
- type hint
- 코딩테스트
- 알고리즘
- aws jupyter notebook
- 가상환경
- String Method
- 노마드코딩
- javascript
- openCV
- pandas
- Matplotlib
- Selenium
- Today
- Total
목록분류 전체보기 (206)
조금씩 꾸준히 완성을 향해
코너 검출 특징(feature) 영상으로부터 추출한 유용한 정보 global feature & local feature 코너 검출 방법 엣지 방향이 급격히 변하는 부분 꼭지점, 튀어나온 부분 코너는 다른 지역 특징에 비해 분별력이 높고 영상 전체에 분포 # 코너점 검출 미분 연산자에 의한 엣지 방향 이용 cv2.preCornerDetect(src, ksize) dst의 local optima 값으로 검출 import numpy as np import pandas as pd import matplotlib.pyplot as plt import cv2 src = cv2.imread('./CornerTest.jpg') # 컬러로 이미지 가져오기 gray = cv2.cvtColor(src, cv2.COLOR_B..
CANNY Edge Detector 정확한 검출(Good Detection), 정확한 위치(Good Localization), 단일 엣지(Single Edge) gradient 크기와 방향을 모두 고려하여 좀 더 정확한 엣지 위치를 찾을 수 있음. 총 4 딘계 가우시안 필터링 > gradient 계산 > 비최대 억제(non-maximum suppression) > 이중 임계값을 이용한 히스테리시스 엣지 트래킹 Sobel vs Canny src = cv2.imread('./lena.jpg', cv2.IMREAD_GRAYSCALE) dst = cv2.Canny(src, 100, 200) #Canny gxo = cv2.Sobel(src, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=3) ..
Labeling 배경과 객체를 구분 한 후 레이블링을 이용하여 객체 간 구분 연결 구성 요소 레이블링 (CCL, Connected Component Labeling) 객체 인식을 위한 전처리 과정으로 사용 이진화 영상에서 수행(배경:검은색, 객체:흰색) 연결성 정의에 따라 결과가 달라질 수 있음 # 고전적 레이블링 기법 등가 테이블(Equibalent Table)을 만들면서 영상을 두 번 스캔함으로써 레이블링을 수행 첫번째 스캔에서는 레이블을 전파시키면서 등가 테이블 생성 두번째 스캔에서는 등가 테이블을 참조하여 각 픽셀에 고유의 레이블을 부여 4-이웃 연결성 고려 cv2.connectedComponents : 연결된 compoenets의 개수를 반환하고 labeling을 해준다. cv2.connecte..
활성화 함수(Activation Function) 입력 신호의 총합을 출력 신호로 변환하는 함수 활성화 함수에 따라 출력값이 결정 단층, 다층 퍼셉트론 모두 사용 대표적인 활성화 함수 Sigmoid ReLU tanh Identity Function Softmax 하나의 layer에서 다음 layer로 넘어갈 때는 항상 활성화 함수를 통과 [참고] 여러가지 활성화 함수 https://en.wikipedia.org/wiki/Activation_function Step Function(계단 함수) def step_func(x): if x > 0 : return 1 else: return 0 def step_func_for_numpy(x): y = x > 0 return y.astype(np.int) print..
# 모폴로지 연산 Morphology : 형태 또는 모양에 관한 학문 모폴로지 변환의 팽창(dilation)과 침식(erosion)을 기본 연산으로 사용해 고급 형태학을 적용하는 변환 기법 그레이 스케일 영상, 이진영상 모두 적용 가능 구조 요소( Structuring Element) 다양한 형태를 가지지만 주로 정방형을 사용 구조 요소에 따라 형태가 달라짐 ▶ cv2.getStrucuringElement() shape : element의 모양 morph_rect 사각형 morph_cross 십자 모양 morph_ellipse 타원형 모양 ksize : structuring element 사이즈 => rectangle을 일반적으로 가장 많이 사용 # shape 확인 및 비교 kernel_rect = cv..
Edge 추출 # 미분과 경사도 함수 또는 데이터의 변화율 함수의 순간 변화율 # sobel filter 영상에서의 1차 미분 : 엣지 존재 여부 파악 ▶ sobel 필터 후 나온 원본 gxo 값에 절대 값 + 루트 씌우기 import cv2 import numpy as np import matplotlib.pyplot as plt img = np.zeros(shape=(512, 512), dtype=np.uint8) +255 pt1 = 200, 200 pt2 = 300, 300 src = cv2.rectangle(img, pt1, pt2, (0,0,0), -1) # x방향 y방향으로 sobel 필터 적용 후 이미지 밝기값들 확인해 보기 gx = cv2.Sobel(src, ddepth=-1, dx=1, ..
영상 공간 필터링 원하는 정보는 통과, 나머지는 걸러내는 작업 대표적인 필터 : 잡음 제거, 부드러운 성분 제거 etc 필터(마스크, 커널, 윈도우...)와 합성곱 연산 # 필터링 연산 합성곱 연산(convolution) # Border Type # 블러 필터 ▶ Blur # lena, filter 3 x 3, 7 x 7 src = cv2.imread('./lena.jpg') dst1 = cv2.blur(src, ksize = (3,3), borderType=cv2.BORDER_CONSTANT) dst2 = cv2.blur(src, ksize = (3,3), borderType=cv2.BORDER_REPLICATE) dst3 = cv2.blur(src, ksize = (7,7), borderType=cv..
# 키보드 이벤트 처리 ▶ 키보드 방향키를 누르면 움직이는 도형의 방향 변경 import numpy as np import cv2 # 클래스 정의 class move_circle: def __init__(self, width, height, x, y, R): self.width = width self.height = height self.x = x self.y = y self.R = R self.left, self.right, self.down, self.up = 2, 0, 1, 3 self.direction = self.down self.key = 0 def key_input(self): key = cv2.waitKeyEx(1000) if key == 0x1B: return 0 elif key == 0..
# 히스토그램 import cv2 import numpy as np import matplotlib.pyplot as plt src = np.array([[0,0,0,0], [1,1,3,5], [6,1,1,3], [4,3,1,7]], dtype=np.uint8) #영상으로 지정한 배열 #히스토그램 계산(사이즈 4, 8 / 범위 0~7, 0~4 나누어 계산) hist1 = cv2.calcHist(images=[src], channels=[0], mask=None, histSize=[4], ranges=[0,8]) hist2 = cv2.calcHist(images=[src], channels=[0], mask=None, histSize=[8], ranges=[0,8]) hist3 = cv2.calcHist(..