![]() |
OpenCV 4.12.0
開源計算機視覺
|
這些函式支援對二值影像進行形態學操作。為了提高速度和空間效率,二值影像使用遊程表示法進行編碼。這種表示法將連續的水平“on”畫素序列組合成一個“遊程”。一個遊程的特徵是遊程中第一個畫素的列位置、遊程中最後一個畫素的列位置和行位置。對於包含大面積連續“on”和“off”畫素的二值影像,這種表示法非常緊湊。棋盤格圖案就是一個很好的例子。這種表示法不太適合由隨機噪聲影像或其他相鄰畫素之間相關性很小的影像建立的二值影像。
此處支援的形態學操作與 imgproc 模組中支援的操作非常相似。一般來說,它們速度很快。但是,在某些情況下,它們比 imgproc 中的函式慢。 imgproc 模組對 cv::MORPH_RECT 和 cv::MORPH_CROSS 結構元素提供了非常好的支援。此外,小結構元素在 imgproc 中速度非常快(可能是由於 opencl 支援)。因此,對於較大的結構元素(cv::MORPH_ELLIPSE 或自定義結構元素),建議使用此模組中的函式。提供了一個示例應用程式 (run_length_morphology_demo),該應用程式允許比較使用遊程編碼的函式的形態學運算速度和給定影像的 imgproc 函式的速度。
遊程編碼影像儲存在標準 opencv 影像中。影像具有單列 cv::Point3i 元素。行數是遊程數 + 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 | result |
| 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 | result |
| rlKernel | kernel |
| 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 | result |
| rlKernel | kernel |
| 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 | result |
| op | cv::morphologyEx 支援的所有操作(cv::MORPH_HITMISS 除外) |
| rlKernel | kernel |
| bBoundaryOnForErosion | 指示是否假定影像邊界外的畫素對於侵蝕運算為 on(True:以與 cv::erode 的預設值相同的方式工作,False:速度稍快) |
| anchor | 元素內錨點的位置;預設值 (0, 0) 通常是元素中心。 |
| void cv::ximgproc::rl::paint | ( | InputOutputArray | image, |
| InputArray | rlSrc, | ||
| const cv::Scalar & | 值 ) |
#include <opencv2/ximgproc/run_length_morphology.hpp>
將行程長度編碼的二值影像繪製到影像中。
| image | 要繪製到的影像(當前僅支援單通道影像)。 |
| rlSrc | 遊程編碼影像 |
| 值 | 二值影像的所有前景畫素都設定為該值 |
| 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) |