본문 바로가기
728x90
반응형
SMALL

전체 글 보기262

[파이썬, Python] 컴퓨터 비전(Computer Vision)의 데이터셋 1. 데이터셋(Dataset) 기계 학습 모델을 학습하는데 사용되는 데이터의 모음 데이터셋은 이미지, 오디오, 텍스트, 수치 데이터 등 다양한 데이터형으로 구성 특정 데이터 유형과 데이터셋 크기는 해결되는 문제와 사용 중인 모델 유형에 따라 달라짐 1-1. 데이터셋의 크기 모델이 학습 중에 본 예제의 수 작은 데이터셋: 다양한 예제가 포함되지 않아 과적합 발생 가능성이 높음 대규모 데이터셋: 모델이 충분한 수의 예제를 보고 일반화할 수 있음 1-2. 데이터의 품질 주석(어노테이션)이 잘못 지정되거나 레이블이 지정된 데이터셋은 모델 성능에 부정적인 영향을 줄 수 있음 다양한 개체 변형의 존재, 조명 조건, 배경 등을 포함한 데이터셋의 다양성도 모델의 견고성을 보장하는데 중요 데이터셋은 모든 컴퓨터 비전 프.. 2023. 9. 4.
[파이썬, Python] OpenCV - 레이블링(labeling)과 외곽선 검출 1. 레이블링(labeling) 이진화, 모폴로지를 수행하면 객체와 배경 영역을 구분할 수 있게됨 객체 단위 분석을 통해 각 객체를 분할하여 특징을 분석하고 객체의 위치, 크기 정보, 모양 분석, ROI 추출 등이 가능함 서로 연결되어 있는 객체 픽셀에 고유번호를 할당하여 영역 기반 모양 분석, 레이블맵, 바운딩 박스, 픽셀 개수, 무게중심, 좌표 등을 반환할 수 있게 함 cv2.connectedComponents(영상, 레이블 맵) 레이블 맵: 픽셀 연결 관계(4방향 연결, 8방향 연결..) return: 객체 개수, 레이블 맵 행렬 cv2.connectedComponentsWithStats(영상, 레이블맵) return: 객체 개수, 레이블 맵 행렬, (객체 위치, 가로세로길이, 면적 등 행렬, 무게.. 2023. 9. 2.
[파이썬, Python] OpenCV - 모폴로지 처리, 모폴로지 연산 1. 모폴로지 처리영상의 밝은 영역이나 어두운 영역을 축소, 확대하는 기법모폴로지 구조 요소를 생성cv2.getStructuringElmement(구조 요소의 모양, 사이즈) 구조 요소의 모양cv2.MORPH_RECT: 사각형cv2.MORPH_ELLIPSE: 타원형cv2.MORPH_CROSS: 십자형 1-1. 침식(erosion) 연산이미지를 깎아내는 연산객체 크기는 감소하고 배경은 확대작은 크기의 객체(노이즈)제거 효과가 있음 cv2.erode(영상, 구조요소, 출력영상, 고정점 위치) 1-2.  팽창(dilation) 연산물체의 주변을 확대하는 연산객체가 커지는 연산팽창 연산은 객체 외곽을 확대시키는 연산객체 크기는 증가되고 배경은 감소되는 효과cv2.dilate(영상, 구조요소, 출력영상, 고정점 .. 2023. 9. 2.
[파이썬, Python] OpenCV - 동영상 필터 입히기 💡 문제. 웹캠(또는 동영상)에서 스페이스바를 누를 때마다 '일반영상', '가우시안 필터영상', '케니 필터영상'으로 변환되는 프로그램을 작성해보자. 📄 사용한 동영상 파일 import cv2 import numpy as np cap = cv2.VideoCapture('cat.mp4') def blur_filter(img): img = cv2.GaussianBlur(img, (3, 3), 0) return img def canny_filter(img): med_val = np.median(img) lower = int(max(0, 0.7 * med_val)) upper = int(min(255, 1.3 * med_val)) img = cv2.GaussianBlur(img, (3, 3), 0) img = .. 2023. 9. 2.
[파이썬, Python] OpenCV - 영상의 필터링, 블러링, 엣지(Edge)검출 1. 필터링(filtering) 커널(filter)이라고 하는 행렬을 정의하고, 이 커널을 이밎 위에서 이동시켜 가면서 커널과 겹쳐진 이미지 영역과 연산을 한 후, 그 결과값을 연산을 진행한 이미지 픽셀을 대신하여 새로운 이미지를 만드는 연산 cv2.filter2D(영상, 이미지 깊이, 커널, 중심점 좌표, 추가될 값, 가장자리 화소 처리) 이미지 깊이: -1(입력과 동일) 커널행렬: 3*3, 5*5, ... 가로 세로가 동일한 행렬 사용 중심점 좌표: 기본값은 왼쪽 상단 추가될 값: 행렬연산 후 더해지는 값 가장자리 화소 처리 BORDER_CONSTANT: 000abcdefg000, 가장 자리를 0으로 채움(검정색) BORDER_REPLICATE: aaaabcedfgggg, 가장 자리를 가장 끝 픽셀로.. 2023. 9. 1.
[파이썬, Python] OpenCV - 원하는 ROI 설정 후 투시변환하기 💡 문제. namecard.jpg에 retangle과 circle을 그리고 마우스이벤트를 줘서 칸에 맞추면 투시변환을 해보자. import cv2 import numpy as np import sys def drawROI(img, corners): cpy = img.copy() c1 = (192, 192, 255) c2 = (128, 128, 255) for pt in corners: cv2.circle(cpy, tuple(pt.astype(int)), 25, c1, -1, cv2.LINE_AA) cv2.line(cpy, tuple(corners[0].astype(int)), tuple(corners[1].astype(int)), c2, 2, cv2.LINE_AA) cv2.line(cpy, tuple(c.. 2023. 8. 30.
[파이썬, Python] OpenCV - 영상의 변환 1. 영상의 변환 영상을 구성하는 픽셀의 배치 구조를 변경함으로 전체 영상의 모양을 바꾸는 작업 1-1. 이미지 이동(translate) 원래 있던 좌표에 이동시키려는 거리만큼 덧셈 x_new = x_old + d1 y_new = y_old + d2 이미지 변환 행렬(2*3 행렬) cv2.warpaffine(영상, 2*3 변환행렬, 결과이미지=None, 보간법알고리즘) [ 1 0 d1 0 1 d2 ] 결과: (0, 0) 이면 입력 영상과 크기가 같은 행렬을 반환 보간법알고리즘(가장자리를 어떻게 처리할 것인지) cv2.INTER_LINEAR: 기본값. 인접한 4개 픽셀 값에 거리 가중치 사용 속도가 빠르지만, 퀄리티가 떨어짐 cv2.INTER_NEAREST: 가장 가까운 픽셀 값을 사용 속도가 가장 빠르고.. 2023. 8. 29.
[파이썬, Python] OpenCV - 이미지 유사도 판단 1. 이미지 유사도 픽셀값의 분포가 서로 비슷하다면 유사한 이미지일 확률이 높음 cv2.compareHist(히스토그램1, 히스토그램2, 알고리즘) 알고리즘 cv2.HISTCMP_CORREL: 상관관계(1:완전 일치. -1:완전 불일치, 0: 무관계) cv2.HISTCMP_CHISQR: 카이제곱(0:완전 일치, 무한대: 완전 불일치) cv2.HISTCMP_INTERSECT: 교차(1:완전 일치, 0:완전 불일치) cv2.HISTCMP_BHATTACHARYYA: 밀도함수(0: 완전 일치, 1: 완전 불일치) ✅ img1과 유사도 판단 import cv2 import matplotlib.pyplot as plt import numpy as np img1 = cv2.imread('taekwonv1.jpg') .. 2023. 8. 27.
728x90
반응형
LIST