一、简介

  • 文字图像超分辨率可以对包含文字内容的图像进行 9 倍放大(高宽各放大 3 倍),同时增强图像内文字的清晰度,称为“文字图像超分辨率”,简称“文字图像超分”。
  • 本超分算法 SDK 基于深度神经网络开发,使用本 SDK 可以节省算法开发的时间,节省算法模型占用的 ROM 空间,让应用更加轻便。
  • 文字图像超分辨率支持处理的图片格式包括 JPEG、JPG、PNG,最终输出的图片仅支持 JPEG 格式。
  • 文字图像超分辨率输入图片分辨率(长宽之积)应不大于 134 万像素,并且宽高均不小于 506 像素。

二、应用场景

  • 拍照效果增强:增加拍摄内容里文字的清晰度。
  • 文字档案翻拍:翻拍字迹模糊的文字档案,提升文字的可识别度。

三、API 说明

  • 文字图像超分提供了 setVisionConfiguration() 和 doSuperResolution() 两个函数接口。
  • setVisionConfiguration 是 ITxtImageSuperResolution 接口的成员,通过传入的 TxtImageSuperResolutionConfiguration,选择进程调用模式。
 void setVisionConfiguration(TxtImageSuperResolutionConfiguration configuration);
  • TxtImageSuperResolutionConfiguration 的常用设置:
接口 参数名 类型 参数说明
setProcessMode() mode in 进程模式定义:
VisionConfiguration.MODE_IN(同进程调用)
VisionConfiguration.MODE_OUT(跨进程调用)
默认值为VisionConfiguration.MODE_OUT
  • 调用 ITxtImageSuperResolution 的 doSuperResolution() 方法,获取文字图像超分辨率后的图片结果:
 int doSuperResolution(VisionImage image, ImageResult result, VisionCallback<ImageResult> visionCallback);
  • 其中:
    • image 为待超分的输入图片。
    • 如果 visionCallback 为 null,执行同步调用,结果码由方法返回,检测及识别结果由 result 中返回。
    • 如果 visionCallback 为有效的回调函数,则该函数为异步调用,函数返回时 result 中的值无效,实际识别结果由回调函数返回。
    • 同步模式调用成功时,该函数返回结果码0。异步模式调用请求发送成功时,该函数返回结果码700。

