For the complete documentation index, see llms.txt. This page is also available as Markdown.

画像の輪郭

画像上の輪郭を検出して数えます。

OpenCVの輪郭検出を使用して、閾値処理済みの二値画像またはグレースケール画像から輪郭(図形の境界)を検出・抽出し、検出した輪郭を画像上に描画し、座標、階層情報、輪郭数を含む輪郭データを返して、形状解析、物体境界検出、輪郭ベースの画像処理ワークフローに利用します。

このブロックの仕組み

このブロックは、画像内の輪郭(図形の連結した境界)を検出し、可視化のために描画します。このブロックは次の処理を行います:

  1. 最良の結果を得るには、入力画像は閾値処理済み(2値またはグレースケール)である必要があります

  2. 色付きの場合は画像をグレースケールに変換します(BGRカラー画像はグレースケールに変換して処理します)

  3. OpenCVのfindContours関数を使用して輪郭を検出します:

    • RETR_EXTERNAL取得モードを使用して、外側の輪郭のみを検出します(図形の外周境界)

    • CHAIN_APPROX_SIMPLE近似法を使用して輪郭点を圧縮します(冗長な点を削減します)

    • 閉じた輪郭または開いた輪郭を形成する、接続されたすべての境界点を検出します

    • 輪郭を点の配列として返し、輪郭間の関係を示す階層情報も返します

  4. 画像上に検出した輪郭を描画します:

    • 可視化のためにグレースケール画像をBGRカラー形式に戻します

    • 設定可能な線の太さを使って、すべての輪郭を画像上に描画します

    • 輪郭線には、デフォルトで紫色(BGRで255, 0, 255)を使用します

    • 目視確認のために輪郭を画像に直接描画します

  5. 画像内で検出された輪郭の総数を数えます

  6. 輪郭を描画した画像、輪郭データ(点の配列)、階層情報、および輪郭数を返します

このブロックは、物体が白、背景が黒(またはその逆)になっている閾値処理済みの画像を想定しており、最適な輪郭検出を行います。輪郭は、異なるピクセル強度領域の境界として検出されます。RETR_EXTERNALモードは内側の穴を無視して外側の境界にのみ注目するため、個別の物体を検出するのに役立ちます。CHAIN_APPROX_SIMPLE法は直線上の冗長な点を除去して輪郭を簡略化し、重要な形状情報を保ちながら輪郭データをよりコンパクトにします。

一般的な使用例

  • 形状検出と解析: 境界を見つけて画像内の形状を検出・解析します(例:形状解析のために物体境界を検出、幾何学的な形状を識別、計測用に形状の輪郭を抽出する)ことで、形状ベースの画像解析ワークフローを実現します

  • 物体境界抽出: 閾値処理済み画像から物体の境界と輪郭を抽出します(例:後続処理のために物体境界を抽出、物体のエッジを特定、二値画像内の物体輪郭を検出する)ことで、境界抽出ワークフローを実現します

  • 画像セグメンテーション解析: 輪郭境界を検出してセグメンテーション結果を解析します(例:セグメンテーションマスクから輪郭を検出、分割された領域を解析、セグメント化された物体から境界を抽出する)ことで、セグメンテーション解析ワークフローを実現します

  • 品質管理と検査: 輪郭検出を品質管理・検査タスクに利用します(例:予期しない輪郭を見つけて欠陥を検出、物体形状を検証、物体境界を検査する)ことで、輪郭ベースの品質管理ワークフローを実現します

  • 物体数のカウント: 輪郭を検出することで画像内の物体数を数えます(例:輪郭を検出して物体を数える、境界に基づいて物体を列挙する、輪郭検出を使って個数を定量化する)ことで、輪郭ベースの物体カウントワークフローを実現します

  • 測定と解析: 輪郭を計測と幾何学的解析に利用します(例:輪郭を使って物体の周囲長を測定、物体形状を解析、輪郭から幾何学的特性を算出する)ことで、輪郭ベースの計測ワークフローを実現します

他のブロックへの接続

