OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
ランレングス符号化画像に対する二値モルフォロジー

詳細説明

これらの関数は二値画像に対するモルフォロジー演算をサポートする。高速かつ省スペースにするため、二値画像はランレングス表現で符号化される。この表現では、「on」ピクセルが連続して水平に並ぶ列を1つの「ラン」としてまとめる。ランは、ラン内の先頭ピクセルの列位置、末尾ピクセルの列位置、および行位置によって特徴づけられる。この表現は、「on」と「off」のピクセルが大きく連続した領域を持つ二値画像に対して非常にコンパクトである。チェッカーボード模様などがよい例である。一方、ランダムノイズから生成された二値画像や、隣接ピクセル間の相関が乏しい画像にはあまり適していない。

ここでサポートされるモルフォロジー演算は、imgprocモジュールでサポートされる演算と非常によく似ている。一般に高速だが、imgprocの関数より遅くなる場合もいくつかある。cv::MORPH_RECTcv::MORPH_CROSS の構造要素は、imgprocモジュールで非常によくサポートされている。また小さな構造要素はimgprocで非常に高速である(おそらくOpenCLのサポートによる)。したがって、本モジュールの関数は、より大きな構造要素(cv::MORPH_ELLIPSE や独自定義の構造要素)に対して推奨される。サンプルアプリケーション (run_length_morphology_demo) が提供されており、ランレングス符号化を用いる関数とimgproc関数とで、いくつかのモルフォロジー演算の速度を指定画像に対して比較できる。

ランレングス符号化画像は、標準のOpenCV画像として格納される。画像は cv::Point3i 要素を1列分だけ持つ。行数はラン数 + 1 である。最初の行には、元の(符号化前の)画像のサイズが格納される。各ランには次のマッピングが用いられる(x: 列の開始, y: 列の終了(最後の列), z: 行)。

元画像のサイズは、境界処理において画像境界外のピクセルを「on」とする必要がある場合に、imgproc関数との互換性のために必要となる。

関数

void cv::ximgproc::rl::createRLEImage (const std::vector< cv::Point3i > &runs, OutputArray res, Size size=Size(0, 0))
 ランの配列(列の開始、列の終了、行)からランレングス符号化された画像を生成する
 
void cv::ximgproc::rl::dilate (InputArray rlSrc, OutputArray rlDest, InputArray rlKernel, Point anchor=Point(0, 0))
 特定の構造化要素を用いて、ランレングス符号化された二値画像を膨張させる。
 
void cv::ximgproc::rl::erode (InputArray rlSrc, OutputArray rlDest, InputArray rlKernel, bool bBoundaryOn=true, Point anchor=Point(0, 0))
 特定の構造化要素を用いて、ランレングス符号化された二値画像を収縮させる。
 
cv::Mat cv::ximgproc::rl::getStructuringElement (int shape, Size ksize)
 指定したサイズと形状のランレングス符号化された構造化要素を返す。
 
bool cv::ximgproc::rl::isRLMorphologyPossible (InputArray rlStructuringElement)
 カスタムで作成した構造化要素がランレングスモルフォロジー演算で使用できるかどうかを確認する。(行ごとに単一のランが連続した配列で構成されている必要がある)
 
void cv::ximgproc::rl::morphologyEx (InputArray rlSrc, OutputArray rlDest, int op, InputArray rlKernel, bool bBoundaryOnForErosion=true, Point anchor=Point(0, 0))
 ランレングス符号化された二値画像にモルフォロジー演算を適用する。
 
void cv::ximgproc::rl::paint (InputOutputArray image, InputArray rlSrc, const cv::Scalar &value)
 ランレングス符号化された二値画像を画像に描画する。
 
void cv::ximgproc::rl::threshold (InputArray src, OutputArray rlDest, double thresh, int type)
 各配列要素に固定しきい値処理を適用する。
 

関数詳解

◆ createRLEImage()

void cv::ximgproc::rl::createRLEImage ( const std::vector< cv::Point3i > & runs,
OutputArray res,
Size size = Size(0, 0) )

#include <opencv2/ximgproc/run_length_morphology.hpp>

