修图神器—超简单实现华为HMS ML Kit图像超分辨率

前言

不知道大家有没有遇到这样的情况,图片压缩接收下载后清晰度骤降,画质模糊,更不用说放大浏览了。最近小编就遇到了啊,收到朋友发送的旅游合照压缩包,打开后,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/consumer/cn/doc/development/HMS-Guides/ml-process-4

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文件中,自动更新机器学习模型到设备

        android:name="com.huawei.hms.ml.DEPENDENCY"

        android:value= "livenessdetection"/>

1.5  读取本地文件权限

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 task = analyzer.asyncAnalyseFrame(frame); 

task.addOnSuccessListener(new OnSuccessListener() {

        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://github.com/HMS-Core/hms-ml-demo/blob/master/MLKit-Sample/module-vision/src/main/java/com/mlkit/sample/activity/ImageSuperResolutionActivity.java

更详细的开发指南参考华为开发者联盟官网

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit

欲了解更多详情,请参阅:

华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms

获取开发指导文档:https://developer.huawei.com/consumer/cn/doc/development

参与开发者讨论请到Reddit社区:https://www.reddit.com/r/HMSCore/

下载demo和示例代码请到Github:https://github.com/HMS-Core

解决集成问题请到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest

你可能感兴趣的:(修图神器—超简单实现华为HMS ML Kit图像超分辨率)