国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)篇—AI功能開(kāi)發(fā)(圖像超分辨率)

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)篇—AI功能開(kāi)發(fā)(圖像超分辨率)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

針對(duì)圖片分辨率不足的問(wèn)題,傳統(tǒng)的解決方案是使用雙線性或雙三次插值的方法來(lái)放大圖像;而針對(duì)圖片壓縮噪聲的問(wèn)題,傳統(tǒng)的解決方案則是通過(guò)各種算法實(shí)現(xiàn)平滑、去噪。

本SDK使用智能的方法,基于深度神經(jīng)網(wǎng)絡(luò),依托硬件的神經(jīng)網(wǎng)絡(luò)加速器,提供適用于移動(dòng)終端的1x和3x超分能力;1x超分可以去除圖片的壓縮噪聲,3x超分在有效抑制壓縮噪聲的同時(shí),提供3倍的邊長(zhǎng)放大能力。

基本概念

“超分”,即單張圖片空間域超分辨率SISR:Single Image Super-Resolution),指給定單張圖片,使用智能方法將其放大,令其分辨率更高,得到比傳統(tǒng)放大更加清晰的細(xì)節(jié)紋理;或者在分辨率不變的情況下,去除壓縮噪聲,獲得更加銳利、干凈的圖片。

運(yùn)作機(jī)制

圖像超分引擎內(nèi)置于手機(jī)中,應(yīng)用程序可以通過(guò)本SDK訪問(wèn)超分能力,降低圖片超分應(yīng)用的開(kāi)發(fā)門檻,減小應(yīng)用程序大小。

約束與限制

  • 支持處理的圖片格式包括JPEG、JPG、PNG,最終輸出的圖片僅支持JPEG格式。
  • 目前支持1x和3x超分。兩種超分對(duì)圖片規(guī)格的支持情況如下表所示。
    表1?1x和3x超分支持的圖片規(guī)格

    超分類型

    效果

    支持圖片較長(zhǎng)邊最大像素?cái)?shù)

    支持圖片較短邊最大像素?cái)?shù)

    1x

    不改變圖片的尺寸,但可以智能識(shí)別、抑制圖片本身的壓縮噪聲,令圖片更加干凈清晰。

    1920

    1080

    3x

    圖片的邊長(zhǎng)放大3倍。

    1024

    768

  • 目前支持灰度圖和RGB圖像。在Java中為PixelMap的ALPHA_8和ARGB_8888兩種PixelFormat格式。其中,如果ARGB_8888格式的輸入圖片的Alpha通道沒(méi)有做超分或放大處理,輸出圖片的Alpha通道將被置為255。
  • 正如其他智能算法存在著準(zhǔn)確率的限制,本SDK并不能解決所有圖片的放大和噪聲抑制問(wèn)題。對(duì)于某些成像質(zhì)量特別差或者存在著除壓縮噪聲外其他種類噪聲的圖片,本SDK并不一定總能得到令人滿意的結(jié)果。

圖像超分辨率開(kāi)發(fā)

場(chǎng)景介紹

圖像超分在實(shí)際應(yīng)用中有廣泛的前景,比如提升網(wǎng)絡(luò)圖片的畫(huà)質(zhì),在閱讀新聞時(shí)獲得更加清晰的大圖等等。

圖像超分可能的應(yīng)用場(chǎng)景包括但不限于:

  • 抑制壓縮噪聲:1x的超分可以去除高壓縮率圖片的壓縮噪聲。
  • 節(jié)省存儲(chǔ)和流量:可加大圖片壓縮率,有助于存儲(chǔ)及傳送高壓縮率的圖片。
  • 高質(zhì)量放大:3x超分將圖片放大3倍,還能有效抑制壓縮噪聲。

開(kāi)放能力介紹

圖像超分提供了setVisionConfiguration()和doSuperResolution()兩個(gè)函數(shù)接口。

  • setVisionConfiguration是IImageSuperResolution接口的成員,通過(guò)傳入的SisrConfiguration,選擇具體的超分參數(shù)。
