HarmonyOS之AI能力·文字图像超分
一、简介
- 文字图像超分辨率可以对包含文字内容的图像进行 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能力·文字图像超分相关推荐
- HarmonyOS之AI能力·图像超分辨率
一.基本概念 针对图片分辨率不足的问题,传统的解决方案是使用双线性或双三次插值的方法来放大图像:而针对图片压缩噪声的问题,传统的解决方案则是通过各种算法实现平滑.去噪. 本 SDK 使用智能的方法,基 ...
- 图像超分——Real-ESRGAN快速上手
契源 想必每个自媒体行业从业者都面临过这样一种情况:从网络上找到一张素材做封面,然而素材图片往往太模糊.那么,有没有办法对其进行高清修复呢?这就是计算机视觉领域的子领域图像超分所研究的主要问题. 在我 ...
- 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
文章来源于极市平台,作者Happy paper: https://arxiv.org/abs/2006.16673 code: https://github.com/sczhou/IGNN(尚未开源) ...
- 《深度学习》图像超分初识
一:简介 图像超分(super-Resolution)是将低分辨率的图像或者视频序列恢复出高分辨率图像. 可以用在视频数字高清播放,视频监控,视频编码,图像还原和医学影像等领域,按照类别可分为单个图像 ...
- 46FPS+1080Px2超分+手机NPU,arm提出一种基于重参数化思想的超高效图像超分方案
编辑:Happy 首发:AIWalker 本文是ARM的研究员在大分辨率图像超分方面的一次探索,它将重参数化思想嵌入到图像超分结构中,并结合手机NPU硬件性能对现有超分的性能进行的对比分析.在Arm ...
- 【达摩院OpenVI】AIGC技术在图像超分上的创新应用
团队模型.论文.博文.直播合集,点击此处浏览 一.背景 近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原.老片修复,图像超分辨率等方面 ...
- 图像超分中的深度学习网络
图像超分中的深度学习网络 质量评估 操作通道 有监督算法 预上采样 后采样超分 逐步上采样 迭代上下采样 上采样的学习方式 残差块 递归学习 多路径学习 密集连接 通道注意力机制 其他卷积 像素递归网 ...
- 图像超分综述:超长文一网打尽图像超分的前世今生 (附核心代码)
文章目录 一.目的 二.研究背景 三.存在的问题 四.研究现状 五.各算法创新点及核心代码总结 SRCNN ESPCN VDSR DRCN DRRN EDSR SRGAN ESRGAN RDN WDS ...
- 深度学习磁共振图像超分与重建论文阅读
深度学习磁共振图像超分与重建算法研究 Super-resolution reconstruction of MR image with a novel residual learning networ ...
最新文章
- 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)
- JavaScript严格模式 use strict
- Python之compiler:compiler库的简介、安装、使用方法之详细攻略
- C++中overload,override,overwrite的区别?
- 什么是Zero-Copy?
- LVS:三种负载均衡方式比较
- 计算机基本网络测试命令实验报告,实验三 基本网络测试工具的使用
- P1251-餐巾计划问题【费用流】
- Qt学习笔记-http服务的初步认识(使用程序下载网站上的图片)
- 五、Linux实用指令
- openStack Packages yum upgrade
- 北漂码农的我,把在大城市过成了屯子一样舒服,哈哈哈哈哈!
- java编写打砖块小游戏
- 关于拼多多的一些分析//2021-2-26
- Git Clone时报错解决方法
- cpu、socket、core、thread 等术语之间的关系
- .net 和javaee
- Rocky——CentOS的延续(原版开发人员)安装与安装后必要操作(个人版)
- ERP系统的数据安全
- 原生JavaScript类型判断