质控因子等级评判测试说明.md 13 KB

质控因子等级评判测试使用说明

一、概述

QualityLevelEvaluationTest 是一个基于质控因子等级的影像质量评判测试用例。与原有的简单通过/不通过评判不同,本测试使用五个质量等级对影像质量进行精细化的评判,并生成详细的质控报告文件。

二、质量等级说明

测试使用以下五个质量等级进行评判:

等级 分数 描述 是否否决项
EXCELLENT (优秀) 5分 图像清晰可辨,能为诊断提供高质量依据
GOOD (良好) 4分 图像清晰明确,略有瑕疵但不影响诊断
MEDIUM (中等) 3分 图像清晰度一般,瑕疵较多,勉强能为诊断提供依据
POOR (差) 2分 图像清晰度很差,瑕疵非常多,不能为诊断提供依据
TERRIBLE (极差) 1分 图像清晰度极差,有全黑、全白等无效影像

三、评判逻辑

3.1 图像指标分析

测试会分析以下图像指标:

  • 亮度 (brightness): 图像的平均亮度值 (0-255)
  • 对比度 (contrast): 图像的对比度值 (0-100)
  • 清晰度/锐度 (sharpness): 图像的锐度值 (0-150)
  • 标准差 (stdDev): 像素值的标准差 (0-60)
  • 伪影比率 (artifactRatio): 伪影占图像的比例 (0-1.0)

3.2 等级判定规则

EXCELLENT (优秀) - 5分

亮度: 20-235
对比度: ≥50
清晰度: ≥100
标准差: ≥40
伪影比率: ≤0.05

GOOD (良好) - 4分

亮度: 15-240
对比度: ≥40
清晰度: ≥80
标准差: ≥30
伪影比率: ≤0.10

MEDIUM (中等) - 3分

亮度: 12-243
对比度: ≥30
清晰度: ≥60
标准差: ≥25
伪影比率: ≤0.15

POOR (差) - 2分 (否决项)

亮度: 10-245
对比度: ≥20
清晰度: ≥40
标准差: ≥20
伪影比率: ≤0.20

TERRIBLE (极差) - 1分 (否决项)

不满足上述任一等级的条件

四、使用方法

4.1 配置测试参数

在测试类中修改以下配置:

/**
 * 测试影像文件路径
 */
private static final String DICOM_FILE_PATH =
    "/Users/geng/qconline/dicom/INST011/1.2.156.14702.1.1005.128.0.20210128094934016/";

/**
 * 质控报告输出目录
 */
private static final String REPORT_OUTPUT_DIR =
    System.getProperty("user.home") + "/qc_reports/";

4.2 运行测试

在 IDEA 中:

  1. 打开 QualityLevelEvaluationTest.java
  2. 右键点击 testQualityLevelEvaluation() 方法
  3. 选择 "Run 'testQualityLevelEvaluation()'"

或者在命令行中:

mvn test -Dtest=QualityLevelEvaluationTest#testQualityLevelEvaluation

4.3 查看结果

测试完成后会:

  1. 控制台输出:实时显示测试过程和结果
  2. 报告文件:在 ~/qc_reports/ 目录下生成详细的质控报告文件

报告文件命名格式:qc_report_YYYYMMDD_HHMMSS.txt

五、测试流程

步骤 1: 解析 DICOM 影像文件

═══════════════════════════════════════════════════════════════════════════════════
步骤 1: 解析 DICOM 影像文件
═══════════════════════════════════════════════════════════════════════════════════

解析结果:
  - 模态 (Modality): CT
  - 检查部位 (Body Part): HEAD
  - 检查项目 (Exam Item): 头颅平扫
  - 体位 (Position): SUPINE
  - 检查描述 (Description): 颅脑CT

步骤 2: 自动匹配质控标准

═══════════════════════════════════════════════════════════════════════════════════
步骤 2: 自动匹配质控标准
═══════════════════════════════════════════════════════════════════════════════════

✅ 找到匹配的质控标准:
  - 标准ID: STD_001
  - 标准代码: CT_HEAD
  - 标准名称: CT头颅平扫
  - 模态: CT
  - 检查部位: HEAD
  - 合格分数: 80 分

步骤 3: 获取质控因子列表

═══════════════════════════════════════════════════════════════════════════════════
步骤 3: 获取质控因子列表
═══════════════════════════════════════════════════════════════════════════════════

