| OpenCV 4.5.3(日本語機械翻訳)
 | 
| 関数 | |
| CV_EXPORTS_W void | cv::integral (InputArray src, OutputArray sum, int sdepth=-1) | 
| cv::CV_EXPORTS_AS (integral2) void integral(InputArray src | |
| cv::CV_EXPORTS_AS (integral3) void integral(InputArray src | |
| 画像の積分値を求めます.[【詳解】(英語] | |
| CV_EXPORTS_W double | cv::threshold (InputArray src, OutputArray dst, double thresh, double maxval, int type) | 
| 各配列要素に対して,固定レベルの閾値を適用します.[【詳解】(英語] | |
| CV_EXPORTS_W void | cv::adaptiveThreshold (InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C) | 
| 配列に適応的な閾値を適用します.[【詳解】(英語] | |
| cv::CV_EXPORTS_AS (distanceTransformWithLabels) void distanceTransform(InputArray src | |
| ソース画像の各ピクセルに対して,最も近い 0 ピクセルまでの距離を計算します.[【詳解】(英語] | |
| CV_EXPORTS_W void | cv::distanceTransform (InputArray src, OutputArray dst, int distanceType, int maskSize, int dstType=CV_32F) | 
| CV_EXPORTS int | cv::floodFill (InputOutputArray image, Point seedPoint, Scalar newVal, CV_OUT Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4) | 
| CV_EXPORTS_W int | cv::floodFill (InputOutputArray image, InputOutputArray mask, Point seedPoint, Scalar newVal, CV_OUT Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4) | 
| 与えられた色で連結成分を塗りつぶします.[【詳解】(英語] | |
| CV_EXPORTS_W void | cv::blendLinear (InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst) | 
| 変数 | |
| OutputArray | cv::sum | 
| OutputArray OutputArray | cv::sqsum | 
| OutputArray OutputArray int | cv::sdepth = -1 | 
| OutputArray OutputArray int int | cv::sqdepth = -1 ) | 
| OutputArray OutputArray OutputArray | cv::tilted | 
| OutputArray | cv::dst | 
| OutputArray OutputArray | cv::labels | 
| OutputArray OutputArray int | cv::distanceType | 
| OutputArray OutputArray int int | cv::maskSize | 
| OutputArray OutputArray int int int | cv::labelType = DIST_LABEL_CCOMP ) | 
適応型閾値アルゴリズム
| 列挙値 | |
|---|---|
| 適応型しきい値_平均値_c | しきい値 | 
| アダプティブスレッショルド_ガウシアン_c | しきい値 | 
| enum cv::DistanceTypes | 
距離変換とM-推定のための距離の種類
| enum cv::FloodFillFlags | 
| enum cv::GrabCutClasses | 
| enum cv::GrabCutModes | 
GrabCutアルゴリズムのフラグ
| enum cv::ThresholdTypes | 
| CV_EXPORTS_W void cv::adaptiveThreshold | ( | InputArray | src, | 
| OutputArray | dst, | ||
| double | maxValue, | ||
| int | adaptiveMethod, | ||
| int | thresholdType, | ||
| int | blockSize, | ||
| double | C | ||
| ) | 
配列に適応的な閾値を適用します.
この関数は,次の式に従ってグレースケール画像を2値画像に変換します.
![\[dst(x,y) = \fork{\texttt{maxValue}}{if \(src(x,y) > T(x,y)\)}{0}{otherwise}\]](form_882.png) 
![\[dst(x,y) = \fork{0}{if \(src(x,y) > T(x,y)\)}{\texttt{maxValue}}{otherwise}\]](form_883.png) 
 は,各ピクセルに対して個別に計算される閾値です( adaptiveMethod パラメータを参照してください).
は,各ピクセルに対して個別に計算される閾値です( adaptiveMethod パラメータを参照してください).この関数は,画像をその場で処理することができます.
| src | 8ビットシングルチャンネルの入力画像. | 
| dst | src と同じサイズ,同じタイプの出力画像. | 
| maxValue | 条件が満たされたピクセルに割り当てられる0ではない値. | 
| adaptiveMethod | 使用する適応型閾値処理アルゴリズム,参照AdaptiveThresholdTypes. という関数を考えます。BORDER_REPLICATE|BORDER_ISOLATEDは,境界線の処理に利用されます. | 
| thresholdType | 閾値処理のタイプは,以下のいずれかでなければいけませんTHRESH_BINARYまたはTHRESH_BINARY_INVを参照してください。ThresholdTypes. | 
| blockSize | ピクセルに対する閾値を計算するために利用される,ピクセルの近傍領域のサイズ.3, 5, 7,...となります。 | 
| C | 平均値または加重平均値から減算される定数(詳細は後述)。通常は正の値ですが,ゼロや負の値もあり得ます. | 
| CV_EXPORTS_W void cv::blendLinear | ( | InputArray | src1, | 
| InputArray | src2, | ||
| InputArray | weights1, | ||
| InputArray | weights2, | ||
| OutputArray | dst | ||
| ) | 
2つの画像の線形ブレンドを行います.
![\[ \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) \]](form_915.png) 
| src1 | CV_8UC(n) または CV_32FC(n) の型を持ち,n は正の整数です. | 
| src2 | src1 と同じ型とサイズを持ちます. | 
| weights1 | CV_32FC1 というタイプを持ち, src1 と同じサイズです. | 
| weights2 | CV_32FC1 というタイプを持ち, src1 と同じサイズです. | 
| dst | src1 と同じサイズとタイプを持っていない場合は,作成されます. | 
| cv::CV_EXPORTS_AS | ( | distanceTransformWithLabels | ) | 
ソース画像の各ピクセルに対して,最も近い 0 ピクセルまでの距離を計算します.
この関数はcv::distanceTransformは、2値画像の各ピクセルから、最も近いゼロピクセルまでのおおよその、あるいは正確な距離を計算します。ゼロ画像のピクセルでは,当然ながら距離はゼロになります.
maskSize == #DIST_MASK_PRECISE かつ distanceType ==DIST_L2の場合,この関数は以下に記述されたアルゴリズムを実行します[Felzenszwalb04] です.. このアルゴリズムは,TBB ライブラリを用いて並列化されています.
他のケースでは,このアルゴリズム[Borgefors86] を使用しています.が利用されます.つまり,この関数は,あるピクセルに対して,水平,垂直,斜め,騎士の移動という基本的な移動方法からなる,最も近い0ピクセルへの最短経路を求めます(最新の移動方法は マスクの場合は,最新のものが利用できます).全体の距離は,これらの基本的な距離の合計として計算されます.距離関数は対称でなければならないので、水平方向と垂直方向のシフトはすべて同じコスト(aと表記)でなければならず、対角線方向のシフトはすべて同じコスト(bと表記)でなければなりません。
マスクの場合は,最新のものが利用できます).全体の距離は,これらの基本的な距離の合計として計算されます.距離関数は対称でなければならないので、水平方向と垂直方向のシフトはすべて同じコスト(aと表記)でなければならず、対角線方向のシフトはすべて同じコスト(bと表記)でなければなりません。bと表記)、すべてのナイトの動きは同じコスト(と表記)でなければなりません。c). タイプについてはDIST_CおよびDIST_L1のタイプでは、距離は正確に計算されます。DIST_L2(ユークリッド距離)の場合、距離は相対的な誤差でしか計算できません(マスクを使うとより正確な結果が得られます)。 マスクはより正確な結果を与えます)。については
マスクはより正確な結果を与えます)。についてはa,bを満たす。cについては,OpenCVは原著論文で提案された値を使用します.
a = 1, b = 2
3 x 3:a=0.955, b=1.3693
5 x 5:a=1, b=1.4, c=2.1969
a = 1, b = 1
一般的に,高速で粗い距離推定を行う場合はDIST_L2, a マスクを使用します.より正確な距離の推定にはDIST_L2, a
マスクを使用します.より正確な距離の推定にはDIST_L2, a マスクまたは精密アルゴリズムを使用します。なお,精密アルゴリズムも近似アルゴリズムも,ピクセル数に対して線形です.
マスクまたは精密アルゴリズムを使用します。なお,精密アルゴリズムも近似アルゴリズムも,ピクセル数に対して線形です.
この関数は,各ピクセルの最小距離を計算するだけでなく,直近の連結成分を特定することもできます. の最小距離を計算するだけでなく,0個のピクセルからなる最も近い連結成分(labelType==DIST_LABEL_CCOMP),あるいは,最も近いゼロピクセル (labelType==DIST_LABEL_PIXEL). その成分/ピクセルのインデックスは
の最小距離を計算するだけでなく,0個のピクセルからなる最も近い連結成分(labelType==DIST_LABEL_CCOMP),あるいは,最も近いゼロピクセル (labelType==DIST_LABEL_PIXEL). その成分/ピクセルのインデックスはlabels(x, y). labelType==の場合DIST_LABEL_CCOMPの場合,この関数は,入力画像中のゼロピクセルの連結成分を自動的に検出し,それらに個別のラベルを付けます.labelType==の場合DIST_LABEL_PIXELの場合,この関数は,入力画像をスキャンし,すべての0ピクセルに個別のラベルを付けます.
このモードでは,複雑さは直線的です.つまり,この関数は,2値画像のボロノイ図を非常に高速に計算する方法を提供します.現在のところ,2番目のモードでは,近似距離変換アルゴリズムしか利用できません.つまり, maskSize=#DIST_MASK_PRECISE はまだサポートされていません.
| src | 8ビット,シングルチャンネル(2値)の入力画像. | 
| dst | 距離が計算された出力画像.src と同じサイズの,8ビットまたは32ビット浮動小数点型,シングルチャンネルの画像です. | 
| labels | ラベルの2次元配列(離散的なボロノイ図)を出力します.これは,型が CV_32SC1 で, src と同じサイズです. | 
| distanceType | 距離の種類,参照DistanceTypes | 
| maskSize | 距離変換マスクのサイズ,参照DistanceTransformMasks. このバリアントでは,#DIST_MASK_PRECISE はサポートされません.距離のタイプがDIST_L1またはDIST_C距離のタイプの場合、パラメータは強制的に3になります。  と同じ結果になります。  と同じ結果になるからです。 | 
| labelType | 構築するラベル配列のタイプ,参照DistanceTransformLabelTypes. | 
| cv::CV_EXPORTS_AS | ( | integral2 | ) | 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
| cv::CV_EXPORTS_AS | ( | integral3 | ) | 
画像の積分値を求めます.
この関数は,以下のように,入力画像に対する1つまたは複数の積分画像を計算します.
![\[\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\]](form_867.png) 
![\[\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\]](form_868.png) 
![\[\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\]](form_869.png) 
これらの積分画像を利用して,例えば,画像中の特定の右上がりあるいは回転した矩形領域の総和,平均,標準偏差を一定時間で計算することができます.
![\[\sum _{x_1 \leq x < x_2, \, y_1 \leq y < y_2} \texttt{image} (x,y) = \texttt{sum} (x_2,y_2)- \texttt{sum} (x_1,y_2)- \texttt{sum} (x_2,y_1)+ \texttt{sum} (x_1,y_1)\]](form_870.png) 
これにより、例えば、可変のウィンドウサイズで高速ブラーリングや高速ブロック相関を行うことができます。マルチチャンネル画像の場合、各チャンネルの総和は独立して蓄積されます。
次の図は,実際の例として,まっすぐな矩形 Rect(3,3,3,2) と傾いた矩形 Rect(5,1,2,3) の積分の計算を示しています.元画像の選択されたピクセルと,積分画像の和と傾いた部分の相対的なピクセルが示されています.
 
