关于hms-core:修图神器超简单实现华为HMS-ML-Kit图像超分辨率

45次阅读

共计 3218 个字符,预计需要花费 9 分钟才能阅读完成。

前言

不晓得大家有没有遇到这样的状况,图片压缩接管下载后清晰度骤降,画质含糊,更不用说放大浏览了。最近小编就遇到了啊,收到敌人发送的游览合照压缩包,关上后,OMG,这暗淡的场景、黑黑的人像、含糊的画面,怎么让我发朋友圈夸耀。无奈只能上网求助,还真让我发现了一款超好用、操作简略的华为 HMS ML Kit 图像超分辨率,重点是这个 SDK 完全免费、实用于各种 Android 机型。

背景介绍

华为 HMS ML Kit 图像超分辨率基于深度神经网络,提供了可实用于挪动端的 1x 和 3x 超分能力。1x 超分去除压缩噪声,3x 超分在克制压缩噪声的同时,提供 3 倍放大能力。简略艰深的说,华为图像超分辨率提供 1x 和 3x 两种服务,1x 超分不扭转图片尺寸,但进步图片的清晰度,提供更加真切、天然的视觉体验,3x 超分是将图像的边长放大 3 倍,像素放大 9 倍,分辨率更高,失去更清晰的细节纹理。

相干场景

图像超分辨率广泛应用于理论生存中各种场景(绿植、美食、人像、风光等图片),不仅仅只是优化人脸和文字场景。例如,购物类 APP 集成该服务,用户放大商品图片时,通过 ML Kit 图像超分 3x 性能,可取得更清晰的商品细节。新闻浏览类 APP 集成该服务,用户能够在图片分辨率不变的状况下,通过 1x 超分性能失去更清晰的图片。拍照类 APP 集成该服务,用户拍摄图片时,通过图像超分性能取得更真切、更天然的图片。

开发实战

1. 开发筹备

在开始 API 开发工作之前,您须要实现必要的开发筹备工作,同时请确保您的工程中曾经 配置 HMS Core SDK 的 Maven 仓地址,并且实现了本服务的 SDK 集成。

相干步骤能够参考华为开发者联盟

https://developer.huawei.com/…

1.1 我的项目级 gradle 里配置 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 依赖

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。

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/…
](https://developer.huawei.com/…

Github 源码

更具体的开发指南参考华为开发者联盟官网


原文链接:[
https://developer.huawei.com/…](https://developer.huawei.com/…
作者:留下落叶

正文完
 0