ランの配列(列の開始, 列の終了, 行)からランレングス符号化画像を作成する

引数
runsランの配列
res結果
size画像サイズ(収縮処理で「on」の境界を使用する場合に用いる。デフォルトでは、入力の範囲からサイズが計算される)

◆ dilate()

void cv::ximgproc::rl::dilate ( InputArray rlSrc,
OutputArray rlDest,
InputArray rlKernel,
Point anchor = Point(0, 0) )

#include <opencv2/ximgproc/run_length_morphology.hpp>

特定の構造要素を用いて、ランレングス符号化された二値画像を膨張させる。

引数
rlSrc入力画像
rlDest結果
rlKernelカーネル
anchor要素内におけるアンカーの位置。デフォルト値 (0, 0) は通常、要素の中心を表す。

◆ erode()

void cv::ximgproc::rl::erode ( InputArray rlSrc,
OutputArray rlDest,
InputArray rlKernel,
bool bBoundaryOn = true,
Point anchor = Point(0, 0) )

#include <opencv2/ximgproc/run_length_morphology.hpp>

特定の構造要素を用いて、ランレングス符号化された二値画像を収縮させる。

引数
rlSrc入力画像
rlDest結果
rlKernelカーネル
bBoundaryOn画像境界外のピクセルを「on」とみなすかどうかを指定する(True: cv::erode のデフォルトと同じ動作、False: 若干高速)
anchor要素内におけるアンカーの位置。デフォルト値 (0, 0) は通常、要素の中心を表す。

◆ getStructuringElement()

cv::Mat cv::ximgproc::rl::getStructuringElement ( int shape,
Size ksize )

#include <opencv2/ximgproc/run_length_morphology.hpp>

指定されたサイズと形状のランレングス符号化された構造要素を返す。

引数
shapecv::MorphShapes のいずれかとなる要素の形状
ksize構造要素のサイズ。

◆ isRLMorphologyPossible()

bool cv::ximgproc::rl::isRLMorphologyPossible ( InputArray rlStructuringElement)

#include <opencv2/ximgproc/run_length_morphology.hpp>

カスタムの構造要素がランレングスモルフォロジー演算で使用できるかどうかを確認する。(行ごとに単一のランが連続した配列で構成されている必要がある)

引数
rlStructuringElementテスト対象のマスク

◆ morphologyEx()

void cv::ximgproc::rl::morphologyEx ( InputArray rlSrc,
OutputArray rlDest,
int op,
InputArray rlKernel,
bool bBoundaryOnForErosion = true,
Point anchor = Point(0, 0) )

#include <opencv2/ximgproc/run_length_morphology.hpp>

ランレングス符号化された二値画像にモルフォロジー演算を適用する。

引数
rlSrc入力画像
rlDest結果
opcv::morphologyEx がサポートするすべての演算(cv::MORPH_HITMISS を除く)
rlKernelカーネル
bBoundaryOnForErosion収縮処理において、画像境界外のピクセルを「on」とみなすかどうかを指定する(True: cv::erode のデフォルトと同じ動作、False: 若干高速)
anchor要素内におけるアンカーの位置。デフォルト値 (0, 0) は通常、要素の中心を表す。

◆ paint()

void cv::ximgproc::rl::paint ( InputOutputArray image,
InputArray rlSrc,
const cv::Scalar & value )

#include <opencv2/ximgproc/run_length_morphology.hpp>

ランレングス符号化された二値画像を画像へ描画する。

引数
image描画先の画像(現状はシングルチャンネル画像のみ)。
rlSrcランレングス符号化された画像
value二値画像の前景ピクセルすべてに設定される値

◆ threshold()

void cv::ximgproc::rl::threshold ( InputArray src,
OutputArray rlDest,
double thresh,
int type )

#include <opencv2/ximgproc/run_length_morphology.hpp>

各配列要素に固定レベルのしきい値処理を適用する。

引数
src入力配列(シングルチャンネル)。
rlDest結果として得られるランレングス符号化画像。
threshしきい値。
typeしきい値処理の種類(cv::THRESH_BINARYcv::THRESH_BINARY_INV のみがサポートされる)