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

詳細説明

列挙型

enum  cv::AdaptiveThresholdTypes {
  cv::ADAPTIVE_THRESH_MEAN_C = 0 ,
  cv::ADAPTIVE_THRESH_GAUSSIAN_C = 1
}
 
enum  cv::DistanceTransformLabelTypes {
  cv::DIST_LABEL_CCOMP = 0 ,
  cv::DIST_LABEL_PIXEL = 1
}
 distanceTransform アルゴリズムのフラグ 続き...
 
enum  cv::DistanceTransformMasks {
  cv::DIST_MASK_3 = 3 ,
  cv::DIST_MASK_5 = 5 ,
  cv::DIST_MASK_PRECISE = 0
}
 距離変換のマスクサイズ。 続き...
 
enum  cv::FloodFillFlags {
  cv::FLOODFILL_FIXED_RANGE = 1 << 16 ,
  cv::FLOODFILL_MASK_ONLY = 1 << 17
}
 floodfill アルゴリズムのフラグ 続き...
 
enum  cv::GrabCutClasses {
  cv::GC_BGD = 0 ,
  cv::GC_FGD = 1 ,
  cv::GC_PR_BGD = 2 ,
  cv::GC_PR_FGD = 3
}
 GrabCut アルゴリズムにおけるピクセルのクラス 続き...
 
enum  cv::GrabCutModes {
  cv::GC_INIT_WITH_RECT = 0 ,
  cv::GC_INIT_WITH_MASK = 1 ,
  cv::GC_EVAL = 2 ,
  cv::GC_EVAL_FREEZE_MODEL = 3
}
 GrabCut アルゴリズムのフラグ。 続き...
 
enum  cv::ThresholdTypes {
  cv::THRESH_BINARY = 0 ,
  cv::THRESH_BINARY_INV = 1 ,
  cv::THRESH_TRUNC = 2 ,
  cv::THRESH_TOZERO = 3 ,
  cv::THRESH_TOZERO_INV = 4 ,
  cv::THRESH_MASK = 7 ,
  cv::THRESH_OTSU = 8 ,
  cv::THRESH_TRIANGLE = 16 ,
  cv::THRESH_DRYRUN = 128
}
 

関数

