OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::SIFT 類參考抽象

此類使用 D. Lowe [176] 的尺度不變特徵變換(SIFT)演算法提取關鍵點並計算描述符。 更多...

#include <opencv2/features2d.hpp>

cv::SIFT 的協作圖

公共成員函式

virtual double getContrastThreshold () const =0
 
virtual String getDefaultName () const CV_OVERRIDE
 
virtual double getEdgeThreshold () const =0
 
virtual int getNFeatures () const =0
 
virtual int getNOctaveLayers () const =0
 
virtual double getSigma () const =0
 
virtual void setContrastThreshold (double contrastThreshold)=0
 
virtual void setEdgeThreshold (double edgeThreshold)=0
 
virtual void setNFeatures (int maxFeatures)=0
 
virtual void setNOctaveLayers (int nOctaveLayers)=0
 
virtual void setSigma (double sigma)=0
 
- 繼承自 cv::Feature2D 的公共成員函式
virtual ~Feature2D ()
 
virtual void compute (InputArray image, std::vector< KeyPoint > &keypoints, OutputArray descriptors)
 計算影像(第一種變體)或影像集(第二種變體)中檢測到的一組關鍵點的描述符。
 
virtual void compute (InputArrayOfArrays images, std::vector< std::vector< KeyPoint > > &keypoints, OutputArrayOfArrays descriptors)
 
virtual int defaultNorm () const
 
virtual int descriptorSize () const
 
virtual int descriptorType () const
 
virtual void detect (InputArray image, std::vector< KeyPoint > &keypoints, InputArray mask=noArray())
 檢測影像(第一種變體)或影像集(第二種變體)中的關鍵點。
 
virtual void detect (InputArrayOfArrays images, std::vector< std::vector< KeyPoint > > &keypoints, InputArrayOfArrays masks=noArray())
 
virtual void detectAndCompute (InputArray image, InputArray mask, std::vector< KeyPoint > &keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)
 
virtual bool empty () const CV_OVERRIDE
 如果檢測器物件為空,則返回 true。
 
virtual void read (const FileNode &) CV_OVERRIDE
 從檔案儲存中讀取演算法引數。
 
void read (const String &fileName)
 
void write (const Ptr< FileStorage > &fs, const String &name) const
 
void write (const String &fileName) const
 
virtual void write (FileStorage &) const CV_OVERRIDE
 將演算法引數儲存到檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 
- 繼承自 cv::Algorithm 的公共成員函式
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
void write (FileStorage &fs, const String &name) const
 

靜態公共成員函式

static Ptr< SIFTcreate (int nfeatures, int nOctaveLayers, double contrastThreshold, double edgeThreshold, double sigma, int descriptorType, bool enable_precise_upscale=false)
 建立具有指定 `descriptorType` 的 SIFT
 
static Ptr< SIFTcreate (int nfeatures=0, int nOctaveLayers=3, double contrastThreshold=0.04, double edgeThreshold=10, double sigma=1.6, bool enable_precise_upscale=false)
 
- 繼承自 cv::Algorithm 的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 從檔案中載入演算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 從字串載入演算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 從檔案節點讀取演算法。
 

額外繼承的成員

- 繼承自 cv::Algorithm 的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

此類使用 D. Lowe [176] 的尺度不變特徵變換(SIFT)演算法提取關鍵點並計算描述符。

成員函式文件

◆ create() [1/2]

static Ptr< SIFT > cv::SIFT::create ( int nfeatures,
int nOctaveLayers,
double contrastThreshold,
double edgeThreshold,
double sigma,
int descriptorType,
bool enable_precise_upscale = false )
static
Python
cv.SIFT.create([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma[, enable_precise_upscale]]]]]]) -> retval
cv.SIFT.create(nfeatures, nOctaveLayers, contrastThreshold, edgeThreshold, sigma, descriptorType[, enable_precise_upscale]) -> retval
cv.SIFT_create([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma[, enable_precise_upscale]]]]]]) -> retval
cv.SIFT_create(nfeatures, nOctaveLayers, contrastThreshold, edgeThreshold, sigma, descriptorType[, enable_precise_upscale]) -> retval

建立具有指定 `descriptorType` 的 SIFT

引數
nfeatures要保留的最佳特徵數。特徵按其分數(在 SIFT 演算法中以區域性對比度衡量)進行排名
nOctaveLayers每個八度中的層數。3 是 D. Lowe 論文中使用的值。八度數根據影像解析度自動計算。
contrastThreshold用於過濾掉半均勻(低對比度)區域中弱特徵的對比度閾值。閾值越大,檢測器生成的特徵越少。
注意
應用過濾時,對比度閾值將除以 `nOctaveLayers`。當 `nOctaveLayers` 設定為預設值且您想使用 D. Lowe 論文中使用的值 0.03 時,請將此引數設定為 0.09。
引數
edgeThreshold用於過濾掉邊緣狀特徵的閾值。請注意,其含義與 `contrastThreshold` 不同,即 `edgeThreshold` 越大,過濾掉的特徵越少(保留的特徵越多)。
sigma應用於八度 #0 輸入影像的高斯 σ 值。如果您的影像是用弱相機和軟鏡頭拍攝的,您可能需要減小此值。
descriptorType描述符的型別。僅支援 CV_32F 和 CV_8U。
enable_precise_upscale是否啟用尺度金字塔中的精確上取樣,該取樣將索引 \(\texttt{x}\) 對映到 \(\texttt{2x}\)。這可以防止定位偏差。預設情況下停用此選項。

