画像の輪郭
画像上の輪郭を検出して数えます。
OpenCVの輪郭検出を使用して、閾値処理済みの二値画像またはグレースケール画像から輪郭(図形の境界)を検出・抽出し、検出した輪郭を画像上に描画し、座標、階層情報、輪郭数を含む輪郭データを返して、形状解析、物体境界検出、輪郭ベースの画像処理ワークフローに利用します。
このブロックの仕組み
このブロックは、画像内の輪郭(図形の連結した境界)を検出し、可視化のために描画します。このブロックは次の処理を行います:
最良の結果を得るには、入力画像は閾値処理済み(2値またはグレースケール)である必要があります
色付きの場合は画像をグレースケールに変換します(BGRカラー画像はグレースケールに変換して処理します)
OpenCVのfindContours関数を使用して輪郭を検出します:
RETR_EXTERNAL取得モードを使用して、外側の輪郭のみを検出します(図形の外周境界)
CHAIN_APPROX_SIMPLE近似法を使用して輪郭点を圧縮します(冗長な点を削減します)
閉じた輪郭または開いた輪郭を形成する、接続されたすべての境界点を検出します
輪郭を点の配列として返し、輪郭間の関係を示す階層情報も返します
画像上に検出した輪郭を描画します:
可視化のためにグレースケール画像をBGRカラー形式に戻します
設定可能な線の太さを使って、すべての輪郭を画像上に描画します
輪郭線には、デフォルトで紫色(BGRで255, 0, 255)を使用します
目視確認のために輪郭を画像に直接描画します
画像内で検出された輪郭の総数を数えます
輪郭を描画した画像、輪郭データ(点の配列)、階層情報、および輪郭数を返します
このブロックは、物体が白、背景が黒(またはその逆)になっている閾値処理済みの画像を想定しており、最適な輪郭検出を行います。輪郭は、異なるピクセル強度領域の境界として検出されます。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 配列。輪郭数(整数):整数値。
最終更新
役に立ちましたか?