前言
不知道你们有没有遇到这样的状况,图片压缩接收下载后清晰度骤降,画质模糊,更不用说放大浏览了。最近小编就遇到了啊,收到朋友发送的旅游合照压缩包,打开后,OMG,这昏暗的场景、黑黑的人像、模糊的画面,怎么让我发朋友圈炫耀。无奈只能上网求助,还真让我发现了一款超好用、操做简单的华为HMS ML Kit图像超分辨率,重点是这个SDK彻底免费、适用于各类Android机型。java
背景介绍
华为HMS ML Kit图像超分辨率基于深度神经网络,提供了可适用于移动端的1x和3x超分能力。1x超分去除压缩噪声,3x超分在抑制压缩噪声的同时,提供3倍放大能力。简单通俗的说,华为图像超分辨率提供1x和3x两种服务,1x超分不改变图片尺寸,但提升图片的清晰度,提供更加逼真、天然的视觉体验,3x超分是将图像的边长放大3倍,像素放大9倍,分辨率更高,获得更清晰的细节纹理。android
相关场景
图像超分辨率普遍应用于实际生活中各类场景(绿植、美食、人像、风景等图片),不单单只是优化人脸和文字场景。例如,购物类APP集成该服务,用户放大商品图片时,通过ML Kit 图像超分3x功能,可得到更清晰的商品细节。新闻阅读类APP集成该服务,用户能够在图片分辨率不变的状况下,经过1x超分功能获得更清晰的图片。拍照类APP集成该服务,用户拍摄图片时,通过图像超分功能得到更逼真、更天然的图片。网络
开发实战
1. 开发准备
在开始API开发工做以前,您须要完成必要的开发准备工做,同时请确保您的工程中已经 配置HMS Core SDK的Maven仓地址,而且完成了本服务的SDK集成。app
相关步骤能够参考华为开发者联盟:机器学习
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4async
1.1 项目级gradle里配置Maven仓地址maven
buildscript { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } } dependencies { ... classpath 'com.huawei.agconnect:agcp:1.3.1.300' } allprojects { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } }
1.2 应用级gradle里配置SDK依赖ide
dependencies{ // 引入集合包。 implementation 'com.huawei.hms:ml-computer-vision-imageSuperResolution:2.0.2.300' implementation 'com.huawei.hms:ml-computer-vision-imageSuperResolution-model:2.0.2.300' }
注意:学习
使用图像超分辨率服务,您须要在应用的build.gradle配置文件中设置targetSdkVersion小于29。gradle
1.3 在文件头添加配置
apply plugin: 'com.android.application' apply plugin: 'com.huawei.agconnect'
1.4 添加以下语句到AndroidManifest.xml文件中,自动更新机器学习模型到设备
<meta-data android:name="com.huawei.hms.ml.DEPENDENCY" android:value= "livenessdetection"/>
1.5 读取本地文件权限
<!--读权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2.开发步骤
2.1 建立图像超分辨率分析器。
能够经过自定义参数类MLImageSuperResolutionAnalyzerSetting建立分析器。
// 方式1:使用默认的参数配置即1x超分。 MLImageSuperResolutionAnalyzer analyzer = MLImageSuperResolutionAnalyzerFactory.getInstance() .getImageSuperResolutionAnalyzer(); // 方式2:使用自定义的参数配置,当前仅支持1x超分,后续可扩展。 MLImageSuperResolutionAnalyzerSetting settings = new MLImageSuperResolutionAnalyzerSetting .Factory() // 设置图像超分辨率倍数1x setScale(MLImageSuperResolutionAnalyzerSetting.ISR_SCALE_1X) .create(); MLImageSuperResolutionAnalyzer analyzer = MLImageSuperResolutionAnalyzerFactory.getInstance() .getImageSuperResolutionAnalyzer(setting)
2.2 经过android.graphics.Bitmap构造MLFrame(注意此处的bitmap类型必须为ARGB8888,请注意作必要的转换)。
// 经过bitmap建立MLFrame,bitmap为输入的图片数据。 MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();
2.3 对图片进行超分辨率处理
错误码信息可参见:机器学习服务错误码
Task<MLImageSuperResolutionResult> task = analyzer.asyncAnalyseFrame(frame); task.addOnSuccessListener(new OnSuccessListener<MLImageSuperResolutionResult>() { public void onSuccess(MLImageSuperResolutionResult result) { // 识别成功的处理逻辑。 } }).addOnFailureListener(new OnFailureListener() { public void onFailure(Exception e) { // 识别失败的处理逻辑。 // failure. if(e instanceof MLException) { MLException mlException = (MLException)e; // 获取错误码,开发者能够对错误码进行处理,根据错误码进行差别化的页面提示。 int errorCode = mlException.getErrCode(); // 获取报错信息,开发者能够结合错误码,快速定位问题。 String errorMessage = mlException.getMessage(); } else { // 其余异常。 } } });
2.4 识别完成,中止分析器,释放检测资源。
if (analyzer != null) { analyzer.stop(); }
Demo
关于图像超分小编就介绍这么多内容,下面是效果对比图,展现下此功能的强大吧。
原图
1x效果图
原图
3x效果图
相关连接
华为HMS ML Kit机器学习集成文本识别、卡证识别、文本翻译、人脸识别、语音识别、语音合成、图片分类、图像分割、拍照购物等功能和服务。
你们感兴趣的话,能够戳下方连接学习:
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4
Github源码
更详细的开发指南参考华为开发者联盟官网
原文连接:
https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202348901052600500&fid=18做者:留下落叶