void cv::adaptiveThreshold (InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
 配列に適応的しきい値処理を適用する。
 
void cv::blendLinear (InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst)
 
void cv::distanceTransform (InputArray src, OutputArray dst, int distanceType, int maskSize, int dstType=CV_32F)
 
void cv::distanceTransform (InputArray src, OutputArray dst, OutputArray labels, int distanceType, int maskSize, int labelType=DIST_LABEL_CCOMP)
 ソース画像の各ピクセルについて、最も近いゼロピクセルまでの距離を計算する。
 
int cv::floodFill (InputOutputArray image, InputOutputArray mask, Point seedPoint, Scalar newVal, Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4)
 連結成分を指定した色で塗りつぶす。
 
int cv::floodFill (InputOutputArray image, Point seedPoint, Scalar newVal, Rect *rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4)
 
void cv::integral (InputArray src, OutputArray sum, int sdepth=-1)
 
void cv::integral (InputArray src, OutputArray sum, OutputArray sqsum, int sdepth=-1, int sqdepth=-1)
 
void cv::integral (InputArray src, OutputArray sum, OutputArray sqsum, OutputArray tilted, int sdepth=-1, int sqdepth=-1)
 画像の積分を計算する。
 
double cv::threshold (InputArray src, OutputArray dst, double thresh, double maxval, int type)
 各配列要素に固定しきい値処理を適用する。
 
double cv::thresholdWithMask (InputArray src, InputOutputArray dst, InputArray mask, double thresh, double maxval, int type)
 threshold と同じだが、省略可能なマスクを伴う。
 

列挙型詳解

◆ AdaptiveThresholdTypes

#include <opencv2/imgproc.hpp>

適応的しきい値アルゴリズム

参照
adaptiveThreshold
列挙値
ADAPTIVE_THRESH_MEAN_C 
Python: cv.ADAPTIVE_THRESH_MEAN_C

しきい値 \(T(x,y)\) は、\((x, y)\) の \(\texttt{blockSize} \times \texttt{blockSize}\) 近傍の平均から C を引いた値である

ADAPTIVE_THRESH_GAUSSIAN_C 
Python: cv.ADAPTIVE_THRESH_GAUSSIAN_C

しきい値 \(T(x, y)\) は、\((x, y)\) の \(\texttt{blockSize} \times \texttt{blockSize}\) 近傍の重み付き和(ガウシアンウィンドウとの相互相関)から C を引いた値である。指定された blockSize に対してデフォルトのシグマ(標準偏差)が使われる。getGaussianKernel を参照

◆ DistanceTransformLabelTypes

#include <opencv2/imgproc.hpp>

distanceTransform アルゴリズムのフラグ

列挙値
DIST_LABEL_CCOMP 
Python: cv.DIST_LABEL_CCOMP

src 内のゼロの各連結成分(および、その連結成分に最も近いすべての非ゼロピクセル)に同じラベルが割り当てられる

DIST_LABEL_PIXEL 
Python: cv.DIST_LABEL_PIXEL

各ゼロピクセル(および、それに最も近いすべての非ゼロピクセル)に独自のラベルが付与される。

◆ DistanceTransformMasks

#include <opencv2/imgproc.hpp>

距離変換のマスクサイズ。

列挙値
DIST_MASK_3 
Python: cv.DIST_MASK_3

mask=3

DIST_MASK_5 
Python: cv.DIST_MASK_5

mask=5

DIST_MASK_PRECISE 
Python: cv.DIST_MASK_PRECISE

◆ FloodFillFlags

#include <opencv2/imgproc.hpp>

floodfill アルゴリズムのフラグ

列挙値
FLOODFILL_FIXED_RANGE 
Python: cv.FLOODFILL_FIXED_RANGE

設定すると、現在のピクセルとシードピクセルの差を考慮する。設定しない場合は隣接ピクセル間の差を考慮する(すなわち範囲が浮動的になる)。

FLOODFILL_MASK_ONLY 
Python: cv.FLOODFILL_MASK_ONLY

設定すると、関数は画像を変更せず( newVal は無視される)、上述のとおり flags のビット8〜16で指定された値でマスクのみを塗りつぶす。このオプションは mask 引数を持つ関数のバリアントでのみ意味を持つ。

◆ GrabCutClasses

#include <opencv2/imgproc.hpp>

GrabCut アルゴリズムにおけるピクセルのクラス

列挙値
GC_BGD 
Python: cv.GC_BGD

明らかに背景であるピクセル

GC_FGD 
Python: cv.GC_FGD

明らかに前景(オブジェクト)であるピクセル

GC_PR_BGD 
Python: cv.GC_PR_BGD

背景である可能性があるピクセル

GC_PR_FGD 
Python: cv.GC_PR_FGD

前景である可能性があるピクセル

◆ GrabCutModes

#include <opencv2/imgproc.hpp>

GrabCut アルゴリズムのフラグ。

列挙値
GC_INIT_WITH_RECT 
Python: cv.GC_INIT_WITH_RECT

この関数は、与えられた矩形を用いて状態とマスクを初期化する。その後、アルゴリズムを iterCount 回反復実行する。

GC_INIT_WITH_MASK 
Python: cv.GC_INIT_WITH_MASK

この関数は、与えられたマスクを用いて状態を初期化する。GC_INIT_WITH_RECT と GC_INIT_WITH_MASK は組み合わせて使用できることに注意。その場合、ROI の外側のすべてのピクセルは自動的に GC_BGD で初期化される。

GC_EVAL 
Python: cv.GC_EVAL

この値は、アルゴリズムを単に再開すべきことを意味する。

GC_EVAL_FREEZE_MODEL 
Python: cv.GC_EVAL_FREEZE_MODEL

この値は、固定モデルで grabCut アルゴリズムを(1反復だけ)実行すべきことを意味する

◆ ThresholdTypes

#include <opencv2/imgproc.hpp>

しきい値処理の種類

列挙値
THRESH_BINARY 
Python: cv.THRESH_BINARY

\[\texttt{dst} (x,y) = \fork{\texttt{maxval}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\]

THRESH_BINARY_INV 
Python: cv.THRESH_BINARY_INV

\[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{maxval}}{otherwise}\]

THRESH_TRUNC 
Python: cv.THRESH_TRUNC

\[\texttt{dst} (x,y) = \fork{\texttt{threshold}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\]

THRESH_TOZERO 
Python: cv.THRESH_TOZERO

\[\texttt{dst} (x,y) = \fork{\texttt{src}(x,y)}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\]

THRESH_TOZERO_INV 
Python: cv.THRESH_TOZERO_INV

\[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\]

THRESH_MASK 
Python: cv.THRESH_MASK
THRESH_OTSU 
Python: cv.THRESH_OTSU

フラグ、最適なしきい値を選択するために大津 (Otsu) のアルゴリズムを使用する

THRESH_TRIANGLE 
Python: cv.THRESH_TRIANGLE

フラグ、最適なしきい値を選択するために Triangle アルゴリズムを使用する

THRESH_DRYRUN 
Python: cv.THRESH_DRYRUN

フラグ、しきい値の計算のみを行い(OTSU/TRIANGLE で有用)、実際のしきい値処理は実行しない

関数詳解

◆ adaptiveThreshold()

void cv::adaptiveThreshold ( InputArray src,
OutputArray dst,
double maxValue,
int adaptiveMethod,
int thresholdType,
int blockSize,
double C )
Python:
cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) -> dst

#include <opencv2/imgproc.hpp>

配列に適応的しきい値処理を適用する。

この関数は、次の式に従ってグレースケール画像を二値画像に変換する:

  • THRESH_BINARY

    \[dst(x,y) = \fork{\texttt{maxValue}}{if \(src(x,y) > T(x,y)\)}{0}{otherwise}\]

  • THRESH_BINARY_INV

    \[dst(x,y) = \fork{0}{if \(src(x,y) > T(x,y)\)}{\texttt{maxValue}}{otherwise}\]

    where \(T(x,y)\) is a threshold calculated individually for each pixel (see adaptiveMethod parameter).

この関数は画像をインプレースで処理できる。

引数
src8ビット、シングルチャンネルの入力画像。
dstsrc と同じサイズ・同じ型の出力画像。
maxValue条件を満たすピクセルに割り当てられる非ゼロ値
adaptiveMethod使用する適応的しきい値処理アルゴリズム。AdaptiveThresholdTypes を参照。境界の処理には BORDER_REPLICATE | BORDER_ISOLATED が使われる。
thresholdTypeしきい値処理の種類。THRESH_BINARY または THRESH_BINARY_INV のいずれかでなければならない。ThresholdTypes を参照。
blockSizeピクセルのしきい値を計算するために使われる、ピクセル近傍のサイズ: 3、5、7 など。
C平均または重み付き平均(後述の詳細を参照)から差し引かれる定数。通常は正の値だが、ゼロや負の値でもよい。
参照
threshold, blur, GaussianBlur

◆ blendLinear()

void cv::blendLinear ( InputArray src1,
InputArray src2,
InputArray weights1,
InputArray weights2,
OutputArray dst )
Python:
cv.blendLinear(src1, src2, weights1, weights2[, dst]) -> dst

#include <opencv2/imgproc.hpp>

2枚の画像の線形ブレンディングを行う:

\[ \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) \]

