이 글은 파이썬 기반 포인트 클라우드 특징 계산 방법을 소개한다. 점군은 포인트 간의 관계를 통해, 수직도, 수평도, 법선, 곡률 등 다양한 특징을 수학적으로 계산할 수 있다. 직접 코딩해도 되지만, jakteristics 라이브러리를 이용하면, 쉽게 이 값들을 얻을 수 있다. 이 라이브러리는 다음과 같은 point cloud data 특징을 계산해 준다.
- Eigenvalue sum
- Omnivariance
- Eigenentropy
- Anisotropy
- Planarity
- Linearity
- PCA1
- PCA2
- Surface Variation
- Sphericity
- Verticality
- Nx, Ny, Nz (The normal vector)
점군 특징 중 하나인 법선벡터
설치
설치 및 테스트는 다음과 같다.
python -m pip install -r requirements-dev.txt
python setup.py pytest
사용방법
사용법은 다음과 같다.
jakteristics input/las/file.las output/file.las --search-radius 0.15 --num-threads 4
코딩방법
파이썬을 이용해, 다음과 같이 얻고자 하는 특징을 옵션으로 설정한 후, 함수를 호출해 주면 된다.
from jakteristics import FEATURE_NAMES, extension, las_utils, utils
def compute_features(input_path, output_path):
'''
FEATURE_NAMES = [
"eigenvalue_sum",
"omnivariance",
"eigenentropy",
"anisotropy",
"planarity",
"linearity",
"PCA1",
"PCA2",
"surface_variation",
"sphericity",
"verticality",
"nx",
"ny",
"nz",
"number_of_neighbors",
"eigenvalue1",
"eigenvalue2",
"eigenvalue3",
"eigenvector1x",
"eigenvector1y",
"eigenvector1z",
"eigenvector2x",
"eigenvector2y",
"eigenvector2z",
"eigenvector3x",
"eigenvector3y",
"eigenvector3z",
]
'''
xyz = las_utils.read_las_xyz(input_path)
features = extension.compute_features(xyz, 0.1, feature_names=FEATURE_NAMES)
print(features)
las_utils.write_with_extra_dims(input_path, output_path, features, FEATURE_NAMES)
이 함수를 이용해, las 파일을 이용해 특징을 계산해 본다. 다음과 같이 호출하면 된다.
compute_features('input.las', 'output.las')
클라우드 컴페어를 통해 확인한 결과는 다음과 같다.
출력파일 수직도 확인 결과(청색 - 적색 스키마)
해당 도구에서 scalar 항목을 변경해 보면, 앞서 언급된 점군 특징이 모두 계산되어 있는 것을 확인할 수 있다.
레퍼런스
댓글 없음:
댓글 쓰기