メインコンテンツへスキップ
  1. 漫画deブログ/

【講義資料】エッジ検出:Sobelフィルタによる輪郭抽出

4 分· ·
講義資料 スマート農業 画像処理 エッジ検出 Sobelフィルタ Prewittフィルタ インタラクティブ教材
Uzuki-lab
著者
Uzuki-lab
栽培施設学・植物生体情報センシング・DIYスマート農業。先端技術で持続可能な農業の未来を創造し、漫画deブログで発信中。
目次
スマート農業講義 - この記事は連載の一部です
パート : この記事

エッジ検出処理を学ぶための対話的な学習ツールです。画像の輪郭を検出する技術は、物体認識や位置測定の基礎となります。

📚 システムの使い方
#

1. 画像の観察
#

左側の元画像をよく観察してください。この画像の中で、エッジとして検出したい部分を確認しましょう。

2. 検出方法の選択
#

SobelフィルタとPrewittフィルタから選択できます。それぞれの特徴を理解しながら使い分けてみましょう。

3. 感度の調整
#

スライダーを動かしてエッジ検出の感度を調整します。結果を観察しながら、最適な値を探してみましょう。

インタラクティブデモ
#

50
元画像 エッジ検出結果

フィルタカーネル表示
#

Sobelフィルタのカーネル
#

横方向フィルタ(Gx)
#

-101
-202
-101

横方向のエッジを検出します。

縦方向フィルタ(Gy)
#

-1-2-1
000
121

縦方向のエッジを検出します。

Prewittフィルタのカーネル
#

横方向フィルタ(Gx)
#

-101
-101
-101

縦方向フィルタ(Gy)
#

-1-1-1
000
111

🔍 Sobelフィルターの仕組みを学ぶ
#

学習のポイント
#

Sobelフィルターがどのように画像のエッジを検出するのか、実際の計算過程を確認しながら学びましょう。

対話的な学習ツール
#

入力画像のグリッドのセルをクリックすると、そのセルを中心としたSobelフィルターの計算過程が表示されます。

使い方:

  1. 入力画像のグリッドから任意のセルをクリックします
  2. 横方向・縦方向のフィルター計算過程を確認します
  3. 各方向の結果と最終的な合成結果を比較します

エッジ検出の原理
#

エッジとは
#

エッジ(輪郭)は、画像内で明るさが急激に変化する場所です。物体の境界、影の境界、テクスチャの変化などがエッジとして検出されます。

微分によるエッジ検出
#

エッジ検出の基本原理は微分です。画像の明るさの変化率(勾配)を計算することで、エッジを検出します。

エッジの強さ = √(横方向の勾配² + 縦方向の勾配²)

Sobelフィルタ
#

特徴
#

  • ノイズに強い:3×3の範囲で平滑化しながら微分
  • 方向を考慮:横方向と縦方向を別々に計算
  • 重み付き:中心に近いピクセルを重視

計算手順
#

  1. 横方向の勾配Gxを計算
  2. 縦方向の勾配Gyを計算
  3. エッジの強さを計算:G = √(Gx² + Gy²)
  4. エッジの方向を計算:θ = arctan(Gy/Gx)

Prewittフィルタ
#

特徴
#

  • 計算が単純:重みが均等
  • ノイズの影響を受けやすい:平滑化効果が弱い
  • 高速処理:乗算が簡単

フィルタの比較
#

特性SobelフィルタPrewittフィルタ
ノイズ耐性高い中程度
計算量中程度少ない
エッジの鮮明さ高い中程度
用途一般的な画像処理リアルタイム処理

農業における応用
#

1. 作物の形状認識
#

  • 葉の輪郭抽出:葉面積の計算
  • 果実の検出:収穫ロボット用の位置特定
  • 茎の追跡:成長方向の解析

2. 病害虫の検出
#

  • 病斑の境界検出:被害範囲の特定
  • 虫食い跡の検出:損傷評価
  • 変色部分の輪郭:症状の進行監視

3. 雑草の識別
#

  • 葉の形状による分類:作物と雑草の判別
  • 根系の解析:地下部の構造把握
  • 群落境界の検出:分布パターン解析

4. 農業機械の自動走行
#

  • 畝の検出:走行ラインの認識
  • 障害物の検出:衝突回避
  • 作物列の追跡:精密作業の位置決め

実装例(Python)
#

OpenCVを使用した実装
#

import cv2
import numpy as np

# 画像読み込み
img = cv2.imread('image.jpg', 0)

# Sobelフィルタ
sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobel = np.sqrt(sobel_x**2 + sobel_y**2)

# Prewittフィルタ(カスタムカーネル)
kernel_x = np.array([[-1, 0, 1],
                     [-1, 0, 1],
                     [-1, 0, 1]])
kernel_y = np.array([[-1, -1, -1],
                     [ 0,  0,  0],
                     [ 1,  1,  1]])
prewitt_x = cv2.filter2D(img, -1, kernel_x)
prewitt_y = cv2.filter2D(img, -1, kernel_y)
prewitt = np.sqrt(prewitt_x**2 + prewitt_y**2)

実習課題
#

基本課題
#

  1. フィルタの比較

    • SobelとPrewittの結果を比較
    • ノイズのある画像での性能評価
  2. 感度の最適化

    • 対象物に応じた感度設定
    • 過検出と未検出のバランス
  3. 方向別エッジの観察

    • 横方向のみ、縦方向のみの結果確認
    • 斜め方向のエッジへの対応

応用課題
#

  1. Cannyエッジ検出

    • より高度なエッジ検出手法の実装
    • ヒステリシス閾値処理の理解
  2. エッジの連結

    • 途切れたエッジの接続
    • 輪郭追跡アルゴリズムの実装
  3. 実画像への適用

    • 農業画像でのエッジ検出
    • 前処理(平滑化)の効果検証

まとめ
#

エッジ検出は、画像処理における最も基本的かつ重要な技術の一つです。Sobelフィルタは、そのバランスの良い性能から広く使用されています。

このインタラクティブツールを使って、フィルタの種類や感度による検出結果の違いを体験し、エッジ検出の原理と実践的な応用方法を身につけてください。

次の講義「分光分析・基礎 」では、光の性質を利用した分析技術について学びます。

スマート農業講義 - この記事は連載の一部です
パート : この記事

関連記事

【講義資料】カラー画像の仕組み:HSV色空間による色抽出
4 分
講義資料 スマート農業 画像処理 HSV色空間 RGB 色抽出 インタラクティブ教材
【講義資料】画像処理入門:2値化処理
3 分
講義資料 スマート農業 画像処理 2値化 閾値 ヒストグラム インタラクティブ教材
【講義資料】スマート農業入門
3 分
講義資料 スマート農業 ICT ロボット技術 画像処理 分光分析 教材
分光分析の農業応用
講義資料 スマート農業 分光分析 リモートセンシング インタラクティブ教材
分光分析の基礎
講義資料 スマート農業 分光分析 光学 インタラクティブ教材
クロロフィル蛍光Fv/Fmによる植物ストレス診断の原理
4 分
研究技術 植物生体情報センシング クロロフィル蛍光 光合成 ストレス診断 非破壊計測
スマホで畑を管理!栽培施設学研究室の手作り!DIYスマート農業システムで未来の農業を体験しよう!
3 分
研究 技術 DIYスマート農業 ESP32 IoT センサー 栽培技術
DIYスマート農業で地域を変える挑戦
5 分
研究開発 技術開発 研究 DIY スマート農業 IoT 地域創生
お問い合わせ