콘텐츠로 바로가기
  • 검색 필드가 비어 있으므로 제안 사항이 없습니다.

PIX4Dengine SDK v1 - 열화상 이미지 처리 방법

이 문서에서는 PIX4Dengine을 사용하여 열화상 이미지를 처리하는 방법을 설명합니다. 진행하기 전에, 열화상 매핑에 대한 구체적인 정보(지원 카메라, 이미지 형식, 이미지 촬영 방법 등)가 나와 있는 " 열화상 이미지 처리" 문서를 먼저 읽어보시는 것을 권장합니다

처리 옵션

열화상 이미지는 일반적으로 RGB 이미지보다 해상도가 훨씬 낮고, 명암 대비도 낮은 경우가 많습니다. 따라서 이러한 상대적으로 특징이 부족한 이미지에는 특정한 처리 옵션이 필요할 수 있습니다.

열화상 이미지 처리를 설정하는 데 있어 좋은 출발점은 현재 사용 가능한 두 가지 열화상 템플릿입니다

  • senseFly의 ThermoMAP 카메라로 촬영한 이미지의 경우 THERMOMAP_CAMERA를 사용합니다.
  • 다른 인기 있는 열화상 카메라(예: FLIR)의 경우 THERMAL_CAMERA를 사용합니다.
참고: 템플릿 사용 방법은 pix4dengine.create_project를 참조하십시오. 일반적으로 두 템플릿 모두 기본 설정값을 사용하면 충분한 디테일을 가진 수직 방향 이미지에 충분합니다. 열화상 템플릿 중 하나를 사용하면 열 정사영상(실질적으로 "온도 지도")이 생성됩니다.

경사 이미지를 보정하려면 AutoOblique 사용해야 합니다.

예:
pix4dengine.options에서 AlgoOption을 가져옵니다
project.set_options((AlgoOption.CameraCalibration.MATCH_STRATEGY,"AutoOblique"))

비스듬한 각도에서 촬영한 이미지는 3D 모델을 재구성하는 데 자주 사용됩니다. 하지만 포인트 클라우드와 메쉬는 온도 분포에 대한 정성적인 정보만 제공한다는 점에 유의해야 합니다. 상대 온도 또는 절대 온도에 대한 정량적인 정보는 열 반사율 맵을 통해서만 얻을 수 있습니다.

보정하기 어려운 프로젝트 수정하기

열화상 이미지는 보정하기가 어려울 수 있습니다. 여기서는 열화상 프로젝트의 보정을 돕는 몇 가지 처리 옵션을 제안합니다.

  • 열화상 이미지는 일반적으로 해상도가 낮습니다. 이미지 배율을 높이면 이 문제를 완화하는 데 도움이 될 수 있습니다. 즉, 키포인트 이미지 배율을 '사용자 지정'하고 이미지 배율 값을 2로 설정하면 됩니다.
예:
project.set_options((AlgoOption.CameraCalibration.KEYPT_IMAGE_SCALE, “Custom”), (AlgoOption.CameraCalibration.IMAGE_SCALE, “2”))
  • 이미지의 지리 위치 정보가 정확하다면 정확한 지리 위치 및 방향 보정 방법을 사용하는 것이 도움이 될 수 있습니다. 그렇지 않은 경우에는 대체 방법을 사용해야 합니다.
예:
pproject.set_options((AlgoOption.CameraCalibration.CALIBRATION_METHOD, “GeolocationAndOrientation”)
  • 특징점이 부족한 열화상 이미지의 경우, 기본 설정보다 고정된 개수의 대상 키포인트를 지정하는 것이 더 나은 결과를 제공할 수 있습니다. 이를 위해서는 키포인트 선택 방법을 '사용자 지정'최대 키포인트 개수를 지정해야 합니다. 일반적으로 약 10,000개의 값이 가장 효과적입니다.
예:
project.set_options((AlgoOption.CameraCalibration.KEYPT_SEL_METHOD, “CustomNumberOfKeypoints”), (AlgoOption.CameraCalibration.KEYPT_NUMBER, 10_000))
  • 열화상 카메라의 모델, 초점 거리 및 픽셀 크기는 이미지 메타데이터에 항상 정확하게 기록되는 것은 아니며, EXIF에 저장된 정보도 모호하거나 부정확할 수 있습니다. 하지만 초점 거리와 픽셀 크기 정보가 신뢰할 수 있다면, 카메라 내부 매개변수를 이미지 메타데이터에서 추출한 값에 가깝게 유지하는 것이 유용합니다. 이를 위해 카메라 내부 최적화 옵션을 ' AllPrior'.
예:
project.set_options((AlgoOption.CameraCalibration.CALIBRATION_INT_PARAM_OPT, “AllPrior”)

열 지도 시각화

열화상 처리 과정에서 생성되는 열 지도는 섭씨 온도를 나타내는 단일 밴드 부동 소수점 값을 포함하는 TIFF 이미지입니다. 부동 소수점 TIF 이미지를 로드할 수 있는 모든 소프트웨어로 이러한 파일을 열 수 있습니다. 아래에서는 Engine SDK를 사용하여 열화상 프로젝트를 생성 및 처리하는 방법과 무료로 제공되는 Python 라이브러리를 사용하여 결과 지도를 로드하는 방법을 보여주는 기본적인 예제를 제공합니다.

예:
`create_project` 함수를
`pix4dengine.processing` 모듈에서 `Pipeline` 함수를
, `Processing.constants.processing` 모듈에서 `ProcessingTemplate` 함수를 가져오고,
`get_available_output` 함수를
`exports` 모듈에서

함수를 가져오고, `rasterio`
에서 `matplotlib.pyplot` 함수를 plt로 가져오고
`numpy` 함수를 np로 가져옵니다. `

모듈

images_dir=IMG_DIR, template=ProcessingTemplate.THERMAL_CAMERA)` `
pipeline

Pipeline(project=project)` `pipeline.run()` `out_path = get_available_output(project,
"all")[ExportOption.Index.REFLECTANCE]` `

thermal_tiff = rasterio.open(out_path)` `
map_data = np.ma.array(thermal_tiff.read(1), mask=thermal_tiff.read(2) == 0)` `

fig = plt.figure()`

axes = fig.add_subplot(111)
axes.set_aspect("equal")

img = axes.imshow(map_data, extent=thermal_tiff.bounds, vmin=0, vmax=30)
colorbar = plt.colorbar(img)
colorbar.set_label("섭씨")

axes.set_xlabel("동경")
axes.set_ylabel("북경") axes.set_xlim
(1.1e6, 2.2e6)
axes.set_ylim(2.3e6, 3.6e6)
plt.show()

thermal.png