harumasa-iino / portfolio

1 stars 0 forks source link

壁検出機能の実装 #15

Open harumasa-iino opened 8 months ago

harumasa-iino commented 8 months ago

Google Vision AIを使った壁検出機能の実装

harumasa-iino commented 8 months ago

ステップ 1: Google Cloud Vision APIの設定

  1. Google Cloud Platform(GCP)にログインし、プロジェクトを作成します。
  2. Cloud Vision APIを有効にし、APIキーまたはサービスアカウントを作成します。
  3. 必要なgemをRailsプロジェクトに追加します。google-cloud-visionが一般的です。
gem 'google-cloud-vision', require: 'google/cloud/vision'

bundle installを実行してgemをインストールします。

ステップ 2: 画像解析の実装

画像内のオブジェクトを検出し、その中から壁と思われるオブジェクトを識別します。これは、オブジェクトのラベルや特徴を基に推測する必要があります。

require 'google/cloud/vision'

class ImageAnalysisService
  def initialize(image_path)
    @image_path = image_path
    @vision = Google::Cloud::Vision.image_annotator
  end

  def analyze
    response = @vision.object_localization image: @image_path
    objects = response.responses.first.localized_object_annotations
    walls = objects.select { |obj| obj.name.downcase.include?('wall') }
    walls
  end
end

ステップ 3: 壁の位置と大きさの取得

Google Vision APIのobject_localization機能を使用すると、画像内のオブジェクトの境界ボックスを取得できます。これにより、壁の位置と大きさ(画像内の相対的な大きさ)を取得できます。

ステップ 4: 壁の実際の大きさの推定

壁の実際の大きさを推定するには、画像に何らかの参照物が必要です(例えば、壁の近くに知られた大きさのオブジェクトがある場合)。画像解析だけでは、距離やカメラの角度などの追加情報がない限り、実際の大きさを正確に推定することは難しいです。

ステップ 5: 画像全体の色合いの分析

Google Vision APIのimage_properties機能を使用して、画像全体の色合いを分析します。

def analyze_colors
  response = @vision.image_properties image: @image_path
  colors = response.responses.first.image_properties_annotation.dominant_colors.colors
  colors
end

この機能は、画像内で支配的な色を返します。これにより、画像全体の色合いを把握することができます。