引数
src1型は CV_8UC(n) または CV_32FC(n) である。ここで n は正の整数。
src2src1 と同じ型・サイズである。
weights1型は CV_32FC1 で、src1 と同じサイズである。
weights2型は CV_32FC1 で、src1 と同じサイズである。
dstsrc1 と同じサイズ・型でない場合に作成される。

◆ distanceTransform() [1/2]

void cv::distanceTransform ( InputArray src,
OutputArray dst,
int distanceType,
int maskSize,
int dstType = CV_32F )
Python:
cv.distanceTransform(src, distanceType, maskSize[, dst[, dstType]]) -> dst
cv.distanceTransformWithLabels(src, distanceType, maskSize[, dst[, labels[, labelType]]]) -> dst, labels

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
src8ビット、シングルチャンネル(2値)の入力画像。
dst計算された距離を格納する出力画像。src と同じサイズの、8ビットまたは32ビット浮動小数点のシングルチャンネル画像である。
distanceType距離の種類。DistanceTypes を参照。
maskSize距離変換マスクのサイズ。DistanceTransformMasks を参照。距離の種類が DIST_L1 または DIST_C の場合、\(3\times 3\) マスクが \(5\times 5\) やそれ以上のアパーチャと同じ結果を与えるため、この引数は強制的に 3 になる。
dstType出力画像の型。CV_8U または CV_32F を指定できる。型 CV_8U は関数の第1のバリアントかつ distanceType == DIST_L1 の場合にのみ使用できる。