void setVisionConfiguration(SisrConfiguration config);
  • 下表列出了SisrConfiguration的常用設(shè)置:

    接口

    參數(shù)名

    類型

    參數(shù)說(shuō)明

    setScale()

    scale

    float

    設(shè)置超分倍數(shù)。目前支持SisrConfiguration.SISR_SCALE_1X和SisrConfiguration.SISR_SCALE_3X。

    setScale()

    void

    void

    設(shè)置超分倍數(shù)為默認(rèn)值SisrConfiguration.SISR_SCALE_1X。

    setQuality()

    quality

    int

    設(shè)置超分質(zhì)量。目前支持的參數(shù)類別為SisrConfiguration.SISR_QUALITY_LOW、

    SisrConfiguration.SISR_QUALITY_MEDIUM和

    SisrConfiguration.SISR_QUALITY_HIGH。

    但該入?yún)⒛壳安⑽磳?shí)際使用,無(wú)論如何設(shè)置都會(huì)執(zhí)行當(dāng)前能力下的最高質(zhì)量超分。

    setQuality()

    void

    void

    設(shè)置返回圖片的超分質(zhì)量為SisrConfiguration.SISR_QUALITY_HIGH。

  • 調(diào)用IImageSuperResolution的doSuperResolution()方法,執(zhí)行圖像超分。
int doSuperResolution(VisionImage image, ImageResult result, VisionCallback<ImageResult> visionCallback);

其中:

image為待超分的輸入圖片。

如果visionCallback為null,執(zhí)行同步調(diào)用,結(jié)果碼由方法返回,超分結(jié)果由result返回。

如果visionCallback為有效的回調(diào)函數(shù),則該函數(shù)為異步調(diào)用,函數(shù)返回時(shí)result中的結(jié)果無(wú)效,實(shí)際超分結(jié)果由回調(diào)函數(shù)返回。

同步模式調(diào)用成功時(shí),該函數(shù)返回結(jié)果碼0;異步模式調(diào)用請(qǐng)求發(fā)送成功時(shí),該函數(shù)返回結(jié)果碼700。

開(kāi)發(fā)步驟

在使用圖像超分SDK時(shí),先將相關(guān)的類添加至工程。

import ohos.ai.cv.common.ConnectionCallback;
import ohos.ai.cv.common.VisionCallback;
import ohos.ai.cv.common.VisionImage;
import ohos.ai.cv.common.VisionManager;
import ohos.ai.cv.common.ImageResult;
import ohos.ai.cv.sr.IImageSuperResolution;
import ohos.ai.cv.sr.SisrConfiguration;
import ohos.app.Context;
import ohos.media.image.PixelMap;

定義ConnectionCallback回調(diào),實(shí)現(xiàn)連接能力引擎成功與否后的操作。

ConnectionCallback connectionCallback = new ConnectionCallback() {
    @Override
    public void onServiceConnect() {
        // 定義連接能力引擎成功后的操作。
    }

    @Override
    public void onServiceDisconnect() {
        // 定義連接能力引擎失敗后的操作。
    }
};

調(diào)用VisionManager.init()方法,將此工程的context和和已經(jīng)定義的connectionCallback回調(diào)作為入?yún)?,建立與能力引擎的連接,context應(yīng)為ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的實(shí)例或子類實(shí)例。

int result = VisionManager.init(context, connectionCallback);

在收到onServiceConnect回調(diào)連接服務(wù)成功后,實(shí)例化IImageSuperResolution接口,將此工程的context作為入?yún)?,context應(yīng)為ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的實(shí)例或子類實(shí)例。

IImageSuperResolution imageSuperResolution = VisionManager.getSisr(context);

實(shí)例化VisionImage對(duì)象image,并傳入待超分圖片pixelMap。

VisionImage image = VisionImage.fromPixelMap(pixelMap);

實(shí)例化ImageResult對(duì)象imageResult,該對(duì)象用于在同步模式下存放doSuperResolution()方法傳出的超分后圖片結(jié)果。

ImageResult imageResult = new ImageResult();

(可選)定義VisionCallback<ImageResult>回調(diào)。

VisionCallback<ImageResult> callback= new VisionCallback<ImageResult>() {
    @Override
    public void onResult(ImageResult imageResult) {
        // 對(duì)正確獲得圖片超分結(jié)果進(jìn)行處理。
    }
    @Override
    public void onError(int i) {
        // 處理錯(cuò)誤返回碼。
    }
    @Override
    public void onProcessing(float v) {
        // 返回處理進(jìn)度。
    }
};

說(shuō)明

  • 在異步模式下,該類的onResult()方法用于獲得超分的結(jié)果imageResult(內(nèi)含超分后圖片結(jié)果);onError()方法用于處理錯(cuò)誤返回碼;onProcessing()方法用于返回處理進(jìn)度,目前沒(méi)有實(shí)現(xiàn)此接口的功能。
  • 同步與異步模式區(qū)別在于doSuperResolution()的最后一個(gè)參數(shù)visionCallback是否為空。若非空則為異步模式,此時(shí)會(huì)忽略自定義的ImageResult輸入result,接口調(diào)用結(jié)果一律從回調(diào)類visionCallback獲得。

