添加高精度模式
This commit is contained in:
parent
b1bcdd5f5f
commit
4b8038b1b2
3
main.py
3
main.py
@ -13,6 +13,8 @@ def parse_args():
|
|||||||
# 可选参数
|
# 可选参数
|
||||||
parser.add_argument('--mode', default='三维模式',
|
parser.add_argument('--mode', default='三维模式',
|
||||||
choices=['快拼模式', '三维模式', '重建模式'], help='处理模式')
|
choices=['快拼模式', '三维模式', '重建模式'], help='处理模式')
|
||||||
|
parser.add_argument('--accuracy', default='medium',
|
||||||
|
choices=['high', 'medium', 'low'], help='精度')
|
||||||
parser.add_argument('--grid_size', type=float, default=800, help='网格大小(米)')
|
parser.add_argument('--grid_size', type=float, default=800, help='网格大小(米)')
|
||||||
parser.add_argument('--grid_overlap', type=float,
|
parser.add_argument('--grid_overlap', type=float,
|
||||||
default=0.05, help='网格重叠率')
|
default=0.05, help='网格重叠率')
|
||||||
@ -30,6 +32,7 @@ def main():
|
|||||||
image_dir=args.image_dir,
|
image_dir=args.image_dir,
|
||||||
output_dir=args.output_dir,
|
output_dir=args.output_dir,
|
||||||
mode=args.mode,
|
mode=args.mode,
|
||||||
|
accuracy=args.accuracy,
|
||||||
grid_size=args.grid_size,
|
grid_size=args.grid_size,
|
||||||
grid_overlap=args.grid_overlap,
|
grid_overlap=args.grid_overlap,
|
||||||
produce_dem=True,
|
produce_dem=True,
|
||||||
|
@ -44,6 +44,7 @@ class PreprocessConfig:
|
|||||||
grid_size: float = 500
|
grid_size: float = 500
|
||||||
# 几个pipline过程是否开启
|
# 几个pipline过程是否开启
|
||||||
mode: str = "快拼模式"
|
mode: str = "快拼模式"
|
||||||
|
accuracy: str = "medium"
|
||||||
produce_dem: bool = False
|
produce_dem: bool = False
|
||||||
|
|
||||||
|
|
||||||
@ -305,7 +306,7 @@ class ImagePreprocessor:
|
|||||||
self.logger.info("预处理任务完成")
|
self.logger.info("预处理任务完成")
|
||||||
|
|
||||||
successful_grid_points = self.odm_monitor.process_all_grids(
|
successful_grid_points = self.odm_monitor.process_all_grids(
|
||||||
grid_points, self.config.produce_dem)
|
grid_points, self.config.produce_dem, self.config.accuracy)
|
||||||
|
|
||||||
self.post_process(successful_grid_points,
|
self.post_process(successful_grid_points,
|
||||||
grid_points, translations)
|
grid_points, translations)
|
||||||
|
@ -128,7 +128,7 @@ class ODMProcessMonitor:
|
|||||||
self.logger.error(f"检查正射影像时发生错误: {str(e)}")
|
self.logger.error(f"检查正射影像时发生错误: {str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def run_odm_with_monitor(self, grid_dir: str, grid_id: tuple, produce_dem: bool = False) -> Tuple[bool, str]:
|
def run_odm_with_monitor(self, grid_dir: str, grid_id: tuple, produce_dem: bool = False, accuracy = 'medium') -> Tuple[bool, str]:
|
||||||
"""运行ODM命令"""
|
"""运行ODM命令"""
|
||||||
self.logger.info(f"开始处理网格 ({grid_id[0]},{grid_id[1]})")
|
self.logger.info(f"开始处理网格 ({grid_id[0]},{grid_id[1]})")
|
||||||
success = False
|
success = False
|
||||||
@ -158,8 +158,15 @@ class ODMProcessMonitor:
|
|||||||
f"--use-hybrid-bundle-adjustment "
|
f"--use-hybrid-bundle-adjustment "
|
||||||
f"--optimize-disk-space "
|
f"--optimize-disk-space "
|
||||||
# f"--feature-type sift "
|
# f"--feature-type sift "
|
||||||
# f"--feature-quality ultra "
|
|
||||||
)
|
)
|
||||||
|
if accuracy == "high":
|
||||||
|
docker_command += (
|
||||||
|
f"--feature-quality ultra "
|
||||||
|
f"--pc-quality ultra "
|
||||||
|
f"--mesh-size 3000000 "
|
||||||
|
f"--mesh-octree-depth 12 "
|
||||||
|
f"--orthophoto-resolution 2 "
|
||||||
|
)
|
||||||
|
|
||||||
# 根据是否使用lowest quality添加参数
|
# 根据是否使用lowest quality添加参数
|
||||||
if use_lowest_quality:
|
if use_lowest_quality:
|
||||||
@ -254,7 +261,7 @@ class ODMProcessMonitor:
|
|||||||
|
|
||||||
return success, error_msg
|
return success, error_msg
|
||||||
|
|
||||||
def process_all_grids(self, grid_points: Dict[tuple, pd.DataFrame], produce_dem: bool) -> Dict[tuple, pd.DataFrame]:
|
def process_all_grids(self, grid_points: Dict[tuple, pd.DataFrame], produce_dem: bool, accuracy: str) -> Dict[tuple, pd.DataFrame]:
|
||||||
"""处理所有网格
|
"""处理所有网格
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -273,7 +280,8 @@ class ODMProcessMonitor:
|
|||||||
success, error_msg = self.run_odm_with_monitor(
|
success, error_msg = self.run_odm_with_monitor(
|
||||||
grid_dir=grid_dir,
|
grid_dir=grid_dir,
|
||||||
grid_id=grid_id,
|
grid_id=grid_id,
|
||||||
produce_dem=produce_dem
|
produce_dem=produce_dem,
|
||||||
|
accuracy=accuracy
|
||||||
)
|
)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
|
Loading…
Reference in New Issue
Block a user