| src | 入力画像を  8ビット,または浮動小数点(32f または 64f). | 
| sum | 積分画像  32ビット整数または浮動小数点(32fまたは64f). | 
| sqsum | 二乗されたピクセル値を表す積分画像,それは  倍精度浮動小数点(64f)の配列. | 
| tilted | 45度回転した画像の積分値,これは  sumと同じデータ型の配列. | 
| sdepth | 積分画像と傾いた積分画像の希望深度は,CV_32S, CV_32F, または CV_64F. | 
| sqdepth | ピクセル値を2乗した積分画像の希望深度,CV_32F または CV_64F. | 
| CV_EXPORTS_W void cv::distanceTransform | ( | InputArray | src, | 
| OutputArray | dst, | ||
| int | distanceType, | ||
| int | maskSize, | ||
| int | dstType
= CV_32F | ||
| ) | 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
| src | 8ビット,シングルチャンネル(2値)の入力画像. | 
| dst | 計算された距離を持つ出力画像.src と同じサイズの,8ビットまたは32ビット浮動小数点型,シングルチャンネルの画像です. | 
| distanceType | 距離の種類,参照DistanceTypes | 
| maskSize | 距離変換マスクのサイズ,参照DistanceTransformMasks. の場合も同様です.DIST_L1またはDIST_C距離のタイプの場合、パラメータは強制的に3になります。  と同じ結果になります。  と同じ結果になるからです。 | 
| dstType | 出力画像の種類.CV_8U または CV_32F のいずれかです.CV_8U タイプは,この関数の最初のバリアントと distanceType == にのみ利用できます.DIST_L1. | 
| CV_EXPORTS_W int cv::floodFill | ( | InputOutputArray | image, | 
| InputOutputArray | mask, | ||
| Point | seedPoint, | ||
| Scalar | newVal, | ||
| CV_OUT Rect * | rect
= 0, | ||
| Scalar | loDiff
= 
Scalar(), | ||
| Scalar | upDiff
= 
Scalar(), | ||
| int | flags
= 4 | ||
| ) | 
与えられた色で連結成分を塗りつぶします.
この関数はcv::floodFill種子点から始まる連結成分を,指定された色で塗りつぶします.この連結性は,隣接するピクセルの色や明るさの近さによって決まります.のピクセルは のピクセルは,以下の場合,再描画領域に属しているとみなされます。
のピクセルは,以下の場合,再描画領域に属しているとみなされます。
![\[\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\]](form_905.png) 
![\[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\]](form_906.png) 
![\[\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\]](form_907.png) 
![\[\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\]](form_908.png) 
![\[\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\]](form_909.png) 
![\[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\]](form_910.png) 
![\[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\]](form_911.png) 
![\[\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\]](form_912.png) 
ここで は,その成分に属することがすでにわかっている,画素の近傍の1つの値である。つまり、接続されたコンポーネントに追加されるためには、そのピクセルの色/輝度が十分に近い必要があります。
は,その成分に属することがすでにわかっている,画素の近傍の1つの値である。つまり、接続されたコンポーネントに追加されるためには、そのピクセルの色/輝度が十分に近い必要があります。
これらの関数を利用して,連結成分をその場で指定した色でマーキングしたり,マスクを作成して輪郭を抽出したり,その領域を別の画像にコピーしたりすることができます.
| image | 入出力 1または3チャンネル,8ビット,または浮動小数点の画像.が設定されていない限り,この関数によって変更されます.FLOODFILL_MASK_ONLYフラグが設定されていない限り,この関数によって変更されます.以下の詳細を参照してください. | 
| mask | imageよりも幅が2ピクセル,高さが2ピクセル大きい,1チャンネルの8ビット画像であるべきオペレーションマスク.これは入力と出力の両方のパラメータなので,責任を持って初期化しなければなりません.フラッドフィリングは、入力マスクのゼロでないピクセルを越えて行うことはできません。例えば、エッジ検出器の出力をマスクとして使用すると、エッジでのフィリングを止めることができます。出力時には,画像中の塗りつぶされたピクセルに対応するマスク内のピクセルが,後述する flags で指定された値,あるいは 1 に設定されます.さらにこの関数は,内部処理を簡単にするために,マスクの境界を 1 で埋めます.したがって,塗りつぶされた領域が重ならないようにするために,同じマスクをこの関数の複数回の呼び出しで利用することができます. | 
| seedPoint | 開始点。 | 
| newVal | 塗り替えられた領域のピクセルの新しい値です。 | 
| loDiff | 現在観測されているピクセルと,そのコンポーネントに属する隣接ピクセルの1つ,あるいはコンポーネントに追加されるシードピクセルとの間の,最大の輝度/色差(下側). | 
| upDiff | 現在観測されているピクセルと、コンポーネントに属する隣接ピクセルの1つ、またはコンポーネントに追加されるシードピクセルとの間の最大上側輝度/色差。 | 
| rect | オプションの出力パラメータ.この関数によって,再描画される領域の最小境界矩形が設定されます. | 
| flags | 操作フラグ.最初の8ビットは,接続性の値を含みます.デフォルト値の4は,4つの最近接ピクセル(エッジを共有するピクセル)のみが考慮されることを意味します.接続性の値が8の場合は、8つの最近接ピクセル(コーナーを共有するピクセル)が考慮されることを意味します。次の8ビット(8-16)には、マスクを埋めるための1~255の値が入ります(デフォルト値は1)。例えば、「4|(255 << 8)」とすると、4つの最近接ピクセルが考慮され、マスクは255の値で埋められます。以下の追加オプションは上位ビットを使用するため、接続性やマスクの塗りつぶし値との組み合わせは、ビット単位または(|)を使用してさらに行うことができます(参照)。FloodFillFlags. | 
 は、画像のピクセル
