型態學常用的4個運算:
- 膨脹(Dilation)
- 侵蝕(Erosion)
- 斷開(Opening)
- 閉合(Closing)
運用層面:
- 消除影像中的雜訊時 (Removing noise)
- 計算影像中的連通物件時 (Isolation of individual elements and joining disparate elements in an image.)
- 尋找影像中最大物件或最小區域時 (Finding of intensity bumps or holes in an image)
A是目標影像,B是結構元素,膨脹就是A⊕B
A是目標影像,B是結構元素,侵蝕就是AΘB
先侵蝕再膨脹,斷開就是(AΘB)⊕B
先膨脹再侵蝕,閉合就是(A⊕B)ΘB
void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
src
輸入影像 (CV_8U、CV_16U、CV_16S、CV_32F或CV_64F)dst
輸出影像kernel
膨脹結構元素anchor
結構元素的原點iterations
膨脹次數borderType
borderValue
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
cv::Mat dilateImg;
cv::dilate(srcImg, dilateImg, element, cv::Point(-1,-1), 1);
void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
src
輸入影像 (CV_8U、CV_16U、CV_16S、CV_32F或CV_64F)dst
輸出影像kernel
侵蝕結構元素anchor
結構元素的原點iterations
侵蝕次數borderType
borderValue
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
cv::Mat erodeImg;
cv::erode(srcImg, erodeImg, element, cv::Point(-1,-1), 1);
shape
MORPH_RECT、MORPH_CROSS、MORPH_ELLIPSEksize
結構元素的大小anchor
結構元素的原點
void morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
src
輸入影像 (CV_8U、CV_16U、CV_16S、CV_32F或CV_64F)dst
輸出影像kernel
侵蝕結構元素op
型態學的類別
- MORPH_OPEN
- MORPH_CLOSE
- MORPH_GRADIENT
- MORPH_TOPHAT
- MORPH_BLACKHAT
- MORPH_HITMISS
iterations
膨脹或侵蝕次數borderType
borderValue
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
cv::Mat closeImg;
cv::morphologyEx( srcImg, closeImg, cv::MORPH_CLOSE, element);
cv::Mat openImg;
cv::morphologyEx( srcImg, openImg, cv::MORPH_OPEN, element);
各種方法的結果
詳細Sample Code請參考GitHub