◆ create() [2/2]

static Ptr< SIFT > cv::SIFT::create ( int nfeatures = 0,
int nOctaveLayers = 3,
double contrastThreshold = 0.04,
double edgeThreshold = 10,
double sigma = 1.6,
bool enable_precise_upscale = false )
static
Python
cv.SIFT.create([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma[, enable_precise_upscale]]]]]]) -> retval
cv.SIFT.create(nfeatures, nOctaveLayers, contrastThreshold, edgeThreshold, sigma, descriptorType[, enable_precise_upscale]) -> retval
cv.SIFT_create([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma[, enable_precise_upscale]]]]]]) -> retval
cv.SIFT_create(nfeatures, nOctaveLayers, contrastThreshold, edgeThreshold, sigma, descriptorType[, enable_precise_upscale]) -> retval
引數
nfeatures要保留的最佳特徵數。特徵按其分數(在 SIFT 演算法中以區域性對比度衡量)進行排名
nOctaveLayers每個八度中的層數。3 是 D. Lowe 論文中使用的值。八度數根據影像解析度自動計算。
contrastThreshold用於過濾掉半均勻(低對比度)區域中弱特徵的對比度閾值。閾值越大,檢測器生成的特徵越少。
注意
應用過濾時,對比度閾值將除以 `nOctaveLayers`。當 `nOctaveLayers` 設定為預設值且您想使用 D. Lowe 論文中使用的值 0.03 時,請將此引數設定為 0.09。
引數
edgeThreshold用於過濾掉邊緣狀特徵的閾值。請注意,其含義與 `contrastThreshold` 不同,即 `edgeThreshold` 越大,過濾掉的特徵越少(保留的特徵越多)。
sigma應用於八度 #0 輸入影像的高斯 σ 值。如果您的影像是用弱相機和軟鏡頭拍攝的,您可能需要減小此值。
enable_precise_upscale是否啟用尺度金字塔中的精確上取樣,該取樣將索引 \(\texttt{x}\) 對映到 \(\texttt{2x}\)。這可以防止定位偏差。預設情況下停用此選項。

◆ getContrastThreshold()

virtual double cv::SIFT::getContrastThreshold ( ) const
純虛擬函式
Python
cv.SIFT.getContrastThreshold() -> retval

◆ getDefaultName()

virtual String cv::SIFT::getDefaultName ( ) const
virtual
Python
cv.SIFT.getDefaultName() -> retval

返回演算法字串識別符號。當物件儲存到檔案或字串時,此字串用作頂層 xml/yml 節點標籤。

重新實現自 cv::Feature2D

◆ getEdgeThreshold()

virtual double cv::SIFT::getEdgeThreshold ( ) const
純虛擬函式
Python
cv.SIFT.getEdgeThreshold() -> retval

◆ getNFeatures()

virtual int cv::SIFT::getNFeatures ( ) const
純虛擬函式
Python
cv.SIFT.getNFeatures() -> retval

◆ getNOctaveLayers()

virtual int cv::SIFT::getNOctaveLayers ( ) const
純虛擬函式
Python
cv.SIFT.getNOctaveLayers() -> retval

◆ getSigma()

virtual double cv::SIFT::getSigma ( ) const
純虛擬函式
Python
cv.SIFT.getSigma() -> retval

◆ setContrastThreshold()

virtual void cv::SIFT::setContrastThreshold ( double contrastThreshold)
純虛擬函式
Python
cv.SIFT.setContrastThreshold(contrastThreshold) ->

◆ setEdgeThreshold()

virtual void cv::SIFT::setEdgeThreshold ( double edgeThreshold)
純虛擬函式
Python
cv.SIFT.setEdgeThreshold(edgeThreshold) ->

◆ setNFeatures()

virtual void cv::SIFT::setNFeatures ( int maxFeatures)
純虛擬函式
Python
cv.SIFT.setNFeatures(maxFeatures) ->

◆ setNOctaveLayers()

virtual void cv::SIFT::setNOctaveLayers ( int nOctaveLayers)
純虛擬函式
Python
cv.SIFT.setNOctaveLayers(nOctaveLayers) ->

◆ setSigma()

virtual void cv::SIFT::setSigma ( double sigma)
純虛擬函式
Python
cv.SIFT.setSigma(sigma) ->

此類的文件生成自以下檔案