1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| class DMSImageQualitySuite: """ DMS/OMS 摄像头图像质量完整测试套件 整合 6 大测试维度 遵循 ISO 标准 """ def __init__(self): self.tests = { 'sfr': SFRMeasurement(), 'distortion': DistortionMeasurement(), 'dynamic_range': DynamicRangeMeasurement(), 'noise': NoiseMeasurement(), 'color': ColorAccuracy(), 'uniformity': UniformityMeasurement(), } self.dms_requirements = { 'sfr_at_nyquist': '> 0.3 (中心和边角)', 'distortion': '< 2%', 'dynamic_range': '≥ 60 dB (10 stops)', 'snr': '> 30 dB @最低工作照度', 'color_delta_E': '< 5 (RGB 模式)', 'uniformity': '> 60%', } def run_full_test(self, test_images: dict) -> dict: """ 运行完整测试套件 Args: test_images: 包含不同测试图卡的图像 Returns: report: 完整测试报告 """ report = { 'timestamp': '2026-08-19', 'standard': 'ISO 12233/17850/14524/15739', 'results': {}, 'summary': 'PASS', } for name, test in self.tests.items(): if name in test_images: if name == 'sfr': for region in ['center', 'corner']: result = test.measure_sfr(test_images[name], region) eval_result = test.evaluate_dms_requirements(result) report['results'][f'{name}_{region}'] = { 'data': result, 'evaluation': eval_result } else: method = getattr(test, 'measure_snr', getattr(test, 'measure_oecf', getattr(test, 'measure_distortion', getattr(test, 'measure_color_accuracy', getattr(test, 'measure_uniformity', None))))) if method: result = method(test_images[name]) eval_result = test.evaluate_dms_requirements(result) report['results'][name] = { 'data': result, 'evaluation': eval_result } failures = [k for k, v in report['results'].items() if '❌' in v.get('evaluation', '')] warnings = [k for k, v in report['results'].items() if '⚠️' in v.get('evaluation', '')] if failures: report['summary'] = f'FAIL: {", ".join(failures)}' elif warnings: report['summary'] = f'WARNING: {", ".join(warnings)}' else: report['summary'] = 'PASS: All tests meet DMS requirements' return report def print_report(self, report: dict): """打印格式化报告""" print("=" * 60) print("DMS/OMS 摄像头图像质量测试报告") print("=" * 60) print(f"标准: {report['standard']}") print(f"日期: {report['timestamp']}") print(f"总结: {report['summary']}") print() for test_name, result in report['results'].items(): print(f"--- {test_name} ---") print(f" {result['evaluation']}") if 'data' in result: for k, v in result['data'].items(): if isinstance(v, (int, float, str)): print(f" {k}: {v}") print()
if __name__ == "__main__": suite = DMSImageQualitySuite() test_images = { 'sfr': np.random.randint(0, 255, (480, 640), dtype=np.uint8), 'noise': np.random.randint(50, 200, (480, 640), dtype=np.uint8), 'uniformity': np.random.randint(80, 150, (480, 640), dtype=np.uint8), } report = suite.run_full_test(test_images) suite.print_report(report)
|