このブロックは閾値処理済み画像を受け取り、輪郭データと可視化結果を生成します:

  • 画像のしきい値処理ブロックの後で : 閾値処理済みの二値画像から輪郭を検出します(例:閾値処理後に輪郭を見つける、二値画像内の形状を検出する、閾値処理済み画像から境界を抽出する)ことで、閾値処理から輪郭抽出へのワークフローを実現します

  • 画像前処理ブロックの後 : 輪郭検出のために画像を準備します(例:前処理後に輪郭を検出、フィルタリング後に形状を見つける、強調後に境界を抽出する)ことで、前処理済み輪郭検出ワークフローを実現します

  • セグメンテーションブロックの後に : セグメンテーション結果から輪郭を抽出します(例:セグメンテーションマスクから輪郭を見つける、分割領域の境界を検出する、セグメントから形状の輪郭を抽出する)ことで、セグメンテーションから輪郭抽出へのワークフローを実現します

  • 可視化ブロックの前 : 輪郭の可視化を表示します(例:検出した輪郭を可視化する、形状の境界を表示する、輪郭解析の結果を示す)ことで、輪郭可視化ワークフローを実現します

  • 分析ブロックの前 : 輪郭データを処理します(例:輪郭形状を解析、輪郭座標を処理、輪郭の特性を測定する)ことで、輪郭解析ワークフローを実現します

  • フィルタリングまたはロジックブロックの前に : 輪郭数や特性を意思決定に使用します(例:輪郭数に基づいてフィルタリング、検出された形状に基づいて判断、輪郭特性に基づいてロジックを適用する)ことで、輪郭ベースの条件分岐ワークフローを実現します

要件

入力画像は、このブロックを使用する前に閾値処理(2値化/グレースケール化)する必要があります。閾値処理済み画像には、前景(白)と背景(黒)の領域が明確に分かれているため、輪郭検出の信頼性が高まります。輪郭検出の前に、閾値処理ブロック(例:Image Threshold)またはセグメンテーションブロックを使って画像を準備してください。

型識別子

ステップで次の識別子を使用してください "type" フィールド: roboflow_core/contours_detection@v1 ワークフローにこのブロックをステップとして追加するには。

プロパティ

名前

説明

参照

name

str

このステップの一意の識別子を入力してください。

line_thickness

整数

出力画像に輪郭を描画するために使用する線の太さ。正の整数でなければなりません。太い線(例:5〜10)は輪郭を見やすくしますが、細部を隠す場合があります。細い線(例:1〜2)はより多くの詳細を示しますが、見えにくいことがあります。デフォルトは3で、視認性に優れています。画像サイズと必要な見やすさに応じて調整してください。大きな画像や輪郭を非常に見やすくしたい場合は太い線を、詳細な解析や小さな画像の場合は細い線を使用します..

この 参照 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します ワークフロー 実行時。参照 バインディング 詳細は。

入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が 画像の輪郭 のバージョン v1 あるか確認してください。

入力と出力のバインディング
  • 入力

    • image (image): 輪郭を検出するための入力画像です。最良の結果を得るには閾値処理済み(2値またはグレースケール)である必要があります。閾値処理済み画像は前景と背景の領域が明確に分かれているため、輪郭検出の信頼性が高まります。画像がカラー形式の場合は自動的にグレースケールに変換されます。輪郭は、異なるピクセル強度領域の境界として検出されます。輪郭検出の前に、閾値処理ブロック(例:Image Threshold)またはセグメンテーションブロックを使って画像を準備してください。このブロックは外側の輪郭(外周境界)を検出し、画像上に描画します..

    • line_thickness (整数): 出力画像に輪郭を描画するために使用する線の太さ。正の整数でなければなりません。太い線(例:5〜10)は輪郭を見やすくしますが、細部を隠す場合があります。細い線(例:1〜2)はより多くの詳細を示しますが、見えにくいことがあります。デフォルトは3で、視認性に優れています。画像サイズと必要な見やすさに応じて調整してください。大きな画像や輪郭を非常に見やすくしたい場合は太い線を、詳細な解析や小さな画像の場合は細い線を使用します..

  • 出力

    • image (image): ワークフロー内の画像。

    • contours (contours各配列が輪郭点を表す numpy 配列のリスト。

    • 階層 (numpy_array):Numpy 配列。

    • 輪郭数 (整数):整数値。

JSON 定義の例

最終更新

役に立ちましたか?