通過(guò)SisrConfiguration配置超分參數(shù),可選擇超分倍數(shù)、質(zhì)量、調(diào)用模式(推薦使用MODE_IN同進(jìn)程模式)等??邕M(jìn)程模式(MODE_OUT)下調(diào)用方與能力引擎處于不同進(jìn)程;同進(jìn)程模式(MODE_IN)下,能力引擎在調(diào)用方進(jìn)程中實(shí)例化,調(diào)用方通過(guò)反射的方式調(diào)用引擎里的圖像超分能力。以下以同進(jìn)程調(diào)用,3x最高質(zhì)量超分為例:

SisrConfiguration.Builder builder = new SisrConfiguration.Builder();
builder.setProcessMode(VisionConfiguration.MODE_IN);
SisrConfiguration config = builder.build();
config.setScale(SisrConfiguration.SISR_SCALE_3X);
config.setQuality();
imageSuperResolution.setVisionConfiguration(config);

(可選)調(diào)用IImageSuperResolution的prepare方法。

result = imageSuperResolution.prepare();

說(shuō)明

如果返回的result不為0,說(shuō)明當(dāng)前超分能力準(zhǔn)備失敗,需要處理錯(cuò)誤,不再執(zhí)行之后的動(dòng)作。在doSuperResolution()方法中會(huì)首先調(diào)用prepare()啟動(dòng)引擎,如果引擎已經(jīng)啟動(dòng)則不會(huì)再次啟動(dòng)。

調(diào)用IImageSuperResolution的doSuperResolution方法。

result = imageSuperResolution.doSuperResolution(image, imageResult, null); // 同步

或者:

result = imageSuperResolution.doSuperResolution(image, null, callback); // 異步

說(shuō)明

  • 同步模式調(diào)用完成時(shí),該函數(shù)立即返回結(jié)果碼。
  • 異步模式調(diào)用請(qǐng)求發(fā)送成功時(shí),該函數(shù)返回結(jié)果碼700。如果返回其他的值,說(shuō)明異步調(diào)用請(qǐng)求不成功,需要先處理錯(cuò)誤,回調(diào)函數(shù)不會(huì)被調(diào)用。
  • 如果異步模式調(diào)用請(qǐng)求發(fā)送成功,則超分完成后,相應(yīng)的回調(diào)函數(shù)會(huì)被自動(dòng)調(diào)用:
    • 如果onResult()回調(diào)被調(diào)用,說(shuō)明超分成功,相當(dāng)于同步模式結(jié)果碼為“0”的情況。
    • 如果onError()方法被調(diào)用,說(shuō)明超分發(fā)生了錯(cuò)誤,具體的調(diào)用結(jié)果碼將由onError()的參數(shù)接收。

結(jié)果碼定義如下表:

結(jié)果碼

說(shuō)明

0

成功

-1

未知錯(cuò)誤

-2

不支持的功能或接口

-3

內(nèi)存分配失敗或創(chuàng)建對(duì)象失敗

-4

所需庫(kù)加載失敗

-10

引擎開(kāi)關(guān)已經(jīng)關(guān)閉

101

失敗

102

超時(shí)

200

輸入?yún)?shù)不合法(圖片尺寸錯(cuò)誤)

201

輸入?yún)?shù)不合法(為空)

210

輸入?yún)?shù)合法

500

服務(wù)綁定異常

521

服務(wù)綁定異常斷開(kāi)

522

服務(wù)已連接

600

模型文件異常

601

模型文件不存在

602

模型加載失敗

700

異步調(diào)用請(qǐng)求發(fā)送成功

1001

神經(jīng)網(wǎng)絡(luò)處理單元錯(cuò)誤

調(diào)用IImageSuperResolution的release()方法,釋放模型資源;調(diào)用pixelMap的release()方法,釋放圖片內(nèi)存。

result = imageSuperResolution.release();
if (pixelMap != null) {
    pixelMap.release();
    pixelMap = null;
}

說(shuō)明

不再使用圖像超分能力時(shí),調(diào)用release()方法釋放資源。

調(diào)用VisionManager.destroy()方法,斷開(kāi)與能力引擎的連接。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-510275.html

VisionManager.destroy();

到了這里,關(guān)于HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)篇—AI功能開(kāi)發(fā)(圖像超分辨率)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包