共找到 7 个质控因子:
  1. BASIC_4_1 - 有效图像 (权重: 10, 必需: 是)
  2. BASIC_4_2 - 真实人体图像 (权重: 10, 必需: 是)
  3. BASIC_4_3 - 原始完整图像 (权重: 10, 必需: 是)
  4. CT_5_3_1 - CT图像信息完整性 (权重: 15, 必需: 是)
  5. CT_5_4_1_1_1 - 检查范围(颅脑) (权重: 20, 必需: 是)
  6. CT_5_4_1_1_2 - 图像偏中心 (权重: 15, 必需: 否)
  7. CT_5_4_1_1_3 - 重建参数 (权重: 20, 必需: 否)

步骤 4: 基于等级的质控评判

═══════════════════════════════════════════════════════════════════════════════════
步骤 4: 基于等级的质控评判
═══════════════════════════════════════════════════════════════════════════════════

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
检查因子: 有效图像
因子代码: BASIC_4_1
数据源: image_quality
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

图像指标分析完成:
{
  "brightness": 125.5,
  "contrast": 65.2,
  "sharpness": 105.8,
  "stdDev": 42.3,
  "artifactRatio": 0.03
}

等级判定: EXCELLENT - 5分

评判结果:
  - 质量等级: EXCELLENT
  - 等级分数: 5 分
  - 是否否决项: 否
  - 评判依据: 图像清晰可辨,能为诊断提供高质量依据

步骤 5: 质控结果汇总

═══════════════════════════════════════════════════════════════════════════════════
步骤 5: 质控结果汇总
═══════════════════════════════════════════════════════════════════════════════════

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
质控结果汇总
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
质控标准: CT头颅平扫
合格分数: 80 分
实际得分: 92.50 分
质控结果: ✅ 通过 PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

等级分布:
  - 优秀 (EXCELLENT): 3 个
  - 良好 (GOOD): 2 个
  - 中等 (MEDIUM): 1 个
  - 差 (POOR): 1 个
  - 极差 (TERRIBLE): 0 个

步骤 6: 生成质控报告文件

═══════════════════════════════════════════════════════════════════════════════════
步骤 6: 生成质控报告文件
═══════════════════════════════════════════════════════════════════════════════════

✅ 质控报告已生成: /Users/geng/qc_reports/qc_report_20260126_143522.txt

六、报告文件示例

质控报告文件包含以下内容:

╔════════════════════════════════════════════════════════════════════════════════════╗
║                      医学影像质控系统 - 质控因子等级评判报告                      ║
╚════════════════════════════════════════════════════════════════════════════════════╝

报告生成时间: 2026-01-26 14:35:22

═══════════════════════════════════════════════════════════════════════════════════
步骤 1: 解析 DICOM 影像文件
═══════════════════════════════════════════════════════════════════════════════════

影像解析结果:
  - 模态 (Modality): CT
  - 检查部位 (Body Part): HEAD
  - 检查项目 (Exam Item): 头颅平扫
  - 体位 (Position): SUPINE
  - 检查描述 (Description): 颅脑CT

... (详细的质控过程和结果)

═══════════════════════════════════════════════════════════════════════════════════
报告结束
═══════════════════════════════════════════════════════════════════════════════════

报告文件路径: /Users/geng/qc_reports/qc_report_20260126_143522.txt

七、与原有测试的对比

特性 AutoQcStandardMatchTest QualityLevelEvaluationTest
评判方式 通过/不通过(二元) 五级质量等级
评分 简单的权重计算 加权平均 + 等级评分
否决项 不支持 支持(POOR和TERRIBLE为否决项)
图像分析 基本检查 详细的图像指标分析
结果输出 仅控制台 控制台 + 详细报告文件
过程记录 简单日志 详细的过程日志和评判依据

八、常见问题

Q1: 如何修改质量等级的阈值?

A: 在 QualityLevelEvaluationTest.javadetermineQualityLevel() 方法中修改对应的阈值条件。

Q2: 如何添加新的图像指标?

A: 在 analyzeImageMetrics() 方法中添加新的指标计算逻辑。

Q3: 报告文件在哪里?

A: 默认在用户主目录下的 qc_reports/ 文件夹中,可以通过修改 REPORT_OUTPUT_DIR 常量来更改。

Q4: 测试失败怎么办?

A: 检查以下几点:

  1. DICOM 文件路径是否正确
  2. 数据库中是否存在对应的质控标准和因子
  3. OpenCV 库是否正确加载

九、后续扩展

  1. 集成真实的图像分析:使用 OpenCVImageAnalyzer 进行真实的图像分析,而不是模拟数据
  2. 从数据库读取等级配置:从 qc_factor_level_config 表中读取等级配置,而不是硬编码
  3. 支持多种报告格式:除了文本文件,还可以生成 HTML、PDF 等格式的报告
  4. 图表展示:在报告中添加质量等级分布图表

十、技术支持

如有问题或建议,请联系开发团队。