文档管理中心

使用VideoProcessingEngine实现图片超分辨率

本模块提供图片细节增强的ArkTS接口,支持对图片内容进行清晰度增强和缩放处理。通过调用本模块,应用可以对低分辨率、细节不足或需要放大显示的图片进行超分处理,提升图片的视觉清晰度,处理后的图片数据可用于送显或输出。

超分,即超分辨率重建,是指在放大图片尺寸的同时,尽可能恢复和增强图片中的纹理、边缘等细节信息,减少普通插值缩放带来的模糊、锯齿或细节丢失问题。该能力适用于图片来源分辨率较低、图片需要放大显示、缩略图需要高清展示等场景。如需获得更明显的图片细节增强和超分效果,建议使用HIGH档。

约束与限制

  1. 当前仅支持处理同时满足以下条件的图片:

    • 图片为SDR(Standard dynamic range)图片。
    • 图片的像素格式为RGBA、BGRA、NV12、NV21,输出格式与输入格式一致。
    • 处理的PixelMap对象需为DMA内存
  2. 本模块提供4个质量档位的算法,处理效果逐渐变优,但性能也会逐渐下降。

    展开
    质量档位

    输入分辨率要求

    (单位:像素)

    输出分辨率要求

    (单位:像素)

    说明
    NONE

    宽:[32,3000]

    高:[32,3000]

    宽:[32,3000]

    高:[32,3000]

    仅适用于缩放场景,支持改变宽高比例,无清晰度增强效果。
    LOW

    宽:[32,3000]

    高:[32,3000]

    宽:[32,3000]

    高:[32,3000]

    仅适用于缩放场景,支持改变宽高比例。

    缩放时会对图片进行低质量的清晰度增强,处理效率较高。

    此质量档位为默认设置。

    MEDIUM

    宽:[32,3000]

    高:[32,3000]

    宽:[32,3000]

    高:[32,3000]

    仅适用于缩放场景,支持改变宽高比例。

    缩放时会对图片进行中等质量的清晰度增强,处理效率适中。

    HIGH

    宽:[512,2000]

    高:[512,2000]

    宽:[512,2000]

    高:[512,2000]

    适用于缩放及清晰度增强场景,支持改变宽高比例。

    缩放时会对图片进行高质量的清晰度增强,处理效率相对较低。

开发步骤

  1. 添加引用文件。

    收起
    自动换行
    深色代码主题
    复制
    1. import { image, videoProcessingEngine } from '@kit.ImageKit';
  2. 初始化环境。

    收起
    自动换行
    深色代码主题
    复制
    1. let promise: Promise<void> = videoProcessingEngine.initializeEnvironment();
  3. (可选)配置输入。

    收起
    自动换行
    深色代码主题
    复制
    1. let scale: number = 0.5;
    2. let width: number = 512; // 示例代码,配置宽为512。
    3. let height: number = 512;// 示例代码,配置高为512。
    4. const color: ArrayBuffer = new ArrayBuffer(width * height * 4); // width * height * 4为需要创建的像素buffer大小。
    5. let opts: image.InitializationOptions = { editable: true, pixelFormat: image.PixelMapFormat.RGBA_8888, size: { height, width } }
    6. let sourceImage : image.PixelMap = image.createPixelMapSync(color, opts);
    7. let level : videoProcessingEngine.QualityLevel = videoProcessingEngine.QualityLevel.LOW;
  4. 创建图片处理模块。

    预期返回值:videoProcessingEngine.ImageProcessor,图片处理模块实例。

    收起
    自动换行
    深色代码主题
    复制
    1. // 创建图片细节增强模块实例
    2. let imageProcessor = videoProcessingEngine.create() as videoProcessingEngine.ImageProcessor;
  5. 启动细节增强处理。当输入图片srcImage和输出图片dstImage分辨率不一致时,进行缩放。

    示例中的变量说明如下:

    sourceImage:PixelMap类型的输入图片,必填。

    width:目标宽度(单位px),当没有配置目标缩放比例时必填。

    height:目标高度(单位px),当没有配置目标缩放比例时必填。

    scale:目标缩放比例,当没有配置目标分辨率时必填。目标分辨率即宽*高。

    level:质量算法档位,默认为LOW。

    • 方式一:指定原图、目标分辨率。

      收起
      自动换行
      深色代码主题
      复制
      1. // 同步方法
      2. let enhancedPixelmap: image.PixelMap = imageProcessor.enhanceDetailSync(
      3. sourceImage, width, height, level);
      收起
      自动换行
      深色代码主题
      复制
      1. // 异步方法
      2. let enhancedPixelmap: Promise<image.PixelMap> = imageProcessor.enhanceDetail(sourceImage, width, height, level);
    • 方式二:指定原图、缩放比例。

      收起
      自动换行
      深色代码主题
      复制
      1. // 同步方法
      2. let enhancedPixelmap: image.PixelMap = imageProcessor.enhanceDetailSync(
      3. sourceImage, scale, level);
      收起
      自动换行
      深色代码主题
      复制
      1. // 异步方法
      2. let enhancedPixelmap: Promise<image.PixelMap> = imageProcessor.enhanceDetail(
      3. sourceImage, scale, level);
  6. 释放处理资源。

    收起
    自动换行
    深色代码主题
    复制
    1. videoProcessingEngine.deinitializeEnvironment();
在 指南 中进行搜索
请输入您想要搜索的关键词