修圖神器—超簡單實現華爲HMS ML Kit圖像超分辨率

前言

不知道你們有沒有遇到這樣的狀況,圖片壓縮接收下載後清晰度驟降,畫質模糊,更不用說放大瀏覽了。最近小編就遇到了啊,收到朋友發送的旅遊合照壓縮包,打開後,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做者:留下落葉

相關文章
相關標籤/搜索