> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 支持软件 TNR/MCTF

> 在 IQ-9075-EVK 和 IQ-8275-EVK 上实现基于 GPU 的运动补偿时域滤波（MCTF），通过降噪和提升运动清晰度来增强预览和视频质量。

<div style={{display:'flex',gap:'8px',flexWrap:'wrap',marginBottom:'16px'}}>
  <span style={{background:'#ede9fe',color:'#5b21b6',padding:'2px 10px',borderRadius:'999px',fontSize:'12px',fontWeight:600}}>IQ-9075-EVK</span>
  <span style={{background:'#ede9fe',color:'#5b21b6',padding:'2px 10px',borderRadius:'999px',fontSize:'12px',fontWeight:600}}>IQ-8275-EVK</span>
  <span style={{background:'#f0fdf4',color:'#166534',padding:'2px 10px',borderRadius:'999px',fontSize:'12px',fontWeight:600}}>GPU 加速</span>
</div>

<CardGroup cols={3}>
  <Card title="GPU" icon="bolt">处理引擎</Card>
  <Card title="NV12_Q08C" icon="file-video">输入格式</Card>
  <Card title="MCTF" icon="filter">降噪</Card>
</CardGroup>

<Note>
  **平台适用范围：**<br />
  SW TNR / MCTF 仅在 **IQ-9075-EVK** 和 **IQ-8275-EVK** 上启用。
</Note>

***

## 01 · 它是什么？

**运动补偿时域滤波（Motion Compensated Temporal Filtering）**——一种基于软件的视频质量滤波器，可跨帧降噪——在 IPE 硬件 MCTF 不可用的情况下运行于 GPU 上。

MCTF 通过降低时域噪声和增强运动清晰度来改善预览和视频质量。软件实现运行在 **GPU** 上，在静态区域执行帧间混合，并应用全局运动补偿变换。

<img src="https://mintcdn.com/qualcomm-prod/mGpYCfBsZaJSFIEo/Technologies/Camera/images/swmctf.png?fit=max&auto=format&n=mGpYCfBsZaJSFIEo&q=85&s=0d16f06c55af1de40ac1da1ea093f24e" style={{borderRadius:'8px', marginBottom:'24px', width:'100%'}} width="511" height="229" data-path="Technologies/Camera/images/swmctf.png" />

***

## 02 · 它控制什么

```
SW MCTF Workflow Pipeline:
Current Frame  →  ME Matrix  →  Warp (prev frame)  →  Alpha Mask  →  Blend  →  Output Frame
Previous Output →  Noise Calc  →  Blend Input  ↗
```

| 阶段        | 作用                        | 跳过后的影响            |
| --------- | ------------------------- | ----------------- |
| 运动估计（ME）  | 计算当前帧与前一帧之间的变换矩阵          | 无运动补偿 → 出现鬼影伪像    |
| Warp（变形）  | 使用 ME 矩阵对前一输出帧进行变形        | 混合错位 → 拖影         |
| Alpha 掩膜  | 区分背景区域与局部运动区域             | 静态噪声未被降低，运动区域过度混合 |
| Blend（混合） | 使用 Alpha 掩膜和噪声估计合并当前帧与前一帧 | 输出视频中可见时域噪声       |

***

<Tip>
  在高运动场景（机器人、汽车）中，降低 MCTF 混合强度可防止快速移动物体出现时域鬼影。
</Tip>

***

## 03 · 验证

<Note>
  使用 SSH 连接到设备控制台。相关说明请参阅 [How To SSH?](https://dragonwingdocs.qualcomm.com/Linux/devices/iq9075-evk/set-up-the-device#connect-over-ssh)。
</Note>

<Steps>
  <Step title="收集用户日志">
    实时监控 CamX 核心配置状态。

    ```bash Log Collection theme={null}
    # On device console
    journalctl -f > /opt/user_log.txt
    ```
  </Step>

  <Step title="收集内核日志">
    捕获 ISP 硬件管理器事件和获取信息。

    ```bash Kernel Logging theme={null}
    dmesg -w > /opt/kernel_log.txt
    ```
  </Step>

  <Step title="使用 sw-tnr=true 运行 GStreamer 流水线">
    使用 `NV12_Q08C` 格式执行流水线并启用软件 TNR 标志。

    ```bash GStreamer (SW MCTF Enablement) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview sw-tnr=true ! \
    video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! \
    v4l2h264enc capture-io-mode=4 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \
    h264parse ! mp4mux ! filesink location=/opt/cam_prev.mp4
    ```
  </Step>

  <Step title="验证日志输出">
    通过检查用户日志中以下确切的日志条目确认功能已激活：

    **CamX 流水线状态：**

    ```text User Log Verification theme={null}
    CamX: [CORE_CFG] 3509 3556 [CORE] camxpipeline.h:4222 SetPipelineStatus()
    RealTimeFeatureZSLPreviewRawSWMCTF_0_cam_0 status is now PipelineStatus::STREAM_ON
    ```

    **MCTF 库初始化：**

    ```text User Log Verification theme={null}
    CamX: [ INFO] 3509 3556 [CHI ] camxchimoduleswmctf.cpp:328 Initialize()
    libmctf Version: 1.0.0
    ```

    <Tip>
      `STREAM_ON` 确认 CamX 流水线已在启用 MCTF 的情况下运行。`libmctf Version` 字符串确认软件库已在 GPU 上初始化。
    </Tip>
  </Step>
</Steps>

## 🛠️ 故障排除 / 已知问题 — SW TNR/MCTF

| 问题 / 现象                 | 详情 / 说明                                                                                                      |
| ----------------------- | ------------------------------------------------------------------------------------------------------------ |
| 快速移动物体出现鬼影伪像            | 高运动场景（机器人、汽车）可能导致时域鬼影 — 可通过降低 MCTF 混合强度来缓解                                                                   |
| 用户日志中未看到 `STREAM_ON` 状态 | CamX 流水线可能未在启用 MCTF 的情况下运行 — 请验证日志条目：`SetPipelineStatus() ... status is now PipelineStatus::STREAM_ON`       |
| `libmctf` 库未初始化         | 如果用户日志中没有 `libmctf Version: 1.0.0`，说明 SW MCTF 库未能在 GPU 上初始化 — 请检查 `camxchimoduleswmctf.cpp:328 Initialize()` |