◆ distanceTransform() [2/2]

void cv::distanceTransform ( InputArray src,
OutputArray dst,
OutputArray labels,
int distanceType,
int maskSize,
int labelType = DIST_LABEL_CCOMP )
Python:
cv.distanceTransform(src, distanceType, maskSize[, dst[, dstType]]) -> dst
cv.distanceTransformWithLabels(src, distanceType, maskSize[, dst[, labels[, labelType]]]) -> dst, labels

#include <opencv2/imgproc.hpp>

入力画像の各ピクセルについて、最も近いゼロピクセルまでの距離を計算する。

cv::distanceTransform 関数は、二値画像の各ピクセルから最も近いゼロピクセルまでの近似的または正確な距離を計算する。ゼロの画像ピクセルについては、距離は当然ゼロになる。

maskSize == DIST_MASK_PRECISE かつ distanceType == DIST_L2 の場合、関数は [89] で説明されているアルゴリズムを実行する。このアルゴリズムは TBB ライブラリで並列化されている。

それ以外の場合は、アルゴリズム [36] が使用される。これは、あるピクセルに対して、関数が基本的なシフト(水平、垂直、対角、またはナイトの移動。最後のものは \(5\times 5\) マスクで利用可能)からなる最近傍のゼロピクセルへの最短経路を見つけることを意味する。全体の距離は、これらの基本距離の合計として計算される。距離関数は対称でなければならないため、すべての水平・垂直シフトは同じコスト(a と表記)を持ち、すべての対角シフトは同じコスト(b と表記)を持ち、すべてのナイトの移動は同じコスト(c と表記)を持つ必要がある。DIST_C および DIST_L1 の型では距離は正確に計算されるが、DIST_L2(ユークリッド距離)では距離は相対誤差付きでしか計算できない(\(5\times 5\) マスクの方がより正確な結果を与える)。abc について、OpenCV は元の論文で提案された値を使用する:

  • DIST_L1: a = 1, b = 2
  • DIST_L2:
    • 3 x 3: a=0.955, b=1.3693
    • 5 x 5: a=1, b=1.4, c=2.1969
  • DIST_C: a = 1, b = 1

通常、高速かつ粗い距離推定 DIST_L2 には \(3\times 3\) マスクが使用される。より正確な距離推定 DIST_L2 には \(5\times 5\) マスクまたは正確なアルゴリズムが使用される。正確なアルゴリズムも近似アルゴリズムも、ピクセル数に対して線形であることに注意。

この関数のバリアントは、各ピクセル \((x, y)\) について最小距離を計算するだけでなく、ゼロピクセルから成る最も近い連結成分(labelType==DIST_LABEL_CCOMP)または最も近いゼロピクセル(labelType==DIST_LABEL_PIXEL)も特定する。成分/ピクセルのインデックスは labels(x, y) に格納される。labelType==DIST_LABEL_CCOMP の場合、関数は入力画像内のゼロピクセルの連結成分を自動的に見つけ、それらを異なるラベルでマークする。labelType==DIST_LABEL_PIXEL の場合、関数は入力画像を走査し、すべてのゼロピクセルを異なるラベルでマークする。

このモードでも、計算量は依然として線形である。すなわち、この関数は二値画像のボロノイ図を非常に高速に計算する手段を提供する。現在のところ、第2のバリアントは近似的な距離変換アルゴリズムしか使用できない。つまり maskSize=DIST_MASK_PRECISE はまだサポートされていない。

引数
src8ビット、シングルチャンネル(2値)の入力画像。
dst計算された距離を格納する出力画像。src と同じサイズの、8ビットまたは32ビット浮動小数点のシングルチャンネル画像である。
labelsラベルの出力2次元配列(離散ボロノイ図)。型は CV_32SC1 で、src と同じサイズである。
distanceType距離の種類。DistanceTypes を参照。
maskSize距離変換マスクのサイズ。DistanceTransformMasks を参照。DIST_MASK_PRECISE はこのバリアントではサポートされない。距離の種類が DIST_L1 または DIST_C の場合、\(3\times 3\) マスクが \(5\times 5\) やそれ以上のアパーチャと同じ結果を与えるため、この引数は強制的に 3 になる。
labelType構築するラベル配列の種類。DistanceTransformLabelTypes を参照。

◆ floodFill() [1/2]