四、开发流程

  • 在使用文字图像超分辨率时,将实现文字图像超分的相关的类添加至工程:
 import ohos.ai.cv.common.ConnectionCallback;import ohos.ai.cv.common.ImageResult;import ohos.ai.cv.common.VisionCallback;import ohos.ai.cv.common.VisionConfiguration;import ohos.ai.cv.common.VisionImage;import ohos.ai.cv.common.VisionManager;import ohos.ai.cv.sr.ITxtImageSuperResolution;import ohos.ai.cv.sr.TxtImageSuperResolutionConfiguration;import ohos.app.Context;import ohos.media.image.PixelMap;
  • 定义 ConnectionCallback 回调,实现连接能力引擎成功与否后的操作:
 ConnectionCallback connectionCallback = new ConnectionCallback() {@Overridepublic void onServiceConnect() {// 定义连接能力引擎成功后的操作。}@Overridepublic void onServiceDisconnect() {// 定义连接能力引擎失败后的操作。}};
  • 调用 VisionManager.init() 方法,将此工程的 context 和已经定义的 connectionCallback 作为入参,建立与能力引擎的连接。context 应为 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的实例或子类实例:
 int result = VisionManager.init(context, connectionCallback);
  • 实例化 VisionImage 对象 image,并传入待超分图片 pixelMap:
 VisionImage image = VisionImage.fromPixelMap(pixelMap);
  • 实例化 ImageResult 对象 imageResult,该类在同步模式下用于存放调用 txtImageSuperResolution.doSuperResolution() 方法的超分结果:
 ImageResult imageResult = new ImageResult();
  • (可选) 定义 VisionCallback< ImageResult > 回调:
 VisionCallback<ImageResult> callback= new VisionCallback<ImageResult>() {@Overridepublic void onResult(ImageResult imageResult) {// 对正确获得的结果进行处理}@Overridepublic void onError(int i) {// 处理错误返回码}@Overridepublic void onProcessing(float v) {// 返回处理进度}};
  • 通过 TxtImageSuperResolutionConfiguration,选择进程调用模式:
    • 跨进程模式(MODE_OUT)下调用方与能力引擎处于不同进程;
    • 同进程模式(MODE_IN)下,能力引擎在调用方进程中实例化,调用方通过反射的方式调用引擎里的文字图像超分能力。
  • 以同进程调用为例:
 TxtImageSuperResolutionConfiguration.Builder builder = new TxtImageSuperResolutionConfiguration.Builder();builder.setProcessMode(VisionConfiguration.MODE_IN);TxtImageSuperResolutionConfiguration paras = builder.build();txtImageSuperResolution.setVisionConfiguration(paras);
  • (可选)调用 ITxtImageSuperResolution 的 prepare() 方法启动引擎。
    ITxtImageSuperResolution 的 doSuperResolution() 方法中会首先调用 prepare() 启动引擎,如果引擎已经启动则不会再次启动,因此本步骤为可选步骤:
 result = txtImageSuperResolution.doSuperResolution(image, imageResult, null); // 同步// 或result = txtImageSuperResolution.doSuperResolution(image, null, visionCallback); // 异步
  • 说明:
    • 同步模式调用完成时,该函数立即返回结果码;
    • 异步模式调用请求发送成功时,该函数返回结果码700。如果返回其他的值,说明异步调用请求不成功,需要先处理错误,回调函数不会被调用。
    • 如果异步模式调用请求发送成功,则文字超分完成后,相应的回调函数会被自动调用。
    • 如果onResult()回调被调用,说明超分成功,相当于同步模式结果码为0的情况。
    • 如果onError()方法被调用,则说明文字超分发生了错误,具体的调用结果码将由onError()的参数接收。
  • 结果码定义如下表:
结果码 说明
0 成功
-1 未知错误
-2 不支持的功能或接口
-3 内存分配失败或创建对象失败
-4 所需库加载失败
-10 引擎开关已经关闭
101 失败
102 超时
200 输入参数不合法(图片尺寸错误)
201 输入参数不合法(为空)
210 输入参数合法
500 服务绑定异常
521 服务绑定异常断开
522 服务已连接
600 模型文件异常
601 模型文件不存在
602 模型加载失败
700 异步调用请求发送成功
1001 神经网络处理单元错误
  • 调用 ITxtImageSuperResolution 的 release() 方法,释放资源,调用 pixelMap 的 release() 方法,释放图片内存:
 txtImageSuperResolution.release();if (pixelMap != null) {pixelMap.release();pixelMap = null;}
  • 调用 VisionManager.destroy() 方法,断开与能力引擎的连接:
 VisionManager.destroy();

HarmonyOS之AI能力·文字图像超分相关推荐

  1. HarmonyOS之AI能力·图像超分辨率

    一.基本概念 针对图片分辨率不足的问题,传统的解决方案是使用双线性或双三次插值的方法来放大图像:而针对图片压缩噪声的问题,传统的解决方案则是通过各种算法实现平滑.去噪. 本 SDK 使用智能的方法,基 ...

  2. 图像超分——Real-ESRGAN快速上手

    契源 想必每个自媒体行业从业者都面临过这样一种情况:从网络上找到一张素材做封面,然而素材图片往往太模糊.那么,有没有办法对其进行高清修复呢?这就是计算机视觉领域的子领域图像超分所研究的主要问题. 在我 ...

  3. 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...

    文章来源于极市平台,作者Happy paper: https://arxiv.org/abs/2006.16673 code: https://github.com/sczhou/IGNN(尚未开源) ...

  4. 《深度学习》图像超分初识

    一:简介 图像超分(super-Resolution)是将低分辨率的图像或者视频序列恢复出高分辨率图像. 可以用在视频数字高清播放,视频监控,视频编码,图像还原和医学影像等领域,按照类别可分为单个图像 ...

  5. 46FPS+1080Px2超分+手机NPU,arm提出一种基于重参数化思想的超高效图像超分方案

    编辑:Happy 首发:AIWalker 本文是ARM的研究员在大分辨率图像超分方面的一次探索,它将重参数化思想嵌入到图像超分结构中,并结合手机NPU硬件性能对现有超分的性能进行的对比分析.在Arm ...

  6. 【达摩院OpenVI】AIGC技术在图像超分上的创新应用

    团队模型.论文.博文.直播合集,点击此处浏览 一.背景 近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原.老片修复,图像超分辨率等方面 ...

  7. 图像超分中的深度学习网络

    图像超分中的深度学习网络 质量评估 操作通道 有监督算法 预上采样 后采样超分 逐步上采样 迭代上下采样 上采样的学习方式 残差块 递归学习 多路径学习 密集连接 通道注意力机制 其他卷积 像素递归网 ...

  8. 图像超分综述:超长文一网打尽图像超分的前世今生 (附核心代码)

    文章目录 一.目的 二.研究背景 三.存在的问题 四.研究现状 五.各算法创新点及核心代码总结 SRCNN ESPCN VDSR DRCN DRRN EDSR SRGAN ESRGAN RDN WDS ...

  9. 深度学习磁共振图像超分与重建论文阅读

    深度学习磁共振图像超分与重建算法研究 Super-resolution reconstruction of MR image with a novel residual learning networ ...

最新文章

  1. 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)
  2. JavaScript严格模式 use strict
  3. Python之compiler:compiler库的简介、安装、使用方法之详细攻略
  4. C++中overload,override,overwrite的区别?
  5. 什么是Zero-Copy?
  6. LVS:三种负载均衡方式比较
  7. 计算机基本网络测试命令实验报告,实验三 基本网络测试工具的使用
  8. P1251-餐巾计划问题【费用流】
  9. Qt学习笔记-http服务的初步认识(使用程序下载网站上的图片)
  10. 五、Linux实用指令
  11. openStack Packages yum upgrade
  12. 北漂码农的我,把在大城市过成了屯子一样舒服,哈哈哈哈哈!
  13. java编写打砖块小游戏
  14. 关于拼多多的一些分析//2021-2-26
  15. Git Clone时报错解决方法
  16. cpu、socket、core、thread 等术语之间的关系
  17. .net 和javaee
  18. Rocky——CentOS的延续(原版开发人员)安装与安装后必要操作(个人版)
  19. ERP系统的数据安全
  20. 原生JavaScript类型判断

热门文章

  1. 久坐的危害和解决方式
  2. springboot dubbo 问题记录
  3. Linux 上安装 appium
  4. mysql的my.cnf
  5. Android手机中怎么样在没root的情况下 修改 hosts 文件
  6. 编译OpenJDK及JDK题外话
  7. 代码优化Android ListView适配器三级优化详解
  8. Java开发WebService(使用Java-WS)
  9. HDU 4162 Shape Number(最小表示法)
  10. 寻找数组中的第二大数