인공지능 74

[CV - Python] 가우시안 필터의 성질

가우시안 필터는 이미지의 전체적인 구조를 떨어뜨리지 않고, 유지하면서 스케일을 크게하는 효과를 가지고 있다. 즉 샘플링에 따른 이미지 정보의 손실을 최소화 하면서, 해당 스케일에서의 이미지 구조를 잘 보존하고 있다. 지금까지 알려진 필터 중에는 가우시안 필터가 유일하다고 한다. 아래는 가우시안 필터를 적용했을 때, 250, : 픽셀들을 그래프로 나타낸 코드이다. import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('Lenna.png', cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (500, 700)) fig, ax = plt.subplots(2, 3, figsize = (9, 9))..

[CV - Python] Gaussian Filtering

코드가 다소 부정확 할 수 있습니다. import cv2 import numpy as np def gaussian_distribution(sigma = 1) -> np.array: x, y = np.meshgrid(np.arange(-4, 5), np.arange(-4, 5)) z = np.exp(-((np.square(x) / (2 * np.square(sigma)) + (np.square(y) / (2 * np.square(sigma)))))) / (2 * np.pi * sigma * sigma) z = np.sum(z, axis = 1) / 2 return z img = cv2.imread('Lenna.png', cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (500..

[CV - python] 2D Partial Derivative for Edge Detection (엣지 검출을 위한 2차원 편미분)

코드가 궁금하다면 댓글을 남겨주세요. import numpy as np import cv2 img = cv2.imread('test4.jpg', cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (400, 600)) new_x = np.zeros(img.shape) new_y = np.zeros(img.shape) img = np.pad(img, (1, 1), 'constant', constant_values = 0) mask_x = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) mask_y = np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]]) for i in range(1, img.shape[0] - m..

[CV] Camera & Optics

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.09.22 - [Computer Science/Computer Vision] - [CV] 빛의 속성 (Properties of Light) [CV] 빛의 속성 (Properties of Light) 1. What is Light?, Light Field EMR (Electromagnetic radiation)은 공간의 길을 따라 이동합니다. 이때 \(\lambda\)를 알고 있으면 R(\(\lambda\))를 통해 power을 알 수 있다고 합니다. 아무튼 여기서 나오는.. hi-guten-tag.tistory.com 1. Camera Structure 카메라의 구조와 용어에 대해 간략하게 알아보겠습니다. 카메라는 사람의 눈을 그대로 재현했다고 할 수 ..

[CV] 빛의 속성 (Properties of Light)

1. What is Light?, Light Field EMR (Electromagnetic radiation)은 공간의 길을 따라 이동합니다. 이때 \(\lambda\)를 알고 있으면 R(\(\lambda\))를 통해 power을 알 수 있다고 합니다. 아무튼 여기서 나오는 함수 하나가 있는데 Plenoptic Function입니다. Plenoptic Function은 공간 상의 한 점을 통과하는 빛의 세기 정보를 표현하기 위해서, 빛이 통과되는 3차원의 위치, 각도, 빛의 파장, 시간 등의 변수를 필요로 합니다. \(p = R(X, Y, Z, \theta, \phi, \lambda, t)\) 이런 수식으로 나타납니다. X, Y, Z는 공간상의 3차원의 위치이고, \(\theta, \phi\)는 빛의 ..

[머신러닝 - Python] SIgmoid 계층 구현 (Sigmoid Class Implementation)

1. Sigmoid 함수 sigmoid 함수는 다음과 같습니다. \(y = \frac{1}{1 + exp(-x)}\) 이때 sigmoid 함수를 계산 그래프로 표현하면 아래의 사진과 같습니다. 숝 sigmoid에는 +, * 말고 새로운 exp, / 노드가 추가 되었습니다. 이때 주의해야 할 점은 계산 할 때는 국소적 미분으로 계산해야 한다는 점입니다. 해당 노드는 해당 노드의 미분 값만 계산해야 합니다. 1 단계 / 노드, 즉 \(y = \frac{1}{x}\)를 미분하면 다음 식이 됩니다. \(\frac{\partial y}{\partial x} = -\frac{1}{x ^ 2} = -y^2\) 따라서 상류에서 흘러온 값에 \(-y^2\)을 곱해서 하류로 보냅니다. 여기서 주의해야 할 점은 순전파때 사..

[머신러닝 - Python] ReLU 계층 구현 (ReLU class implementation)

1. ReLU 함수 \(y = \left\{\begin{matrix} x \,\, (x > 0) \\ 0 \,\, (x\leq 0) \end{matrix}\right.\) 이므로 x에 대한 y의 미분은 다음과 같습니다. \(\frac{\partial y}{\partial x} = \left\{\begin{matrix} 1 \,\, (x > 0) \\ 0 \,\, (x\leq 0) \end{matrix}\right.\) 따라서 순전파 때 입력의 크기인 x가 0보다 크면 역전파는 상류의 값을 그대로 흘려보냅니다. 반면, 순전파 때 x가 0보다 작으면 역전파 때는 하류로 신호를 보내지 않습니다. 2. 구현 class Relu: def __init__(self) -> None: self.mask = None d..

[CV] sparse dictionary learning

https://bskyvision.com/entry/%EC%8A%A4%ED%8C%8C%EC%8A%A4-%EC%82%AC%EC%A0%84-%ED%95%99%EC%8A%B5sparse-dictionary-learning%EC%9D%98-%EA%B9%8A%EC%9D%B4-%EC%9E%88%EC%9C%BC%EB%A9%B4%EC%84%9C%EB%8F%84-%EC%89%AC%EC%9A%B4-%EC%9D%B4%ED%95%B4 스파스 사전 학습(sparse dictionary learning)의 깊이 있으면서도 쉬운 이해 오늘은 최근에 논문을 보면서 관심이 생긴 스파스 사전 학습(sparse dictionary learning)에 대해 정리하려고 한다. 스파스 사전 학습은 스파스 코딩(sparse coding)이라는 ..