본문 바로가기

컴퓨터 비전

(9)
prewitt, sobel, canny 구현(python) 학습한 prewitt, sobel, canny에 대해 python으로 구현을 해봅시다. Code import cv2 import time import numpy as np import math from matplotlib import pyplot as plt def padding(img, n): x, y = img.shape # original image size padding_img = np.zeros((x+2*n, y+2*n)) # consider up,down,left,right padding_img[n:x+n, n:y+n] = img # zero padding return padding_img def edge_detection(img, mask1, mask2, threshold): img = pa..
Edge Detection Prewitt -1차 미분을 활용 -1 0 1 -1 0 1 -1 0 1 Sobel -Prewit에서 가운데 값에 가중치를 줌 -1 0 1 -2 0 2 -1 0 1 2D Laplacian filter -Zero Crossing (Threshold가 0이면 편함) -2차 미분활용 -오류를 줄이기 위해 Gaussian Filter 적용후 사용(LOG) 0 1 0 1 -4 1 0 1 0 Canny edge -소벨로 edge strength와 orientation 결정후 알고리즘 적용 -Robust, systemic Hough Transform(허프 변환) -Transform x,y domain to a,b domain(y = ax + b) -한점은 다른 관점의 좌표계에서 직선에 대응 -> 직선 또는 곡선들의 교..
Interpolation Forward Mapping -인풋의 모든 지점에 대해 아웃풋을 매칭 -아웃풋 영상이 정수좌표가 아니라서 실패하거나 어떤 지점은 채워지지 않음 → Hole 발생 Backward(Inverse) Mapping -아웃풋의 모든 지점에 대해 인풋을 매칭 -마찬가지로 Hole이 발생하나 Interpolation 알고리즘으로 해결가능(따라서 무조건 Backward로 사용) Interpolation(보간법) -Nearest neighbor(NN) interpolation: 가장 가까운것으로 round -Bilinear interploation: 일차식의 직선형태로 추정 -Bicubic interploation: 3차식의 곡선형태로 추정
히스토그램과 이진화 히스토그램(histogram) -값들에 대한 빈도, 영상의 특성파악가능 -히스토그램 평활화(histogram equalization) -동적 범위를 늘려서 영상의 선명하게 함 -영상의 CDF를 이용하면됨. 즉 CDF가 Tranfer Function이므로 x를 CDF(x) 값으로 변환.(그래프로 확인가능) 이진화 -어떤 적절한 값을 기준으로 영상을 0과 1로 나눌때 사용 -오츄(Otsu) 알고리즘 -양분된 분산이 가장 작도록 하는 기준값을 찾는 알고리즘
정확률과 재현율 완벽정리 이거 정말 헷갈리는 개념인데요. 그냥 블로그에 위키백과만 가져와서 붙여넣기한 포스팅만 보면 완전히 헷갈립니다. 이 포스팅을 보시면 완벽히 이해되실 겁니다. 가장 중요한게 모델의 예측(긍정,부정)과 진리표 입니다. 왜 중요하냐면 성능지표가 두가지 관점이기 때문입니다. True Positive(TP) : 참인 긍정 (진리표: 참) False Positive(FP) : 틀린 긍정 (진리표: 거짓) False Negative(FN) : 틀린 부정 (진리표: 참) True Negative(TN) : 참인 부정(진리표: 거짓) 여기서 우리는 모델의 성능을 알고 싶습니다. 일반적으로 맞는걸 찾는것에 관심이 많기때문에 모델의 성능은 정확률과 재현율을 가장 많이 씁니다. 정확률은 쉽습니다. 모델이 긍정으로 찾은것중에 실..
mean shift 직접 구현하기(python) Mean Shift 이번 포스팅에서는 mean shift 알고리즘을 직접 구현해보도록 하겠습니다. 산 정상을 가장 빨리 도착하는 방법은 등고선 지도에서 선이 조밀한 곳을 직선거리로 가는 방법일 것입니다. 이처럼 어떤 값의 분포중심을 찾는 방법이 mean shift (평균 이동) 알고리즘 입니다. 구현방법은 데이터 중심으로부터 반경 R안에 있는 전체 데이터의 무게중심을 구하고 중심을 무게중심으로 이동시켜 다시 그 과정을 수렴할때까지 반복하면 됩니다. 따라서 k means 알고리즘과 달리 사람이 직접 k개로 데이터를 나누지 않아도 적절히 세그멘테이션이 가능합니다. 하지만 모든 데이터에 대해 수렴점을 찾기때문에 시간이 오래 걸리고 탐색 윈도우 반경을 얼마로 설정해야할지는 정해야 합니다. 너무 작으면 local..
kmeans 직접 구현하기(python) 이번 포스팅에서는 kmeans 알고리즘을 직접 구현해보는것 위주로 리뷰하겠습니다. kmeans는 임의로 중심을 정하는 부분과 모든 데이터에 대해서 중심 거리를 각각 구해서 가장 거리가 작은 중심으로 그룹핑하고 또 각각의 그룹마다 다시 평균을 구하고 반복하는데 평균이 변화가 거의없이 수렴하면 종료합니다. 자세한 사항은 위키백과를 참고해주세요. https://ko.wikipedia.org/wiki/K-%ED%8F%89%EA%B7%A0_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 k-평균 알고리즘 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. k-평균 알고리즘(K-means clustering algorithm)은 주어진 데이터를 k개의 클러스터로 묶는 알고리즘으로..
SIFT 직접 구현하기(python) 컴퓨터 비전 책을 통해서 배운 SIFT 특징점 검출 알고리즘을 python으로 직접 구현 해봅시다. SIFT에 대한 개념은 위키백과에 자세히 설명돼 있습니다. https://en.wikipedia.org/wiki/Scale-invariant_feature_transform Scale-invariant feature transform - Wikipedia From Wikipedia, the free encyclopedia Feature detection algorithm in computer vision The scale-invariant feature transform (SIFT) is a computer vision algorithm to detect, describe, and match local f..