[소 재료] 2차원 가우스 함수의 그림
머리
바로 사용할 수 있습니다! 업무로 실천 할 수 있습니다! Python에 의한 AI · 기계 학습 · 심층 학습 앱을 만드는 방법의 3장 4항에서 가우시안 필터가 되는 것을 만났다. 전혀 처음 보았기 때문에 여러가지 조사하면,
같다. 어쨌든 윤곽 검출시에 하는 루틴과 같은 것이었습니다.
본편
가우시안 필터는 다음 공식에 따라 이미지의 평활화를 수행합니다.
$$f(x, y) =\frac{1}{2\pi\sigma^2}exp\left(-\frac{x^2 + y^2}{2\sigma^2}\right)$ $
$x, y$는 주목 화소로부터의 거리, $\sigma$는 표준 편차이며, $\sigma$를 크게 할수록 흐림이 단단해지는 것 같습니다.
여기서 심플하게 의심스럽게 생각한 것이, 「원래 이 함수는 누구인가?」라고 하는 것입니다. 최근에는 4차원 이상의 함수나 벡터? 에 어울리는 타이밍도 많아, 그림이 못되어 꽤 이해에 시달리고 있습니다만, 「이것이라면 3차원으로 갈 수 있어!」라고 하는 것으로, matplotlib를 사용해 그래프로 해 보았습니다.
코드
$x,y,\sigma$로부터 값을 돌려주는 가우스 함수의 함수를 준비해, np.arrange로 지정한 공간상에 메쉬 그리드로서 표시하고 있습니다. 3차원 그래프를 간단한 코드로 바삭바삭하게 그릴 수 있는 matplotlib군은 정말 우수합니다.
gaussian.py
import math
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
def gaussian_func(x, y, sigma):
exponent = - (x ** 2 + y ** 2) / (2 * pow(sigma, 2))
denominator = 2 * math.pi * pow(sigma, 2)
return pow(math.e, exponent) / denominator
x = np.arange(-3.0, 3.0, 0.001)
y = np.arange(-3.0, 3.0, 0.001)
X, Y = np.meshgrid(x, y)
Z = gaussian_func(X, Y, 1)
fig = plt.figure(figsize=(10, 10))
ax = Axes3D(fig)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("f(x, y)")
ax.plot_wireframe(X, Y, Z)
plt.savefig("gaussian.jpg")
plt.show()
출력 이미지
이번은 $(x, y) = (0, 0)$를 중심으로 하기 때문에, 거기에서 바깥쪽을 향해 부드럽게 내려가는 형태가 되었습니다. 실제로는 이 중심이 주목 화소이며, 거기로부터 거리가 멀어짐에 따라 흐림이 강해, 원래의 정보가 손상되어 가는군요. 실제의 계산으로서는 화소와 가우시안 함수의 값의 컨벌루션 화려합니다.
후기
어쩌면 20% 정도 밖에 알고 있지 않을까 생각합니다만, 적어도 가우시안 필터가 무엇을 하고 있는 것인지 근심하게 잡을 수 있었습니다.
집합 지식에 감사.
참고 사이트님
Reference
이 문제에 관하여([소 재료] 2차원 가우스 함수의 그림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kensussu/items/5fc113c71b50c6762645텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)