Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Sobel Operator

Sobelオペレーターは、エッジ検出、特徴抽出、画像セグメンテーションのために輝度勾配を測定する3×3の画像フィルターです。

Sobelオペレーターは、画像全体で輝度がどれほど速く、どの方向に変化するかを推定する固定画像フィルターです。画像勾配を生成し、大きな応答は急激な変化を、小さな応答は比較的一様な領域を示します。SobelフィルターまたはSobel–Feldmanオペレーターとも呼ばれ、コンピュータービジョンにおけるエッジ検出と特徴抽出の基礎的なツールです。

Irwin SobelとGary Feldmanは、1968年にスタンフォード人工知能プロジェクトでこれを発表しました。発表のタイトルはA 3x3 Isotropic Gradient Operator for Image Processingであり、Sobelによる歴史的な説明と導出に記載されています。

Sobelカーネルの仕組み#

Sobelフィルタリングでは、カーネルと呼ばれる2つの小さな重みグリッドを近傍ピクセルに適用します。この局所フィルタリングは一般に畳み込みと説明されますが、OpenCVは重みを反転させず、相関を使用して適用します。標準的な3 x 3カーネルの各行は次のとおりです。

行X方向カーネルY方向カーネル
上-1, 0, 1-1, -2, -1
中央-2, 0, 20, 0, 0
下-1, 0, 11, 2, 1

x方向の応答Gxは、左から右への輝度変化を測定し、垂直エッジを強調します。Gyは上から下への変化を測定し、水平エッジを強調します。各カーネルは、一方の軸に沿った重み-1、0、1の差分フィルターと、もう一方の軸に沿った重み1、2、1の加重平滑化を組み合わせます。その受容野は9ピクセルをカバーします。

GxとGyを組み合わせると、勾配の大きさ(Gxの二乗とGyの二乗の和の平方根)と、atan2(Gy, Gx)で計算される勾配の向きが得られます。勾配はエッジを横切る方向、つまり局所的な境界に垂直な方向を指します。これらの方向性出力は特徴マップであり、各位置での応答を表す空間グリッドです。

PythonでのSobelの適用#

OpenCVは、エッジ検出の実装ガイドで使用されているcv2.Sobelを使って符号付き微分を計算します。浮動小数点出力では、選択した方向に輝度が低下したときに生じる負の応答が保持されます。一方、符号なし8ビット出力では負の値がゼロに切り詰められ、そのようなエッジ遷移が失われます。

pip install opencv-python numpyを使って依存関係をインストールします。この例では、画像をダウンロードし、両方の微分を計算して、それらを合成した大きさを保存します。

from urllib.request import urlopen

import cv2
import numpy as np

with urlopen("https://ultralytics.com/images/bus.jpg") as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_GRAYSCALE)

# 強度を合成する前に、符号付き微分を保持します。
gx = cv2.Sobel(image, cv2.CV_32F, 1, 0, ksize=3)
gy = cv2.Sobel(image, cv2.CV_32F, 0, 1, ksize=3)
magnitude = cv2.magnitude(gx, gy)
edge_image = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX)
cv2.imwrite("sobel_edges.png", edge_image.astype(np.uint8))

保存された画像では、輝度の急激な変化が明るい輪郭として表示されます。正規化によって表示用に値が再スケーリングされます。別途しきい値処理を行うと、勾配の強度が二値エッジマップに変換されます。

Sobel勾配の用途#

画像セグメンテーションでは、Sobelの大きさをウォーターシェッドアルゴリズムの境界情報として利用できます。このアルゴリズムは、開始マーカーから領域を広げます。scikit-imageのコインセグメンテーションの例では、強い勾配がコインとその背景の間に障壁を形成します。ウォーターシェッドはその障壁を使って前景と背景を分離し、その後、連結成分ラベリングによって個々のコインにラベルを付けます。

Sobel勾配は、UltralyticsのYOLO26をベースにしたカスタムモデルであるYOLO26-RDにおいても、物体検出を導きます。そのEdgeSPDモジュールは、固定されたSobelエッジ信号を使ってダウンサンプリングを制御し、空間解像度が低下する際に境界情報を強調します。

Sobelと他のエッジフィルターの比較#

Prewittは均一な平滑化重みを使用しますが、Sobelは中央の行または列に大きな重みを与えます。Scharrは3 x 3の微分推定における方向精度を向上させます。Laplacianは二次の輝度変化を測定します。Cannyは勾配推定にエッジの細線化と2つのしきい値によるエッジ連結を組み合わせ、生のSobelの大きさよりも選択性の高い輪郭マップを生成します。

医用画像解析では、ノイズによる勾配がウォーターシェッド領域を分断することがあります。Sobel勾配によるMR画像セグメンテーションでは、過分割の例を示し、ノイズ除去を使ってこれを低減します。画像の境界では、近傍ピクセルが欠けているため、拡張ルールを定義する必要があります。SciPyのSobel実装では、最後のピクセルの境界をまたいでピクセルを反射させる方法がデフォルトで使用されます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう