1
0

[Vision API] Javaで画像内のロゴを検出する

Posted at

Googleが提供しているVision APIをJavaで使ってみました。

APIを使用し、画像内に含まれているロゴを検出します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Vision API] Javaで画像内のいろいろなものを検出する
を参照ください。

No 目次
1 Feature.Typeの指定
2 実行結果の取得
1 レスポンスの出力
2 レスポンスの内容
3 結果の検証
1 Googleの場合
2 楽天の場合
3 トヨタの場合
4 Bandai Visualの場合

1. Feature.Typeの指定

ロゴを検出する場合は、
Feature.Type.LOGO_DETECTION
を指定します。

以下の記事でexecApi()にタイプを指定します。
⧉[Vision API] Javaで画像内のいろいろなものを検出する

2. 実行結果の取得

2.1. レスポンスの出力

取得した結果をコンソールに出力します。

private static void output(BatchAnnotateImagesResponse response){
    List<AnnotateImageResponse> responses = response.getResponsesList();

    for (AnnotateImageResponse res : responses) {
        if (res.hasError()) {
            System.out.format("Error: %s%n", res.getError().getMessage());
            return;
        }
    
        for (EntityAnnotation annotation : res.getLogoAnnotationsList()) {
            System.out.println(annotation.getDescription());
        }
    }
}

2.2. レスポンスの内容

BatchAnnotateImagesResponseの
getResponsesListでAnnotateImageResponseリストが取得できます。
検出されなった場合は、空のリストが返ってきます。

AnnotateImageResponse

メソッド 戻り値 内容
getLogoAnnotationsList List<EntityAnnotation> 検出された情報

EntityAnnotation

メソッド 戻り値 内容
getMid string OpaqueエンティティID
getDescription string 検出されたロゴの説明文
getScore float 検出結果の信頼度。範囲は0〜1
getBoundingPoly BoundingPoly ロゴの画像領域

BoundingPoly

メソッド 戻り値 内容
getVerticesList List<Vertex> 境界ポリゴンの頂点。
左上、右上、左下、右下の順

Vertex

メソッド 戻り値 内容
getX int X座標
getY int Y座標

3. 結果の検証

画像に含まれるロゴが検出されるか検証してみました。
企業のロゴは扱いが難しいのでGoogle以外、元画像は貼り付けていません。
どれも有名なロゴなので検索すればすぐに出てきます
(Googleの場合はチュートリアルで使っていいよ。と書いてあったので)

3.1. Googleの場合

検出させる元画像

検出された結果
検出信頼度:0.8186716
ロゴ: Google
ちゃんと読み取れました。

3.2. 楽天の場合

検出させる元画像
赤文字「R」だけで、下に線があるロゴ

検出された結果
検出信頼度:0.56306803
ロゴ: Chrome Hearts
なんと、クロムハーツが出てきました。
楽天、RAKUTENとか書いてある方のロゴが正式なのでしょう。

3.3. トヨタの場合

検出させる元画像
誰でも知っているトヨタのマーク(文字がないやつ)

検出された結果
検出信頼度:0.977188
ロゴ: Toyota
さすが世界のトヨタ。

3.4. Bandai Visualの場合

検出させる元画像
モアイの絵に、EMOTIONと書いてるやつ

検出された結果
検出信頼度:0.7809801
ロゴ: Bandai Visual
バンダイとはどこにも書いていないのにしっかりと検出されました。



おしまい。。。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0