1. 程式人生 > 其它 >OpenCV之頂帽運算(C++實現)

OpenCV之頂帽運算(C++實現)

技術標籤:C++opencv影象處理opencv計算機視覺c++

頂帽運算,又被稱為禮帽運算,是原影象與開運算結果圖之差,數學表示式是:

dst = tophat(src, element) = src - open(src, element)

因為開運算帶來的結果是放大了裂縫或者區域性低亮度的區域,因此從原圖中減去開運算後的圖,得到的效果圖突出了比原圖輪廓周圍的區域更加明亮的區域,且這一操作與選擇的核的大小相關。

頂帽操作常用來分離比鄰近點亮一些的斑塊。當一幅影象具有大幅的背景,而微小物體比較有規律的情況下,可以使用頂帽運算進行背景提取。

程式碼示例:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;
int main() {
    Mat srcImage;
    srcImage = imread("/Users/dwz/Desktop/cpp/b.jpg");

    Mat element;
    element = getStructuringElement(MORPH_RECT, Size(5, 5));

    Mat dstImage;
//    第一種實現方法
    morphologyEx(srcImage, dstImage, MORPH_TOPHAT, element);

    imwrite("tophat.jpg", dstImage);
    return 0;
}

輸入:

輸出: