画像の背景を削除する

この記事では、Image Analysis 4.0 API を呼び出して画像をセグメント化する (前景と背景を分離する) 方法を見ていただきます。 また、返された情報を解析する方法も示します。

重要

背景の削除は、REST API を直接呼び出したときにのみ使用できます。 SDK では使用できません。

前提条件

このガイドは、クイックスタートページで説明されている手順に正しく従っていることを前提としています。 これは、以下を意味します。

  • このガイドでは、既に Vision リソースを作成し、キーとエンドポイント URL を取得していることを前提としています。
  • サービスへの curl.exe 呼び出しが正常に行われています (または別のツールが使用されています)。 ここでの例に基づいて、curl.exe 呼び出しを変更します。

こちらのクイックスタートでは、画像から視覚的特徴量を抽出する方法が示されています。 ただし、その概念は背景の削除に似ています。 そのため、そのクイックスタートを最初に行ってから変更するとメリットがあります。

重要

背景の削除は、特定の Azure リージョンでのみ使用できます。 「利用可能なリージョン」を参照してください

サービスに対する認証

Image Analysis サービスに対して認証するには、Computer Vision キーとエンドポイント URL が必要です。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

認証は、HTTP 要求ヘッダー Ocp-Apim-Subscription-Key を追加し、それを Vision キーに設定することで行われます。 呼び出す URL は <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview であり、<endpoint> は一意の Computer Vision エンドポイント URL です。 この URL に追加する別のクエリ文字列については、「モードを選択する」セクションを参照してください。

分析する画像を選択する

このガイドにあるコードでは、URL によって参照されるリモートの画像を使用します。 画像解析機能の全機能を確認するには、さまざまな画像を自分で試してみることをお勧めします。

リモートの画像を分析する場合、要求本文を {"url":"https://video2.skills-academy.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"} のような形式にして、画像の URL を指定します。 Content-Typeapplication/json である必要があります。

ローカルの画像を分析するには、バイナリ画像データを HTTP 要求本文に配置します。 コンテンツ タイプapplication/octet-stream または multipart/form-data である必要があります。

モードを選択する

クエリ文字列の mode は、次の 2 つの値のどちらかに設定します。 画像のセグメント化を行いたい場合、このクエリ文字列は必須です。

URL パラメーター 説明
mode backgroundRemoval 検出された前景 オブジェクトのイメージを、透明な背景で出力します。
mode foregroundMatting 検出された前景オブジェクトの不透明度を示すグレースケールアルファマット画像を出力します。

backgroundRemoval の設定された URL は次のようになります:<endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval

サービスから結果を取得する

このセクションでは、API 呼び出しを行い、結果を解析する方法について説明します。

サービスから Content-Type: image/png と共に 200HTTP 応答が返され、その本文には、返された PNG 画像がバイナリストリームの形式で含まれています。

例として、次の図では背景の削除が実行されているとします。

水辺の都市の写真。

背景の削除の呼び出しが成功した場合、次の 4 チャネル PNG 画像が backgroundRemoval モードの応答です。

水辺の都市の写真。空が透明です。

次の 1 チャネル PNG 画像が foregroundMatting モードの応答です。

都市のスカイラインのアルファ マット。

API は、foregroundMatting モードの場合は元のサイズと同じサイズの画像を返しますが、backgroundRemoval モードの場合は (画像の縦横比を保持しながら) 最大 1600 万画素の画像を返します。

エラー コード

エラーが発生した場合、Image Analysis サービスの応答には、エラー コードとエラー メッセージを含む JSON ペイロードが含まれています。 また、内部エラー コードとメッセージの形式で他の詳細を含めることもできます。 次に例を示します。

{
    "error":
    {
        "code": "InvalidRequest",
        "message": "Analyze query is invalid.",
        "innererror":
        {
            "code": "NotSupportedVisualFeature",
            "message": "Specified feature type is not valid"
        }
    }
}

一般的なエラーとその原因の一覧を次に示します。 リスト アイテムは次の形式で表示されます。

  • HTTP 応答コード
    • JSON 応答内のエラー コードとメッセージ
      • [省略可能] JSON 応答内のエラー コードとメッセージ

一般的なエラーの一覧:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible 画像の URL が有効でパブリックにアクセスできることを確認します。
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes 圧縮したり、サイズを変更したりして、画像のサイズを小さくし、要求を再送信します。
    • InvalidRequest - The feature 'Caption' is not supported in this region この機能は、特定の Azure リージョンでのみサポートされています。 サポートされている Azure リージョンの一覧については、「クイック スタートの前提条件」を参照してください。
    • InvalidRequest - The provided image content type ... is not supported 次の要求中の HTTP ヘッダー Content-Type は、許可される型ではありません。
      • 画像の URL の場合、Content-Typeapplication/json である必要があります
      • バイナリ画像データの場合、Content-Typeapplication/octet-stream または multipart/form-data である必要があります
    • InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter
    • InvalidRequest - Image format is not valid
      • InvalidImageFormat - Image format is not valid サポートされている画像形式については、「画像の要件」セクションを参照してください。
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid features クエリ文字列に有効な値が含まれることを確認します。
      • NotSupportedLanguage - The input language is not supported 次の表に基づいて、language クエリ文字列に、選択した視覚機能に対する有効な値が含まれることを確認します。
      • BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
  • 401 PermissionDenied
    • 401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource
  • 404 Resource Not Found
    • 404 - Resource not found サービスは、model-name クエリ文字列によって指定された名前に基づくカスタム モデルを見つけることができませんでした。

ヒント

Azure AI Vision の操作中に、このサービスによって適用されたレート制限によって一時的な障害が発生したり、ネットワークの停止など、他の一時的な問題が発生したりする可能性があります。 これらの種類の障害の処理については、クラウド設計パターン ガイドの「再試行パターン」および「サーキット ブレーカー パターン」を参照してください。

次のステップ

背景の削除の概念