は、画像のピクセル に相当します.
に相当します.| CV_EXPORTS int cv::floodFill | ( | InputOutputArray | image, | 
| Point | seedPoint, | ||
| Scalar | newVal, | ||
| CV_OUT Rect * | rect
= 0, | ||
| Scalar | loDiff
= 
Scalar(), | ||
| Scalar | upDiff
= 
Scalar(), | ||
| int | flags
= 4 | ||
| ) | 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
なしのバリアントmaskパラメータ
| CV_EXPORTS_W void cv::integral | ( | InputArray | src, | 
| OutputArray | sum, | ||
| int | sdepth
= -1 | ||
| ) | 
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
| CV_EXPORTS_W double cv::threshold | ( | InputArray | src, | 
| OutputArray | dst, | ||
| double | thresh, | ||
| double | maxval, | ||
| int | type | ||
| ) | 
各配列要素に対して,固定レベルの閾値を適用します.
この関数は,マルチチャンネル配列に対して,固定レベルの閾値を適用します.この関数は通常,グレースケール画像から2値(バイナリ)画像を得るために利用されます(compareを利用することもできます),あるいは,ノイズの除去,つまり,小さすぎる,あるいは大きすぎる値を持つピクセルを除外するために利用されます.この関数がサポートする閾値には,いくつかの種類があります.これらは,typeパラメータで決定されます.
また,特殊な値THRESH_OTSUまたはTHRESH_TRIANGLEを上記の値の1つと組み合わせることもできます.このような場合,この関数は,Otsu's または Triangle アルゴリズムを用いて最適な閾値を決定し,指定された閾値の代わりにそれを利用します.
| src | 入力配列(マルチチャンネル,8ビットまたは32ビット浮動小数点). | 
| dst | src と同じサイズ,同じ型,同じチャンネル数の出力配列. | 
| thresh | しきい値. | 
| maxval | 閾値処理タイプで利用される最大値.THRESH_BINARYおよびTHRESH_BINARY_INVスレッショルドタイプで利用される最大値. | 
| type | 閾値処理の種類(参照ThresholdTypes). |