![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
これらの関数は二値画像に対するモルフォロジー演算をサポートする。高速かつ省スペースにするため、二値画像はランレングス表現で符号化される。この表現では、「on」ピクセルが連続して水平に並ぶ列を1つの「ラン」としてまとめる。ランは、ラン内の先頭ピクセルの列位置、末尾ピクセルの列位置、および行位置によって特徴づけられる。この表現は、「on」と「off」のピクセルが大きく連続した領域を持つ二値画像に対して非常にコンパクトである。チェッカーボード模様などがよい例である。一方、ランダムノイズから生成された二値画像や、隣接ピクセル間の相関が乏しい画像にはあまり適していない。
ここでサポートされるモルフォロジー演算は、imgprocモジュールでサポートされる演算と非常によく似ている。一般に高速だが、imgprocの関数より遅くなる場合もいくつかある。cv::MORPH_RECT や cv::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) |
| 各配列要素に固定しきい値処理を適用する。 | |
| 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」の境界を使用する場合に用いる。デフォルトでは、入力の範囲からサイズが計算される) |
| 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) は通常、要素の中心を表す。 |
| 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) は通常、要素の中心を表す。 |
#include <opencv2/ximgproc/run_length_morphology.hpp>
指定されたサイズと形状のランレングス符号化された構造要素を返す。
| shape | cv::MorphShapes のいずれかとなる要素の形状 |
| ksize | 構造要素のサイズ。 |
| bool cv::ximgproc::rl::isRLMorphologyPossible | ( | InputArray | rlStructuringElement | ) |
#include <opencv2/ximgproc/run_length_morphology.hpp>
カスタムの構造要素がランレングスモルフォロジー演算で使用できるかどうかを確認する。(行ごとに単一のランが連続した配列で構成されている必要がある)
| rlStructuringElement | テスト対象のマスク |
| 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 | 結果 |
| op | cv::morphologyEx がサポートするすべての演算(cv::MORPH_HITMISS を除く) |
| rlKernel | カーネル |
| bBoundaryOnForErosion | 収縮処理において、画像境界外のピクセルを「on」とみなすかどうかを指定する(True: cv::erode のデフォルトと同じ動作、False: 若干高速) |
| anchor | 要素内におけるアンカーの位置。デフォルト値 (0, 0) は通常、要素の中心を表す。 |
| void cv::ximgproc::rl::paint | ( | InputOutputArray | image, |
| InputArray | rlSrc, | ||
| const cv::Scalar & | value ) |
#include <opencv2/ximgproc/run_length_morphology.hpp>
ランレングス符号化された二値画像を画像へ描画する。
| image | 描画先の画像(現状はシングルチャンネル画像のみ)。 |
| rlSrc | ランレングス符号化された画像 |
| value | 二値画像の前景ピクセルすべてに設定される値 |
| 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_BINARY と cv::THRESH_BINARY_INV のみがサポートされる) |