次の方法で共有


画像の超解像度

Image Super Resolution API を使用すると、イメージのシャープ化とスケーリングが可能になります。

スケールファクターが高いほどアーティファクトが発生し、画像の精度が損なわれる可能性があるため、スケーリングは最大 8 倍に制限されます。 最終的な幅または高さが元の値の 8 倍を超える場合は、例外がスローされます。

API の詳細については、AI イメージング機能の API リファレンスを参照してください。

コンテンツ モデレーションの詳細については、「生成 AI API を使用したコンテンツの安全性」を参照してください。

Important

パッケージ マニフェストの要件: Windows AI イメージング API を使用するには、systemAIModelsで宣言されたPackage.appxmanifest機能を備えた MSIX パッケージとしてアプリをパッケージ化する必要があります。 さらに、マニフェストの MaxVersionTested 属性が最新の Windows バージョン ( 10.0.26226.0 以降など) に設定されていることを確認して、Windows AI 機能を適切にサポートします。 古い値を使用すると、モデルの読み込み時に "アプリによって宣言されていません" エラーが発生する可能性があります。

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>

画像の超解像度の例

次の例は、既存のソフトウェア ビットマップ イメージ (targetWidth) のスケール (targetHeightsoftwareBitmap) を変更し、ImageScaler オブジェクトを使用してイメージのシャープネスを向上させる方法を示しています (イメージを拡大縮小せずにシャープネスを向上させるには、既存のイメージの幅と高さを指定するだけです)。

  1. GetReadyState メソッドを呼び出し、EnsureReadyAsync メソッドが正常に返されるのを待って、イメージスーパー解像度モデルを使用できることを確認します。

  2. イメージスーパー解像度モデルが使用可能になったら、 ImageScaler オブジェクトを作成して参照します。

  3. ScaleSoftwareBitmap メソッドを使用して、既存のイメージと目的の幅と高さをモデルに渡すことで、既存のイメージのシャープでスケーリングされたバージョンを取得します。

using Microsoft.Graphics.Imaging;
using Microsoft.Windows.Management.Deployment;
using Microsoft.Windows.AI;
using Windows.Graphics.Imaging;

if (ImageScaler.GetReadyState() == AIFeatureReadyState.NotReady) 
{
    var result = await ImageScaler.EnsureReadyAsync();
    if (result.Status != AIFeatureReadyResultState.Success)
    {
        throw result.ExtendedError;
    }
}
ImageScaler imageScaler = await ImageScaler.CreateAsync();
SoftwareBitmap finalImage = imageScaler.ScaleSoftwareBitmap(softwareBitmap, targetWidth, targetHeight);
#include <winrt/Microsoft.Graphics.Imaging.h>
#include <winrt/Microsoft.Windows.AI.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Graphics.Imaging.h>

using namespace winrt::Microsoft::Graphics::Imaging;
using namespace winrt::Microsoft::Windows::AI;
using namespace winrt::Windows::Foundation; 
using namespace winrt::Windows::Graphics::Imaging; 

if (ImageScaler::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto loadResult = ImageScaler::EnsureReadyAsync().get();

    if (loadResult.Status() != AIFeatureReadyResultState::Success)
    {
        throw winrt::hresult_error(loadResult.ExtendedError());
    }
}
int targetWidth = 100;
int targetHeight = 100;
ImageScaler imageScaler = ImageScaler::CreateAsync().get();
Windows::Graphics::Imaging::SoftwareBitmap finalImage = 
    imageScaler.ScaleSoftwareBitmap(softwareBitmap, targetWidth, targetHeight);

こちらも参照ください