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

實現基於 [126] 的格雷碼模式的類。 更多...

#include <opencv2/structured_light/graycodepattern.hpp>

cv::structured_light::GrayCodePattern 的協作圖

結構體  Params
 StructuredLightPattern 建構函式的引數。 更多...
 

公共成員函式

virtual void getImagesForShadowMasks (InputOutputArray blackImage, InputOutputArray whiteImage) const =0
 生成陰影掩模計算所需的全黑和全白影像。
 
virtual size_t getNumberOfPatternImages () const =0
 獲取格雷碼模式所需的模式影像數量。
 
virtual bool getProjPixel (InputArrayOfArrays patternImages, int x, int y, Point &projPix) const =0
 對於相機的 (x,y) 畫素,返回對應的投影儀畫素。
 
virtual void setBlackThreshold (size_t value)=0
 設定黑色閾值,解碼時需要(陰影掩模計算)。
 
virtual void setWhiteThreshold (size_t value)=0
 設定白色閾值,解碼時需要。
 
- 繼承自 cv::structured_light::StructuredLightPattern 的公共成員函式
virtual bool decode (const std::vector< std::vector< Mat > > &patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages=noArray(), InputArrayOfArrays whiteImages=noArray(), int flags=DECODE_3D_UNDERWORLD) const =0
 解碼結構光模式,生成視差圖。
 
virtual bool generate (OutputArrayOfArrays patternImages)=0
 生成要投影的結構光圖案。
 
- 繼承自 cv::Algorithm 的公共成員函式
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual bool empty () const
 如果 Algorithm 為空(例如,在最開始或在不成功的讀取之後),則返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 從檔案儲存中讀取演算法引數。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 將演算法引數儲存到檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 

靜態公共成員函式

static Ptr< GrayCodePatterncreate (const GrayCodePattern::Params &parameters=GrayCodePattern::Params())
 建構函式。
 
static Ptr< GrayCodePatterncreate (int width, int height)
 
- 繼承自 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
 

詳細描述

實現基於 [126] 的格雷碼模式的類。

模式影像的生成是使用格雷編碼和傳統的白色和黑色顏色來執行的。

關於兩個影像軸 x、y 的資訊分別編碼到兩個不同的模式序列中。解析度為 (P_res_x, P_res_y) 的投影儀 P 將導致 Ncols = log 2 (P_res_x) 編碼的模式影像表示列,以及 Nrows = log 2 (P_res_y) 編碼的模式影像表示行。例如,解析度為 1024x768 的投影儀將導致 Ncols = 10 和 Nrows = 10。

但是,生成的模式序列由常規顏色和顏色反轉影像組成:反轉的模式影像是與原始影像結構相同但顏色反轉的影像。這提供了一種有效的方法,可以輕鬆確定每個畫素在點亮時(最高值)和未點亮時(最低值)的強度值。因此,對於解析度為 1024x768 的投影儀,模式影像的數量將為 Ncols * 2 + Nrows * 2 = 40。

成員函式文件

◆ create() [1/2]

static Ptr< GrayCodePattern > cv::structured_light::GrayCodePattern::create ( const GrayCodePattern::Params & parameters = GrayCodePattern::Params())
static
Python
cv.structured_light.GrayCodePattern.create(width, height) -> retval
cv.structured_light.GrayCodePattern_create(width, height) -> retval

建構函式。

引數
parametersGrayCodePattern parameters GrayCodePattern::Params: 投影儀的寬度和高度。

◆ create() [2/2]

static Ptr< GrayCodePattern > cv::structured_light::GrayCodePattern::create ( int width,
int height )
static
Python
cv.structured_light.GrayCodePattern.create(width, height) -> retval
cv.structured_light.GrayCodePattern_create(width, height) -> retval

◆ getImagesForShadowMasks()

virtual void cv::structured_light::GrayCodePattern::getImagesForShadowMasks ( InputOutputArray blackImage,
InputOutputArray whiteImage ) const
純虛擬函式
Python
cv.structured_light.GrayCodePattern.getImagesForShadowMasks(blackImage, whiteImage) -> blackImage, whiteImage

生成陰影掩模計算所需的全黑和全白影像。

為了識別陰影區域,3DUNDERWORLD 演算法計算兩個影像的陰影掩模,其中畫素未被投影儀的光照亮,因此沒有編碼資訊,從每個相機捕獲的白色和黑色影像開始。此方法生成這兩個額外的影像以進行投影。

引數
blackImage生成的全黑 CV_8U 影像,以投影儀的解析度。
whiteImage生成的全白 CV_8U 影像,以投影儀的解析度。

◆ getNumberOfPatternImages()

virtual size_t cv::structured_light::GrayCodePattern::getNumberOfPatternImages ( ) const
純虛擬函式
Python
cv.structured_light.GrayCodePattern.getNumberOfPatternImages() -> retval

獲取格雷碼模式所需的模式影像數量。

返回
格雷碼模式所需的模式影像數量。

◆ getProjPixel()

virtual bool cv::structured_light::GrayCodePattern::getProjPixel ( InputArrayOfArrays patternImages,
int x,
int y,
Point & projPix ) const
純虛擬函式
Python
cv.structured_light.GrayCodePattern.getProjPixel(patternImages, x, y) -> retval, projPix

對於相機的 (x,y) 畫素,返回對應的投影儀畫素。

該函式將相機獲取的模式影像中的每個畫素解碼為其對應的十進位制數,表示投影儀的列和行,從而提供相機畫素和投影儀畫素之間的對映。

引數
patternImages相機獲取的模式影像,儲存在灰度向量 < Mat > 中。
x影像畫素的 x 座標。
y影像畫素的 y 座標。
projPix與相機畫素對應的投影儀畫素:projPix.x 和 projPix.y 是投影儀畫素的影像座標,該畫素對應於在相機中解碼的畫素。

◆ setBlackThreshold()

virtual void cv::structured_light::GrayCodePattern::setBlackThreshold ( size_t )
純虛擬函式
Python
cv.structured_light.GrayCodePattern.setBlackThreshold() ->

設定黑色閾值,解碼時需要(陰影掩模計算)。

黑色閾值是一個介於 0-255 之間的數字,表示有效畫素所需的最小亮度差異,介於完全照明(白色)和未照明影像(黑色)之間;用於 computeShadowMasks 方法。

引數
所需的黑色閾值。

◆ setWhiteThreshold()

virtual void cv::structured_light::GrayCodePattern::setWhiteThreshold ( size_t )
純虛擬函式
Python
cv.structured_light.GrayCodePattern.setWhiteThreshold() ->

設定白色閾值,解碼時需要。

白色閾值是一個介於 0-255 之間的數字,表示有效畫素所需的最小亮度差異,介於格雷碼模式及其反轉影像之間;用於 getProjPixel 方法。

引數
所需的白色閾值。

此類文件是從以下檔案生成的