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