Image Searchを使ってみる#5 Region情報編

Image Searchでは検索キーとして画像を指定します。 この時、Image Searchは画像内の商品をどう識別しているのでしょうか?

答えは、応答結果(BODY情報)の”Region”と”Category”にあります。

この”Region”では以下の情報が応答されます。

  • 左上座標 (x1, y1) と右下座標 (x2, y2) で決まる矩形領域。

また、検索時に商品のカテゴリー情報の指定は必須ではありません。 指定しない場合、Image Searchは自動的にカテゴリーを識別します。その情報は応答結果(BODY情報)の”Category”となります。

具体的に見ていきます。 コンソールのImage Searchの管理画面からテスト検索を実行します。

結果データに”category”と”region”情報が応答されます。 上記画像の該当部分を拡大します。

  • categoryは”8”でボトルドリンク。検索キー画像をImage Searchはボトルドリンクとして識別
  • regionは”49,149,67,273”で、 左上座標 (49,67) と右下座標 (149, 273) の矩形領域 の部分を検索キーの商品として識別
    • マニュアルには4つの数字のどれがx1,y1,x2,y2なのか記載がありません。49,149,67,273=x1,x2,y1,y2です。 

” 左上座標 (49,67) と右下座標 (149, 273) の矩形領域 の部分を検索キーの商品として識別 ”とのことですが、実際の画像イメージでは以下になります。

Image Searchは指定した画像から適切に商品を抽出していることを確認することが出来ました。

画像切り出し処理の手順

今回は以下の手順を実施しています。 Image Searchから応答されるRegion情報で画像を切り抜くためにImageMagickを利用します。 

  1. OSSからECSへ画像をダウンロード
  2. ImageMagickのインストール
  3. ImageMagckによる画像切り出し
  4. OSSへの画像のアップロード
  5. 切り出した画像の確認

1.OSSからECSへ画像をダウンロード

ImageMagickはECS上で実行します。 処理する画像はすでにAlibaba Cloud OSS上に存在します。 まずは、rcloneを使ってOSSからECSに画像データをダウンロードすることにします。 以下では”12.jpg”をダウンロードしています。

[root@sun work]# rclone copy oss:imagesearch-bigriver/12.jpg .
[root@sun work]# ls
12.jpg

2. ImageMagickのインストール

yumを利用し、ImageMagickをインストールします。

[root@sun ~]# yum install ImageMagick
~省略~

Installed:
ImageMagick.x86_64 0:6.7.8.9-15.4.al7
Dependency Installed:
OpenEXR-libs.x86_64 0:1.7.1-7.1.al7
cairo.x86_64 0:1.14.2-1.2.al7
fontconfig.x86_64 0:2.10.95-10.4.al7
fontpackages-filesystem.noarch 0:1.44-8.2.al7
ghostscript.x86_64 0:9.07-20.4.al7
ghostscript-fonts.noarch 0:5.50-32.1.al7
graphite2.x86_64 0:1.3.6-1.4.al7
harfbuzz.x86_64 0:0.9.36-1.1.al7
ilmbase.x86_64 0:1.0.3-7.1.al7
lcms2.x86_64 0:2.6-3.4.al7
libICE.x86_64 0:1.0.9-2.1.al7
libSM.x86_64 0:1.2.2-2.1.al7
libXdamage.x86_64 0:1.1.4-4.1.1.al7
libXext.x86_64 0:1.3.3-3.1.al7
libXfixes.x86_64 0:5.0.1-2.1.1.al7
libXfont.x86_64 0:1.5.1-2.1.al7
libXft.x86_64 0:2.3.2-2.1.al7
libXrender.x86_64 0:0.9.8-2.1.1.al7
libXt.x86_64 0:1.1.4-6.1.1.al7
libXxf86vm.x86_64 0:1.1.3-2.1.1.al7
libfontenc.x86_64 0:1.1.2-3.1.al7
librsvg2.x86_64 0:2.39.0-1.1.al7
libthai.x86_64 0:0.1.14-9.1.al7
libtool-ltdl.x86_64 0:2.4.2-21.4.al7
libwmf-lite.x86_64 0:0.2.8.4-41.1.al7
libxshmfence.x86_64 0:1.2-1.1.al7
mesa-libEGL.x86_64 0:11.2.2-2.20160614.4.al7
mesa-libGL.x86_64 0:11.2.2-2.20160614.4.al7
mesa-libgbm.x86_64 0:11.2.2-2.20160614.4.al7
mesa-libglapi.x86_64 0:11.2.2-2.20160614.4.al7
pango.x86_64 0:1.36.8-2.1.al7
pixman.x86_64 0:0.34.0-1.4.al7
poppler-data.noarch 0:0.4.6-3.1.al7
urw-fonts.noarch 0:2.4-16.1.al7
xorg-x11-font-utils.x86_64 1:7.5-20.1.al7

Complete!

ImageMagick-develもインストールします。

[root@sun ~]# yum install ImageMagick-devel
~省略~
Installed:
ImageMagick-devel.x86_64 0:6.7.8.9-15.4.al7
Dependency Installed:
bzip2-devel.x86_64 0:1.0.6-13.2.al7
freetype-devel.x86_64 0:2.4.11-12.4.al7
ghostscript-devel.x86_64 0:9.07-20.4.al7
jasper-devel.x86_64 0:1.900.1-29.1.al7
libICE-devel.x86_64 0:1.0.9-2.1.al7
libSM-devel.x86_64 0:1.2.2-2.1.al7
libX11-devel.x86_64 0:1.6.3-3.4.al7
libXau-devel.x86_64 0:1.0.8-2.1.1.al7
libXext-devel.x86_64 0:1.3.3-3.1.al7
libXt-devel.x86_64 0:1.1.4-6.1.1.al7
libjpeg-turbo-devel.x86_64 0:1.2.90-5.1.al7
libtiff-devel.x86_64 0:4.0.3-27.1.al7
libxcb-devel.x86_64 0:1.11-4.1.al7
xorg-x11-proto-devel.noarch 0:7.7-13.1.al7
zlib-devel.x86_64 0:1.2.7-17.1.al7
Complete!

3. ImageMagckによる画像切り出し

コマンド”convert”から以下を実行します。 Image Searchの応答情報は
左上座標 (49,67) と右下座標 (149, 273) でした。 

-cropオプションでは[width]x[height]+[x]+[y]を指定します。

  • [width] = 100 = 149-49
  • [height] = 206 =273-67
  • [x] = 49
  • [y] = 67
[root@sun work]# convert 12.jpg -crop 100×206+49+67 12new.jpg

4. OSSへの画像のアップロード

rcloneで画像をOSSにアップロードします。 OSSにアップロードしているのは次の手順で画像を確認するためです。 別の方法で確認しても問題ありません。

[root@sun work]# rclone copy 12new.jpg oss:imagesearch-bigriver/work/

5. 切り出した画像の確認

アップロードした画像をコンソールのOSS管理画面から確認します。 背景部分が切り取られ、商品部分が抽出されたことを確認出来ました。