# SHDR

Source: [https://docs.qualcomm.com/doc/80-70015-17SC/topic/shdr_public.html](https://docs.qualcomm.com/doc/80-70015-17SC/topic/shdr_public.html)

交错式高动态范围 (SHDR) 模式是一种传感器功能，可输出具有不同曝光时间的帧，即长曝光帧 (LEF) 和短曝光帧 (SEF)。

- 传感器将两条线作为一个单元输出。LEF 的帧和 SEF 的帧在这两条线中交替输出。
- 卷帘快门读数是交错的（行交错），因此在对长积分进行采样后立即开始短积分（在同一帧内）。这一模式也称为数字重叠 (DOL) 模式。
- SHDR 传感器能够使用单个虚拟通道（单个帧交错包含 LEF 和 SEF）或使用不同的虚拟通道（LEF 和 SEF 帧分别在不同的虚拟通道中输出）输出 LEF 和 SEF 帧。
- Qualcomm 芯片组有两种解决方案（SHDR v3 和 SHDR v2）。SHDR v3 适用于双虚拟通道。SHDR v2 适用于单虚拟通道。

Note: 使用 SSH 连接到设备控制台。相关说明，请参见 [如何使用 SSH？](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh)

要收集日志，请在设备中运行以下命令：

    # journalctl -f > /opt/log.txtCopy to clipboard

## SHDR v3 – 具有双帧曝光的双虚拟通道

SHDR v3 解决方案使用传感器，可以在不同的 CSI 虚拟通道上发送曝光帧（LEF 和 SEF）。长曝光帧和短曝光帧将在不同的虚拟通道上传输。

使用以下 GStreamer 命令启用 SHDR v3：

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 vhdr=2 ! \
    video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,\
    compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc \
    capture-io-mode=5 output-io-mode=5 extra-controls="controls,video_bitrate=6000000,\
    video_bitrate_mode=0;" ! h264parse ! mp4mux ! filesink location=/opt/cam_4k.mp4
    Copy to clipboard

视频文件保存位置为 /opt/cam\_4k.mp4。

要验证是否选择了 SHDR v3 用例，请检查以下日志：

    cam-server: CamX: [CORE_CFG]891 23288 [CORE   ] camxpipeline.h:3024
     SetPipelineStatus() RealTimeYUVSHDR_0 status is now PipelineStatus::STREAM_ONCopy to clipboard

## SHDR v2 – 具有两帧曝光的单虚拟通道

SHDR v2 解决方案要求传感器以交错方式（也称为 DOL 模式）在单个虚拟通道上同时输出 LEF 和 SEF。卷帘快门读数是交错的（行交错），因此在对长积分进行采样后立即开始短积分（在同一帧内）。

使用以下 GStreamer 命令启用 SHDR v2

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 vhdr=1 ! \
    video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,\
    compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc \
    capture-io-mode=5 output-io-mode=5 extra-controls="controls,video_bitrate=6000000,\
    video_bitrate_mode=0;" ! h264parse ! mp4mux ! filesink location=/opt/cam_4k.mp4
    Copy to clipboard

视频文件保存位置为 /opt/cam\_4k.mp4。

要验证是否选择了 SHDR v2 用例，请检查以下日志：

    cam-server: CamX: [CORE_CFG]852 2070 [CORE   ] camxpipeline.h:3015 SetPipelineStatus()
    RealTimeSHDR_0 status is now PipelineStatus::STREAM_ONCopy to clipboard

## 除雾功能

除雾是一种雾检测和清除技术。该功能允许用户在下雨、烟雾、雾霾或浓雾等恶劣天气状况下消除雾效应。它通过提高 SHDR v2 和 SHDR v3 用例中的图像质量来提供除雾图像。除雾库使用从 IFE、BPS 和 IPE 收集的统计信息和插值数据进行除雾操作，并为 IQ 模块生成新表以便在下一帧中应用。

要验证除雾功能，请执行以下操作：

1. 使用 /var/cache/camera/camxoverridesettings.txt 中的 `shdrModeType=5` 覆盖设置，启用 SHDR 用例中的除雾功能。
2. 使用 /var/cache/camera/camxoverridesettings.txt 中的下列覆盖设置，验证除雾功能是否正常运行：

        logInfoMask=0x40000
        logVerboseMask=0x40000Copy to clipboard
3. 测试除雾功能。
    - 运行以下命令，使用 SHDR v2 用例测试除雾：

            gst-pipeline-app -e qtiqmmfsrc name=camsrc vhdr=1  ! \
            video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,\
            compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=5 \
            output-io-mode=5  extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! queue ! \
            h264parse ! mp4mux ! queue ! filesink location=/opt/cam_4k.mp4Copy to clipboard
    - 运行以下命令，使用 SHDR v3 用例测试除雾：

            gst-pipeline-app -e qtiqmmfsrc name=camsrc vhdr=2 ! \
            video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,\
            compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=5 \
            output-io-mode=5 extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! queue ! \
            h264parse ! mp4mux ! queue ! filesink location=/opt/cam_4k.mp4Copy to clipboard
4. 启用除雾。
    1. 选择 (1) READY。
    2. 选择 (3) PLAYING。
    3. 按 Enter 键。
    4. 选择 (p) Plugin Mode。
    5. 选择 (8) camsrc。
    6. 选择 (24) defog-table。
    7. 输入以下字符串以启用除雾。

            org.quic.camera.defog, enable=true, strength=3, ates_strength=1;Copy to clipboard
    8. 选择 (b) BACK，然后选择 (q) QUIT，关闭摄像头。

    视频文件保存位置为 /opt/cam\_4k.mp4。
5. 检查以下日志以验证除雾功能是否启用：

        defog.cpp:5782 DefogInitialize() ===================== Defog lib v2.5.0===================== 
        cam-server: CamX: [ VERB]793766 793830 [CHI ] camxchinodedefog.cpp:1981 SetDeFog2ConfigParams() Previous ( defog_en = 0 defog_strength = 0 ates_strength =  0 
        cam-server: CamX: [ VERB]793766 793830 [CHI ] camxchinodedefog.cpp:1984 SetDeFog2ConfigParams() Current ( defog_en = 1 defog_strength = 3 ates_strength =  1Copy to clipboard

**Parent Topic:** [高级摄像头功能](https://docs.qualcomm.com/doc/80-70015-17SC/topic/advanced_camera_features.html)

Last Published: Dec 06, 2024

[Previous Topic
高级摄像头功能](https://docs.qualcomm.com/bundle/publicresource/80-70015-17SC/topics/advanced_camera_features.md) [Next Topic
EIS 和 LDC 用例](https://docs.qualcomm.com/bundle/publicresource/80-70015-17SC/topics/eis_and_ldc_use_cases_public.md)