python Gabor 필터 설명
Fourier 변환 은 신호 처리 의 유력 한 도구 로 그림 을 공역 에서 주파수 로 변환 하고 공역 에서 추출 하기 어 려 운 특징 을 추출 할 수 있 습 니 다.그러나 푸 리 에 변환 은 시간 과 위치 에 대한 부분 적 인 정보 가 부족 하 다.
Gabor 변환 은 짧 은 시간 에 창 을 추가 하 는 Fourier 변환(쉽게 이해 하면 특정한 시간 창 에서 Fourier 변환 을 하 는 것)으로 짧 은 시간 에 푸 리 엽 이 중간 창 함 수 를 고 스 함수 로 변환 할 때의 특수 한 상황 이다.따라서 Gabor 필 터 는 주파수 영역 에서 서로 다른 척도,방향 에서 관련 특징 을 추출 할 수 있다.또 가 버 함 수 는 사람의 눈 과 비슷 한 역할 을 하기 때문에 무늬 인식 에 자주 사용 되 고 좋 은 효 과 를 거 두 었 다.
2 차원 공간 에서 삼각함수(a)(예 를 들 어 사인 함수)와 고 스 함수(b)를 중첩 하여 우 리 는 Gabor 필터(c)를 얻 었 다.다음 그림 에서 보 듯 이:
Gabor 함수 해석
2 차원 Gabor 함수 의 수학 표현 식 은 다음 과 같다.
복수 표시:
실수 부분:
허수 부분:
x',y'계산 공식:
공식 에서 각 매개 변수의 의 미 를 소개 합 니 다.
파장λ):Gabor 핵 함수 의 코사인 함수 의 파장 변 수 를 나타 낸다.그것 의 값 은 픽 셀 단위 로 제 정 됩 니 다.보통 2 보다 크 지만 입력 이미지 크기 의 1/5 보다 크 면 안 됩 니 다.
방향θ):Gabor 필터 핵 에서 평행 테이프 의 방향 을 나타 낸다.유효 치 는 0°에서 360°까지 의 실수 이다.
위상 오프셋(ψ):Gabor 핵 함수 의 코사인 함수 의 위상 변 수 를 나타 낸다.그것 의 수치 범 위 는-180°에서 180°이다.그 중에서 0°와 180°에 대응 하 는 방정식 은 원점 과 대칭 되 고-90°와 90°의 방정식 은 원점 의 중심 대칭 에 관 한 것 이다.
길이 와 너비γ):공간 종횡 비 는 Gabor 함수 모양 의 타원 율 을 결정 한다....해 야 한다γ=1 시 모양 은 원형 이다....해 야 한다γ<1 시 모양 은 평행 줄무늬 방향 에 따라 길어진다.보통 이 값 은 0.5 이다.
대역 폭(b):Gabor 필터 의 반 응답 공간 주파수 대역 폭 b 와σ/λ비율σGabor 함 수 를 나타 내 는 고 스 인자 의 표준 차.세 가 지 는 다음 과 같은 관계 가 있다.
σ의 값 은 직접 설정 할 수 없습니다.너비 b 만 변경 할 수 있 습 니 다.대역 폭 의 값 은 반드시 정실 수 여야 한다.보통 1 이다.이때 표준 차 와 파장 의 관 계 는?σ=0.56λ。대역 폭 이 작 을 수록 표준 차이 가 크 고 Gabor 의 모양 이 클 수록 평행 줄무늬 의 수량 이 많 음 을 알 수 있다.
python Gabor 필터 구현
# Gabor
# K_size:Gabor K_size x K_size
# Sigma : σ
# Gamma: γ
# Lambda:λ
# Psi : ψ
# angle: θ
def Gabor_filter(K_size=111, Sigma=10, Gamma=1.2, Lambda=10, Psi=0, angle=0):
# get half size
d = K_size // 2
# prepare kernel
gabor = np.zeros((K_size, K_size), dtype=np.float32)
# each value
for y in range(K_size):
for x in range(K_size):
# distance from center
px = x - d
py = y - d
# degree -> radian
theta = angle / 180. * np.pi
# get kernel x
_x = np.cos(theta) * px + np.sin(theta) * py
# get kernel y
_y = -np.sin(theta) * px + np.cos(theta) * py
# fill kernel
gabor[y, x] = np.exp(-(_x**2 + Gamma**2 * _y**2) / (2 * Sigma**2)) * np.cos(2*np.pi*_x/Lambda + Psi)
# kernel normalization
gabor /= np.sum(np.abs(gabor))
return gabor
python 각도 별 Gabor 필터 그림 만 들 기
import cv2
import numpy as np
import matplotlib.pyplot as plt
# Gabor
# K_size:Gabor K_size x K_size
# Sigma : σ
# Gamma: γ
# Lambda:λ
# Psi : ψ
# angle: θ
def Gabor_filter(K_size=111, Sigma=10, Gamma=1.2, Lambda=10, Psi=0, angle=0):
# get half size
d = K_size // 2
# prepare kernel
gabor = np.zeros((K_size, K_size), dtype=np.float32)
# each value
for y in range(K_size):
for x in range(K_size):
# distance from center
px = x - d
py = y - d
# degree -> radian
theta = angle / 180. * np.pi
# get kernel x
_x = np.cos(theta) * px + np.sin(theta) * py
# get kernel y
_y = -np.sin(theta) * px + np.cos(theta) * py
# fill kernel
gabor[y, x] = np.exp(-(_x**2 + Gamma**2 * _y**2) / (2 * Sigma**2)) * np.cos(2*np.pi*_x/Lambda + Psi)
# kernel normalization
gabor /= np.sum(np.abs(gabor))
return gabor
# define each angle
As = [0, 45, 90, 135]
# prepare pyplot
plt.subplots_adjust(left=0, right=1, top=1, bottom=0, hspace=0, wspace=0.2)
# each angle
for i, A in enumerate(As):
# get gabor kernel
gabor = Gabor_filter(K_size=111, Sigma=10, Gamma=1.2, Lambda=10, Psi=0, angle=A)
# normalize to [0, 255]
out = gabor - np.min(gabor)
out /= np.max(out)
out *= 255
out = out.astype(np.uint8)
plt.subplot(1, 4, i+1)
plt.imshow(out, cmap='gray')
plt.axis('off')
plt.title("Angle "+str(A))
plt.savefig("out.png")
plt.show()
시험 출력 Gabor 필터 이미지opencv(python)에서 Gabor 필터 사용 하기
함수 원형:
retval=cv.getGaborKernel(ksize, sigma, theta, lambd, gamma[, psi[, ktype]])
함수 사용 예시
import numpy as np
import cv2 as cv
# retval = cv.getGaborKernel(ksize, sigma, theta, lambd, gamma[, psi[, ktype]])
# Ksize
retval = cv.getGaborKernel(ksize=(111,111), sigma=10, theta=60, lambd=10, gamma=1.2)
image1 = cv.imread('../paojie.jpg')
# dst = cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
result = cv.filter2D(image1,-1,retval)
cv.imshow('result',result)
cv.waitKey(0)
cv.destroyAllWindows()
실험 결과:참고:
python Gabor 필터 구현
Gabor 필터 파라미터 상세 설명
Gabor 필터 원리 및 opencv 의 실현
python Gabor 필터 에 대한 설명 은 여기까지 입 니 다.더 많은 Gabor 필터 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.