int cv::floodFill ( InputOutputArray image,
InputOutputArray mask,
Point seedPoint,
Scalar newVal,
Rect * rect = 0,
Scalar loDiff = Scalar(),
Scalar upDiff = Scalar(),
int flags = 4 )
Python:
cv.floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]]) -> retval, image, mask, rect

#include <opencv2/imgproc.hpp>

連結成分を指定した色で塗りつぶす。

cv::floodFill 関数は、シード点から始まる連結成分を指定した色で塗りつぶす。連結性は隣接ピクセルの色/明るさの近さによって決まる。\((x,y)\) のピクセルは、次の条件を満たす場合に再塗りつぶし領域に属するとみなされる:

  • in case of a grayscale image and floating range

    \[\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\]

  • in case of a grayscale image and fixed range

    \[\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}\]

  • in case of a color image and floating range

    \[\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\]

    \[\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\]

    and

    \[\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\]

  • in case of a color image and fixed range

    \[\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,\]

    \[\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\]

    and

    \[\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\]

ここで \(src(x',y')\) は、すでに連結成分に属することが分かっている隣接ピクセルのうちの1つの値である。すなわち、連結成分に追加されるには、ピクセルの色/明るさが次のいずれかに十分近い必要がある:

  • 浮動範囲 (floating range) の場合は、すでに連結成分に属する隣接ピクセルのうちの1つの色/明るさ。
  • 固定範囲 (fixed range) の場合は、シード点の色/明るさ。

これらの関数は、連結成分を指定した色でその場で (in-place) マークしたり、マスクを作成してから輪郭を抽出したり、領域を別の画像にコピーしたりするために使用する。

引数
image入出力の1または3チャンネル、8ビットまたは浮動小数点の画像。2番目の関数の変種で FLOODFILL_MASK_ONLY フラグが設定されていない限り、この画像は関数によって変更される。後述の詳細を参照。
mask操作マスク。シングルチャンネルの8ビット画像で、画像より幅・高さがそれぞれ2ピクセル大きい必要がある。空の Mat が渡された場合は自動的に作成される。これは入力かつ出力の引数なので、初期化の責任はユーザにある。フラッドフィルは入力マスク内の非ゼロのピクセルを越えて広がることはできない。たとえば、エッジ検出器の出力をマスクとして使用し、エッジで塗りつぶしを止めることができる。出力では、画像内の塗りつぶされたピクセルに対応するマスク内のピクセルが 1、または以下で説明する flags で指定された値に設定される。さらに、内部処理を簡素化するため、関数はマスクの境界を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 の値で塗りつぶす。以下の追加オプションはより上位のビットを占めるため、ビット単位の or (|) を使って連結性やマスク塗りつぶし値とさらに組み合わせることができる。FloodFillFlags を参照。
覚え書き
マスクは塗りつぶし対象の画像より大きいため、image 内のピクセル \((x, y)\) は mask 内のピクセル \((x+1, y+1)\) に対応する。
参照
findContours

◆ floodFill() [2/2]

int cv::floodFill ( InputOutputArray image,
Point seedPoint,
Scalar newVal,
Rect * rect = 0,
Scalar loDiff = Scalar(),
Scalar upDiff = Scalar(),
int flags = 4 )
Python:
cv.floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]]) -> retval, image, mask, rect

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

mask 引数を持たないバリアント

◆ integral() [1/3]

void cv::integral ( InputArray src,
OutputArray sum,
int sdepth = -1 )
Python:
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ integral() [2/3]

void cv::integral ( InputArray src,
OutputArray sum,
OutputArray sqsum,
int sdepth = -1,
int sqdepth = -1 )
Python:
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ integral() [3/3]

void cv::integral ( InputArray src,
OutputArray sum,
OutputArray sqsum,
OutputArray tilted,
int sdepth = -1,
int sqdepth = -1 )
Python:
cv.integral(src[, sum[, sdepth]]) -> sum
cv.integral2(src[, sum[, sqsum[, sdepth[, sqdepth]]]]) -> sum, sqsum
cv.integral3(src[, sum[, sqsum[, tilted[, sdepth[, sqdepth]]]]]) -> sum, sqsum, tilted

#include <opencv2/imgproc.hpp>

画像の積分を計算する。

この関数は元画像に対して1つ以上の積分画像を以下のように計算する:

\[\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\]

\[\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\]

\[\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\]

