Compartir a través de


Superresolución de imágenes

Las API de super resolución de imágenes habilitan el ajuste y el escalado de imágenes.

El escalado se limita a un factor máximo de 8x, ya que los factores de escala más altos pueden introducir artefactos y poner en peligro la precisión de la imagen. Si el ancho final o alto es mayor que 8 veces sus valores originales, se producirá una excepción.

Para más información sobre la API, consulte API ref for AI imaging features (Referencia de API para características de creación de imágenes de IA).

Para obtener detalles sobre la moderación de contenido, consulte la seguridad de contenido con APIs de IA generativa.

Importante

Requisitos del manifiesto de paquete: para usar las API de creación de imágenes de IA de Windows, la aplicación debe empaquetarse como un paquete MSIX con la systemAIModels funcionalidad declarada en Package.appxmanifest. Además, asegúrese de que el atributo del MaxVersionTested manifiesto esté establecido en una versión reciente de Windows (por ejemplo, 10.0.26226.0 o posterior) para admitir correctamente las características de Windows AI. El uso de valores anteriores puede provocar errores "No declarados por la aplicación" al cargar el modelo.

<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>

Ejemplo de super resolución de imágenes

En el ejemplo siguiente se muestra cómo cambiar la escala (targetWidth, targetHeight) de una imagen de mapa de bits de software existente (softwareBitmap) y mejorar la nitidez de la imagen mediante un ImageScaler objeto (para mejorar la nitidez sin escalar la imagen, simplemente especificar el ancho y alto de la imagen existente).

  1. Asegúrese de que el modelo de super resolución de imágenes está disponible llamando al método GetReadyState y, a continuación, esperando a que el método EnsureReadyAsync se devuelva correctamente.

  2. Una vez disponible el modelo de super resolución de imágenes, cree un objeto ImageScaler para hacer referencia a él.

  3. Obtenga una versión afilada y escalada de la imagen existente pasando la imagen existente y el ancho y alto deseados al modelo mediante el método 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);

Consulte también