これらの積分画像 (integral image) を使うと、画像の特定の正立矩形領域または回転矩形領域にわたる合計・平均・標準偏差を定数時間で計算できる。例えば次のように計算する:

\[\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)\]

これにより、例えば可変ウィンドウサイズでの高速な平滑化や高速なブロック相関が可能になる。マルチチャンネル画像の場合、各チャンネルの合計はそれぞれ独立に累積される。

実用的な例として、次の図は正立矩形 Rect(4,4,3,2) と傾斜矩形 Rect(5,1,2,3) の積分の計算を示している。元画像で選択されたピクセルと、積分画像 sum および tilted における対応するピクセルが示されている。

integral calculation example
引数
src\(W \times H\) の入力画像。8ビットまたは浮動小数点(32f または 64f)。
sum\((W+1)\times (H+1)\) の積分画像。32ビット整数または浮動小数点(32f または 64f)。
sqsumピクセル値の二乗に対する積分画像。\((W+1)\times (H+1)\) の倍精度浮動小数点(64f)配列である。
tilted45度回転した画像に対する積分。sum と同じデータ型の \((W+1)\times (H+1)\) 配列である。
sdepth積分画像および傾斜積分画像の希望するビット深度。CV_32S, CV_32F, または CV_64F。
sqdepthピクセル値の2乗の積分画像の希望するビット深度。CV_32F または CV_64F。

◆ threshold()

double cv::threshold ( InputArray src,
OutputArray dst,
double thresh,
double maxval,
int type )
Python:
cv.threshold(src, thresh, maxval, type[, dst]) -> retval, dst

#include <opencv2/imgproc.hpp>

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

この関数は、マルチチャンネル配列に固定レベルのしきい値処理を適用する。この関数は通常、グレースケール画像から2値 (バイナリ) 画像を得るために (この目的には compare も使用できる)、あるいはノイズを除去する、すなわち値が小さすぎたり大きすぎたりするピクセルをフィルタリングするために使われる。この関数では複数の種類のしきい値処理がサポートされている。それらは type 引数によって決まる。

また、特別な値 THRESH_OTSU または THRESH_TRIANGLE を上記の値のいずれかと組み合わせてもよい。これらの場合、関数は大津 (Otsu) の方法またはTriangleアルゴリズムを用いて最適なしきい値を決定し、指定された thresh の代わりにそれを使用する。

覚え書き
現在、大津 (Otsu) の方法は CV_8UC1 および CV_16UC1 画像に対してのみ実装されており、Triangleの方法は CV_8UC1 画像に対してのみ実装されている。
引数
src入力配列(マルチチャンネル、CV_8U、CV_16S、CV_16U、CV_32F または CV_64F)。
dstsrc と同じサイズ・型・同じチャンネル数の出力配列。
threshしきい値。
maxvalTHRESH_BINARY および THRESH_BINARY_INV のしきい値処理の種類で使用する最大値。
typeしきい値処理の種類(ThresholdTypes を参照)。
戻り値
大津 (Otsu) またはTriangleの方法を使用した場合に計算されるしきい値。
参照
thresholdWithMask, adaptiveThreshold, findContours, compare, min, max

◆ thresholdWithMask()

double cv::thresholdWithMask ( InputArray src,
InputOutputArray dst,
InputArray mask,
double thresh,
double maxval,
int type )
Python:
cv.thresholdWithMask(src, dst, mask, thresh, maxval, type) -> retval, dst

#include <opencv2/imgproc.hpp>

threshold と同じだが、省略可能なマスクを指定できる。

覚え書き
マスクが空の場合、thresholdWithMaskthreshold と等価である。マスクが空でない場合、外れたピクセルがそのまま残されるように、dst は src と同じサイズおよび型でなければならない。
引数
src入力配列(マルチチャンネル、8ビットまたは32ビット浮動小数点)。
dstsrc と同じサイズ・型・同じチャンネル数の出力配列。
mask省略可能なマスク(src と同じサイズ、8ビット)。
threshしきい値。
maxvalTHRESH_BINARY および THRESH_BINARY_INV のしきい値処理の種類で使用する最大値。
typeしきい値処理の種類(ThresholdTypes を参照)。
戻り値
大津 (Otsu) またはTriangleの方法を使用した場合に計算されるしきい値。
参照
threshold, adaptiveThreshold, findContours, compare, min, max